springmvc的请求转发和重定向使用 (ModelAndView)

 

package com.itheima.web.controller;

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

@Controller("forwardRedirectController")
@RequestMapping("/springmvc")
public class ForwardRedirectController {

	/**
	 * 测试springmvc的请求转发
	 *
	 */
	@RequestMapping("/testForward")
	public String testForward() {
		//return "success";	逻辑视图名称
		return "forward:/WEB-INF/pages/success.jsp";//写的是物理视图地址
	}
	
	
	/**
	 * 测试springmvc的重定向
	 *
	 */
	@RequestMapping("/testRedirect")
	public String testRedirect() {
		return "redirect:testForward";//写的是物理视图地址
	}
}

 springmvc请求转发和重定向controller类

 

package com.itheima.web.controller;

import java.util.ArrayList;
import java.util.List;

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("responseController")
@RequestMapping("/springmvc")
public class ResponseController {
	
	/**
	 * 测试返回字符串类型
	 * 返回的字符串:
	 * 		指的是逻辑结果的视图名称
	 * 		springmvc会以此返回值作为前缀,前往视图解析器配置中指定的位置查找jsp
	 *
	 */
	@RequestMapping("/testReturnString")
	public String testReturnString() {
		return "success";
	}	
	
	
	/**
	 * 没有返回值
	 * 当我们的方法返回是void时,springmvc会把方法名作为前缀前往指定的位置查找jsp
	 *
	 *但返回值为void的时候,可以在方法添加两个参数,分别是request和response
	 *通过这两个参数,可以进行跳转和重定向前往jsp
	 *
	 *跳转和重定向也可以是controller里面的方法
	 */
	@RequestMapping("/testReturnVoid")
	public void testReturnVoid(HttpServletRequest request,HttpServletResponse response) throws Exception {
		System.out.println("testReturnVoid方法执行");
		
		request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);
		response.sendRedirect(request.getContextPath() + "/redirectview.jsp");
		
		request.getRequestDispatcher("testReturnString").forward(request, response);
		
		response.sendRedirect("testReturnString");
	
	}

	@RequestMapping("/testReturnModelAndView")
	public ModelAndView testReturnModelAndView() {
		//1.获取ModelAndView对象
		ModelAndView mv = new ModelAndView();
		//2.设置响应的内容(model的数据),model的数据可以是一个对象,也可以是一个集合
		Listlist = new ArrayList();
		list.add("test1");
		list.add("test2");
		list.add("test3");
		
        mv.addObject("list",list);
		//3.设置响应的逻辑视图名称
        mv.setViewName("error");
		return mv;
    }
}

controller方法有返回值和没有返回值(可以使用servletAPI进行请求转发和重定向)

 



		
		
		
		
		
			
			
		
		
		
		
		
		
		
		
		

springmvc.xml配置文件

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




响应的结果视图



	
	测试返回字符串

	
	测试void
	
	
	返回ModelAndView
	
	
	返回springmvc的请求转发
	
	
	返回springmvc的重定向


 index.jsp测试页面

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


通过重定向前往的jsp

redirectview.jsp重定向页面

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




成功页面


执行成功


success.jsp成功页面

你可能感兴趣的:(Spingmvc)