##重定向
package com.shsxt.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
/**
* 请求转发 和重定向
* SppringMvc萌蘖不采用的是请求转发
* <p>
* <p>
* 重定向
* 以redirect:开头
* 可以重定向到视图或 HAndler(方法)
* <p>
* 请求转发
* 以forward:开头
*
*
* 重定向是发一个302的状态码给浏览器,浏览器自己去请求添砖的网页,地址栏会发生改变
*/
@Controller
public class ViewController {
/**
* 重定向到试图
*
* @return
*/
@RequestMapping("view01")
public ModelAndView view01() {
ModelAndView modelAndView = new ModelAndView();
//设置重定向的地址
modelAndView.setViewName("redirect:view.jsp");
return modelAndView;
}
/**
* 重定向到方法
* 返回的是modelAndView
*
* @return
*/
@RequestMapping("view02")
public ModelAndView view02() {
ModelAndView modelAndView = new ModelAndView();
//设置重定向的地址
modelAndView.setViewName("redirect:hello");//hello是我定义的一个方法 控制器中的方法路径
return modelAndView;
}
/**
* 重定向到视图
* 返回视图名称(字符串)
*/
@RequestMapping("/view03")
public String view03() {
return "redirect:view.jsp";
}
/**
* 重定向到视图
* 传递参数
* 返回视图名称(字符串)
* @return
*/
@RequestMapping(value = "/view04")
public String view04() {
return "redirect:view.jsp?name=zhansan&pwd=123";
}
/**
* 重定向到视图
* 传递参数中文参数(乱码) ,需要使用RedirectAttributes对象设置参数
* 返回视图名称(字符串)
* @return
*/
@RequestMapping(value = "/view05")
public String view05(RedirectAttributes redirectAttributes) {
//设置参数
redirectAttributes.addAttribute("name","张三");
redirectAttributes.addAttribute("pwd","123");
return "redirect:view.jsp";
//return "redirect:view.jsp?name=zhansan&pwd=123";
}
/**
* 重定向到handler
* 返回视图名称(字符串)
* @return
*/
@RequestMapping("view06")
public String view06(){
return "redirect:hello";
}
}
##转发
package com.shsxt.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 请求转发 和重定向
* SppringMvc内部采用的是请求转发
* <p>
* <p>
* 重定向
* 以redirect:开头
* 可以重定向到视图或 HAndler(方法)
* 地址栏会发生改变
* <p>
* 请求转发
* 以forward:开头
* 地址栏不会发生改变
* 可以获取域中的数据
* <p>
* <p>
* 重定向是发一个302的状态码给浏览器,浏览器自己去请求添砖的网页,地址栏会发生改变
*/
@Controller
public class ViewController {
/**
* 重定向到试图
*/
@RequestMapping("view01")
public ModelAndView view01() {
ModelAndView modelAndView = new ModelAndView();
//设置重定向的地址
modelAndView.setViewName("redirect:view.jsp");
modelAndView.addObject("msg", "重定向的域对象");
return modelAndView;
}
/**
* 重定向到方法
* 返回的是modelAndView
*
* @return
*/
@RequestMapping("view02")
public ModelAndView view02() {
ModelAndView modelAndView = new ModelAndView();
//设置重定向的地址
modelAndView.setViewName("redirect:hello");//hello是我定义的一个方法 控制器中的方法路径
return modelAndView;
}
/**
* 重定向到视图
* 返回视图名称(字符串)
*/
@RequestMapping("/view03")
public String view03() {
return "redirect:view.jsp";
}
/**
* 重定向到视图
* 传递参数
* 返回视图名称(字符串)
*
* @return
*/
@RequestMapping(value = "/view04")
public String view04() {
return "redirect:view.jsp?name=zhansan&pwd=123";
}
/**
* 重定向到视图
* 传递参数中文参数(乱码) ,需要使用RedirectAttributes对象设置参数
* 返回视图名称(字符串)
*
* @return
*/
@RequestMapping(value = "/view05")
public String view05(RedirectAttributes redirectAttributes) {
//设置参数
redirectAttributes.addAttribute("name", "张三");
redirectAttributes.addAttribute("pwd", "123");
return "redirect:view.jsp";
//return "redirect:view.jsp?name=zhansan&pwd=123";
}
/**
* 重定向到handler
* 返回视图名称(字符串)
*
* @return
*/
@RequestMapping("view06")
public String view06() {
return "redirect:hello";
}
/**
* 请求转发到页面
* 返回的也是modelAndView
*
* @return
*/
@RequestMapping("view07")
public ModelAndView view07() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("forward:view.jsp");
return modelAndView;
}
/**
* 请求转发到Handler
* 返回的也是modelAndView
*
* @return
*/
@RequestMapping("view08")
public ModelAndView view08() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("forward:hello");
return modelAndView;
}
/**
* 请求转发到视图
*
* 返回视图名称
* @return
*/
@RequestMapping("view09")
public String view09() {
return "forward:view.jsp";
}
/**
* 请求转发到Handler
* 返回视图名称
*
* 返回视图名称
* @return
*/
@RequestMapping("view10")
public String view10() {
return "forward:hello";
}
/**
* 默认请求转发访问
* 试图存放在springmvc配置文件中设置的目录(视图解析器设置的前缀)
* @return
*/
@RequestMapping("view11")
public String view11(HttpServletRequest request) {
//设置请求域
request.setAttribute("msg","hello");
return "hello";
}
/**
*
* @param request
* @return
*/
@RequestMapping("view12")
public String view12(HttpServletRequest request) {
//设置请求域
request.setAttribute("msg","hello");
return "../../view";
}
}