SpringMVC传递参数的四种方式+跳转方式

转自师兄:@郑清

功能类:


   
   
   
   
  1. /**
  2. * 传递参数的四种方式:
  3. * 1.使用Model方式(采用!!!)
  4. * 2.通用ModelAndView方式
  5. * 3.HttpServletRequest方式(不建议使用)
  6. * 4.通过返回值传参(不建议使用)
  7. * 跳转方式: 1.重定向 2.请求转发
  8. * @author 郑清
  9. */
  10. @Controller
  11. public class Demo{
  12. /*
  13. * 1.使用Model方式(采用!!!)
  14. */
  15. @RequestMapping( "/data1")
  16. public String demo1(Model model){
  17. model.addAttribute( "data", "数据:李四"); //设置数据到前台
  18. User u = new User();
  19. u.setUsername( "张三");
  20. //添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
  21. model.addAttribute(u);
  22. return "test.jsp";
  23. }
  24. /*
  25. * 2.通用ModelAndView方式
  26. */
  27. @RequestMapping( "/data2")
  28. public ModelAndView demo2(){
  29. ModelAndView mav = new ModelAndView(); //模型和视图对象
  30. mav.addObject( "data", "数据:张三"); //设置数据到前台
  31. User u = new User();
  32. u.setUsername( "李四");
  33. //添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
  34. mav.addObject(u);
  35. //添加跳转的路径
  36. mav.setViewName( "/test.jsp");
  37. return mav;
  38. }
  39. /*
  40. * 3.HttpServletRequest方式(不建议使用)
  41. */
  42. @RequestMapping( "/data3")
  43. public void demo3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
  44. request.setAttribute( "data", "数据:hello");
  45. request.getRequestDispatcher( "test.jsp").forward(request, response);
  46. }
  47. /*
  48. * 4.通过返回值传参(不建议使用):
  49. * SpringMVC会自动创建一个ModelAndView对象,并且调用添加模型 mav.addObject("user", user);
  50. * 并且访问路径就是视图的名称 /data4 mav.setViewName("/data4");
  51. * 注意:需配置视图解析器解决:ViewResolver
  52. */
  53. @RequestMapping( "/data4")
  54. public User demo4(){
  55. User u = new User();
  56. u.setUsername( "王五");
  57. return u;
  58. }
  59. /*
  60. * 请求转发(forward):
  61. * 上面4个案例都是转发,转发的值都是放到request请求作用域,下一个页面可以取出
  62. * Url地址不会改变
  63. */
  64. @RequestMapping( "/data5")
  65. public String demo5(Model model,HttpSession session){
  66. model.addAttribute( "data", "数据:使用model传递"); //可以取出数据
  67. User u = new User();
  68. u.setUsername( "张三");
  69. model.addAttribute(u);
  70. session.setAttribute( "s", u); //可以取出数据
  71. //return "/test.jsp";//返回路径
  72. return "forward:/test.jsp"; //-->相当于手动指定了跳转的路径
  73. }
  74. /*
  75. * 重定向(redirect):
  76. * 重定向就是发出一个全新的请求,
  77. * 如果把值放到request请求,下一个页面不能取出
  78. * 如果把值放到session会话请求,下一个页面可以取出
  79. * url地址会改变
  80. */
  81. @RequestMapping( "/data6")
  82. public String demo6(Model model,HttpSession session){
  83. // model.addAttribute("data","张三");//不可以取出数据
  84. session.setAttribute( "s", "张三session"); //可以取出数据
  85. return "redirect:/test.jsp";
  86. }
  87. }

SpringMVC配置视图解析器:
        会自动添加到返回的路径中,针对requestMapping中的路径不会添加
        SpringMVC默认:InternalResourceViewResolver : 支持默认视图,采用forward,redirect。
        视图名规则:不写前缀默认为"转发" 
                视图名字符串前缀:
              forward:/xxx.jsp ->采用转发
              redirect:/xxx.jsp  ->采用重定向

        设置视图路径的前后缀,该配置可以让我们写视图路径的时候更简单!!!


   
   
   
   
  1. class= "org.springframework.web.servlet.view.InternalResourceViewResolver">
  2. <property name="prefix" value="/WEB-INF/jsps/" />
  3. <property name="suffix" value=".jsp" />
  4. bean>

User类:


   
   
   
   
  1. public class User {
  2. private String username;
  3. private String password;
  4. private Date date;
  5. @JsonFormat(pattern= "yyyy-MM-dd",timezone= "GMT+8") //日期格式化注解
  6. public Date getDate() {
  7. return date;
  8. }
  9. @DateTimeFormat(pattern= "yyyy-MM-dd")
  10. public void setDate(Date date) {
  11. this.date = date;
  12. }
  13. public String getUsername() {
  14. return username;
  15. }
  16. public void setUsername(String username) {
  17. this.username = username;
  18. }
  19. public String getPassword() {
  20. return password;
  21. }
  22. public void setPassword(String password) {
  23. this.password = password;
  24. }
  25. @Override
  26. public String toString() {
  27. return "User [username=" + username + ", password=" + password + ", date=" + date + "]";
  28. }
  29. }

test.jsp页面:


   
   
   
   
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding= "UTF-8"%>
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Insert title here title>
  7. head>
  8. <body>
  9. ${requestScope.data } <br/>
  10. 获取添加的默认对象中的username的值:${requestScope.user.username } <br/>
  11. 获取session中user对象的username的值:${sessionScope.s.username }
  12. body>
  13. html>

 

你可能感兴趣的:(框架/第三方工具)