转自师兄:@郑清
功能类:
- /**
- * 传递参数的四种方式:
- * 1.使用Model方式(采用!!!)
- * 2.通用ModelAndView方式
- * 3.HttpServletRequest方式(不建议使用)
- * 4.通过返回值传参(不建议使用)
- * 跳转方式: 1.重定向 2.请求转发
- * @author 郑清
- */
- @Controller
- public class Demo{
- /*
- * 1.使用Model方式(采用!!!)
- */
- @RequestMapping("/data1")
- public String demo1(Model model){
- model.addAttribute("data","数据:李四");//设置数据到前台
- User u = new User();
- u.setUsername("张三");
- //添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
- model.addAttribute(u);
- return "test.jsp";
- }
- /*
- * 2.通用ModelAndView方式
- */
- @RequestMapping("/data2")
- public ModelAndView demo2(){
- ModelAndView mav = new ModelAndView();//模型和视图对象
- mav.addObject("data","数据:张三");//设置数据到前台
- User u = new User();
- u.setUsername("李四");
- //添加模型数据,key的值为对象的类型首字母小写 ex:User-->user
- mav.addObject(u);
- //添加跳转的路径
- mav.setViewName("/test.jsp");
- return mav;
- }
- /*
- * 3.HttpServletRequest方式(不建议使用)
- */
- @RequestMapping("/data3")
- public void demo3(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
- request.setAttribute("data", "数据:hello");
- request.getRequestDispatcher("test.jsp").forward(request, response);
- }
- /*
- * 4.通过返回值传参(不建议使用):
- * SpringMVC会自动创建一个ModelAndView对象,并且调用添加模型 mav.addObject("user", user);
- * 并且访问路径就是视图的名称 /data4 mav.setViewName("/data4");
- * 注意:需配置视图解析器解决:ViewResolver
- */
- @RequestMapping("/data4")
- public User demo4(){
- User u = new User();
- u.setUsername("王五");
- return u;
- }
- /*
- * 请求转发(forward):
- * 上面4个案例都是转发,转发的值都是放到request请求作用域,下一个页面可以取出
- * Url地址不会改变
- */
- @RequestMapping("/data5")
- public String demo5(Model model,HttpSession session){
- model.addAttribute("data", "数据:使用model传递");//可以取出数据
-
- User u = new User();
- u.setUsername("张三");
- model.addAttribute(u);
-
- session.setAttribute("s", u);//可以取出数据
-
- //return "/test.jsp";//返回路径
- return "forward:/test.jsp";//-->相当于手动指定了跳转的路径
- }
- /*
- * 重定向(redirect):
- * 重定向就是发出一个全新的请求,
- * 如果把值放到request请求,下一个页面不能取出
- * 如果把值放到session会话请求,下一个页面可以取出
- * url地址会改变
- */
- @RequestMapping("/data6")
- public String demo6(Model model,HttpSession session){
- // model.addAttribute("data","张三");//不可以取出数据
- session.setAttribute("s", "张三session");//可以取出数据
- return "redirect:/test.jsp";
- }
- }
SpringMVC配置视图解析器:
会自动添加到返回的路径中,针对requestMapping中的路径不会添加
SpringMVC默认:InternalResourceViewResolver : 支持默认视图,采用forward,redirect。
视图名规则:不写前缀默认为"转发"
视图名字符串前缀:
forward:/xxx.jsp ->采用转发
redirect:/xxx.jsp ->采用重定向
设置视图路径的前后缀,该配置可以让我们写视图路径的时候更简单!!!
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsps/" />
- <property name="suffix" value=".jsp" />
- </bean>
User类:
- public class User {
- private String username;
- private String password;
- private Date date;
-
- @JsonFormat(pattern="yyyy-MM-dd",timezone="GMT+8") //日期格式化注解
- public Date getDate() {
- return date;
- }
- @DateTimeFormat(pattern="yyyy-MM-dd")
- public void setDate(Date date) {
- this.date = date;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public String toString() {
- return "User [username=" + username + ", password=" + password + ", date=" + date + "]";
- }
- }
test.jsp页面:
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- ${requestScope.data }<br/>
- 获取添加的默认对象中的username的值:${requestScope.user.username }<br/>
- 获取session中user对象的username的值:${sessionScope.s.username }
- </body>
- </html>