使用重定向,我们需要使用redirect在return中,后面跟上想要重定向的界面,同样可以传递参数,但是需要注意传入中文会出现乱码问题
我们可以使用RedirectAttributes 来解决乱码问题
public String view04(RedirectAttributes attributes) { // 设置参数 attributes.addAttribute("uname", "薛"); attributes.addAttribute("upwd", "12345");
我们还可以使用ModelAndView设置参数,但是需要注意的是,ModelAndView默认是请求转发,我们需要在其参数内设置
modelAndView.setViewName("redirect:view.jsp"); return modelAndView;
我们还可以重定向到我们对象的test请求,我们会有个controller层的类去获取这个test请求,使用@RequestMapping注解
请求转发使用forward的方法,使用方法和重定向差不多
/**
* 请求转发与重定向
*/
@Controller
public class ViewController {
/**
* 重定向到JSP页面
* @return
*/
@RequestMapping("/view01")
public String view01(Model model) {
// 设置请求域对象
model.addAttribute("name", "admin");
return "redirect:view.jsp";
}
/**
* 重定向到JSP页面
* 传递参数
* @return
*/
@RequestMapping("/view02")
public String view02(){
return "redirect:view.jsp?uname=xxy&upwd=123456";
}
/**
* 重定向到JSP页面
* 传递中文参数 (传递中文参数会出现乱码)
* @return
*/
@RequestMapping("/view03")
public String view03(){
return "redirect:view.jsp?uname=薛&upwd=123456";
}
/**
* 重定向到JSP页面
* 传递参数 (通过 RedirectAttributes 对象设置重定向的参数,避免中文乱码问题)
* @param attributes
* @return
*/
@RequestMapping("/view04")
public String view04(RedirectAttributes attributes) {
// 设置参数
attributes.addAttribute("uname", "薛");
attributes.addAttribute("upwd", "12345");
return "redirect:view.jsp";
}
/**
* 重定向到JSP页面
* 返回的是 ModelAndView 对象
* @param modelAndView
* @return
*/
@RequestMapping("/view05")
public ModelAndView view05(ModelAndView modelAndView){
modelAndView.addObject("uname","薛");
modelAndView.addObject("upwd","12345");
modelAndView.setViewName("redirect:view.jsp");
return modelAndView;
}
/**
* 重定向到Controller
* 返回 ModelAndView 对象
* @param modelAndView
* @return
*/
@RequestMapping("/view06")
public ModelAndView view06(ModelAndView modelAndView){
modelAndView.addObject("uname","薛");
modelAndView.addObject("upwd","13456");
modelAndView.setViewName("redirect:test");
return modelAndView;
}
/**
* 请求转发到JSP页面
* @return
*/
@RequestMapping("/view07")
public String view07(){
return "forward:view.jsp";
}
/**
* 请求转发到JSP页面
* 传递参数 (中文不乱码)
* @return
*/
@RequestMapping("/view08")
public String view08(){
return "forward:view.jsp?uname=张三&upwd=123";
}
/**
* 请求转发到JSP页面
* 设置请求域
* @param model
* @return
*/
@RequestMapping("/view09")
public String view09(Model model){
// 设置请求域
model.addAttribute("name","管理员");
return "forward:view.jsp?uname=张三&upwd=123";
}
/**
* 请求转发到JSP页面(默认)
* 默认会去指定的目录下查找JSP页面 (配置文件中设置的)
* @param model
* @return
*/
@RequestMapping("/view10")
public String view10(Model model){
// 设置请求域
model.addAttribute("name","管理员");
return "/../../view";
}
/**
* 请求转发到Controller
* @param modelAndView
* @return
*/
@RequestMapping("/view11")
public ModelAndView view11(ModelAndView modelAndView) {
modelAndView.setViewName("forward:test");
return modelAndView;
}
/**
* 请求转发到Controller
* 传递参数
* @param modelAndView
* @return
*/
@RequestMapping("/view12")
public ModelAndView view12(ModelAndView modelAndView) {
modelAndView.setViewName("forward:test?uname=admin&upwd=123");
return modelAndView;
}
}