溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用springmvc配置視圖解析器和重定向

發(fā)布時間:2021-09-29 13:33:55 來源:億速云 閱讀:170 作者:小新 欄目:開發(fā)技術

小編給大家分享一下如何使用springmvc配置視圖解析器和重定向,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

springmvc配置視圖解析器和重定向

為什么需要配置視圖解析器

看圖

如何使用springmvc配置視圖解析器和重定向

配置步驟

第一步:需要在springmvc.xml配置

<!-- 配置SpringMVC的視圖解析器: 配置前綴和后綴 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<!-- 配置視圖跳轉的前綴 -->
		<property name="prefix" value="/WEB-INF/view/"/>
		<!-- 配置視圖跳轉的后綴 -->
		<property name="suffix" value=".jsp"/>
	</bean>

第二步:配置視圖解析器后的controller代碼 Controller方法返回字符串表示邏輯視圖名,通過視圖解析器解析為物理視圖地址。 此時默認的物理視圖地址為:視圖前綴+返回值+視圖后綴

	/*
	 * 方法返回ModelAndView 方式
	 * ModelAndView
	 * 	Model : 模型,數據
	 *  View :視圖
	 * 將需要共享的數據也跳轉的視圖封裝到ModelAndView對象中,方法直接返回即可
	 *  
	 *  默認只能使用請求轉發(fā)
	 */
	@RequestMapping("/method2")
	public ModelAndView method2() {
		
		ModelAndView mv = new ModelAndView();
		//共享數據
		mv.addObject("username", "莉莉");
		//設置視圖地址
		//配置視圖解析器前后綴之前
		//mv.setViewName("/WEB-INF/view/hello.jsp");
		//配置視圖解析器前后綴之后
		mv.setViewName("hello");
		
		return mv;
	}
	/*
	 * 方法返回String 字符串方式
	 * 
	 * 方法返回的字符就是要跳轉的地址
	 * 
	 * 在方法中注入一個Model 對象,在Model中共享數據
	 * 
	 * 默認使用請求轉發(fā)
	 */
	@RequestMapping("/method3")
	public String method3(Model m) {
		System.out.println(m.getClass().getName());
		//共享數據
		m.addAttribute("username", "吉姆");
		//配置視圖解析器前后綴之前
		//return "/WEB-INF/view/response.jsp";
		//配置視圖解析器前后綴之后
		return "response";
	}

解決配置視圖解析器帶來的問題

如果直接使用視圖解析器的配置開發(fā),那么必須保證視圖解析器前綴目錄下面有對應的頁面文件才能跳轉,否則報錯


默認頁面跳轉也只能使用請求轉發(fā)跳轉,不能使用重定向


需要解決問題: 除了使用視圖解析器對應規(guī)則的開發(fā),用戶還得自定義跳轉方式,和自定義跳轉頁面 方案: 使用視圖解析器的 請求轉發(fā)和重定向配置,可以打破默認的規(guī)則

public static final String REDIRECT_URL_PREFIX = "redirect:"; public static final String FORWARD_URL_PREFIX = "forward:";

	/*
	 * 
	 * 問題1:上述兩種方法默認只能進行請求轉發(fā)跳轉,如何進行重定向跳轉?
	 * 問題2: 跳轉的頁面永遠只能按照視圖解析的前后綴路徑放,如何頁面放在其他目錄下面也能跳轉
	 * 
	 * 解決方案:使用視圖解析器中自定義的頁面跳轉功能(使用這種,只適用返回String字符串的方式)
	 *  在返回的字符串前面加上前綴 
	 *  重定向
	 *  	redired:跳轉的頁面
	 *  請求轉發(fā)
	 *  	forward:要跳轉的頁面
	 *  
	 *  	
	 */
	
	//自定義請求轉發(fā)頁面(打破默認的視圖解析器前后綴規(guī)則跳轉的頁面)
	
	@RequestMapping("/method4")
	public String method4(Model m) {
		m.addAttribute("username", "韓梅梅");
		return "forward:/WEB-INF/user_list.jsp";
	}

重定向

	//自定義重定向
	@RequestMapping("/method5")
	public String method5() {
		return "redirect:http://www.jd.com";
	}

配置多個視圖解析器

springmvc

<!-- jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
        <property name="viewNames" value="*"/>
        <!-- 模板優(yōu)先級別 -->  
        <property name="order" value="1"></property>
    </bean>
    <!-- html -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/html/" />
        <property name="suffix" value=".html" />
        <property name="viewNames" value="html*"/>
        <!-- 模板優(yōu)先級別 -->  
        <property name="order" value="0"></property>
    </bean>

controller

@Controller
@Scope("prototype")
@RequestMapping("/viewResolver")
public class ViewResolverController {
    @RequestMapping("/t1")
    public String t1() {
        return "index";// webinfo/jsp/index
    }
    @RequestMapping("/t2")
    public String t2() {
        return "htmlindex";// webinfo/html/index
    }
}

看完了這篇文章,相信你對“如何使用springmvc配置視圖解析器和重定向”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI