Spring MVC的跳轉方式

首先,處理器的實現和url映射,均使用註解方式。

package com.duxd.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

// 該註解標識了這個類是個Controller,也可用實現Controller接口來獲得相同效果
@Controller
public class HelloController {
	// 該註解可將url映射到下面的方法
	@RequestMapping("/Hello")


視圖解析器和註解掃描的配置

<!-- 配置視圖解析器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	    <!-- 結果視圖的前綴 -->
	    <property name="prefix" value="/WEB-INF/jsp/"/>
	    <!-- 結果視圖的後綴 -->
	    <property name="suffix" value=".jsp"/>
	</bean>
	
	<!-- 掃描該包下的註解 -->
	<context:component-scan base-package="com.duxd.controller" />


一.通過設置視圖解析器和ModelAndView對象

@RequestMapping("/Hello")
	public ModelAndView Hello(HttpServletRequest req, HttpServletResponse resp) {
		// 重定向,視圖解析器的路徑設置無效
		// ModelAndView mv = new ModelAndView("redirect:/Index.jsp");
		// 轉發,視圖解析器的路徑設置無效
		// ModelAndView mv = new ModelAndView("forward:/Index.jsp");
		// 也是轉發,視圖解析器的路徑設置有效
		ModelAndView mv = new ModelAndView();
		// 封裝要顯示到視圖的數據
		mv.addObject("msg", "Hello Spring MVC Annotation!");
		// 視圖名(根據視圖解析器的設置,尋找WEB-INF/jsp/Hello.jsp,而不是尋找根目錄下的Hello.jsp)
		mv.setViewName("Hello");
		return mv;
	}


二.通過Servlet API轉發和重定向,視圖解析器不干擾路徑

@RequestMapping("/Hello1")
	public void Hello1(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
		// resp.getWriter().print("Hello Spring MVC use HttpServlet API!");
		// PrintWriter out = resp.getWriter();
		// out.print("Hello Spring MVC use HttpServlet API!");
		// 實現重定向
		resp.sendRedirect("Index.jsp");
		// 實現轉發
		// req.getRequestDispatcher("Index.jsp").forward(req, resp);
	}


三.通過Spring MVC轉發或重定向,視圖解析器干擾路徑

@RequestMapping("/Hello2")
	public String Hello2() {
		// 轉發
		// return "Index.jsp";
		// 等同於return "forward:Index.jsp"
		// 重定向
		return "redirect:Index.jsp";
	}


四.通過Spring MVC轉發,使用視圖解析器

@RequestMapping("/Hello3")
	public String Hello3() {
		// 轉發,視圖解析器的路徑設置有效
		return "Index";
		// 沒有重定向或者說視圖解析器的路徑無效
	}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章