Model
以Map方式进行存储,用于向作用域中存值。
注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key
@Controller //控制器类
public class IndexController {@RequestMapping("/index3")public String index3(SmbmsUser smbmsUser, Model model){model.addAttribute("smbmsUser",smbmsUser);return "/demo03.jsp";//并返回 "/demo03.jsp" 作为视图名称。}
}
Map
以Map方式进行存储,用于向作用域中存值。
@Controller //控制器类
public class IndexController {@RequestMapping("/index4")public String index4(SmbmsUser smbmsUser, Map<String,Object> map){map.put("smbmsUser",smbmsUser);return "/demo03.jsp";//并返回 "/demo03.jsp" 作为视图名称。}
}
@ModelAttribute
用于将请求参数绑定到模型对象上。
@Controller
@RequestMapping("/user")
public class DemoController {@RequestMapping("/demo")public String demo(@ModelAttribute("smbmsUser") SmbmsUser smbmsUser){System.out.println(smbmsUser);return "/demo03.jsp";}
}
@SessionAttributes
只能定义在类上,作用是将指定的Model中的键值对添加至session中。
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
<html><head><title>Title</title></head><body>${requestScope.smbmsUser}=======${sessionScope.smbmsUser}</body>
</html>
@Controller
@RequestMapping("/user")
@SessionAttributes("smbmsUser")//session作用域
public class DemoController {@RequestMapping("/demo02")public String demo02( SmbmsUser smbmsUser){ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("smbmsUser",smbmsUser);//request作用域System.out.println(smbmsUser);return "/demo04.jsp";}
}
servlet方式
引入servlet-api.jar
<!--servlet-api-->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope>
</dependency
@Controller
@RequestMapping("/user")
public class DemoController {@RequestMapping("/demo04")public String demo04(SmbmsUser smbmsUser,HttpServletRequest request,HttpSession session){System.out.println(smbmsUser.toString());session.setAttribute("smbmsUser",smbmsUser);request.setAttribute("smbmsUser",smbmsUser);return "/demo04.jsp";}
}
转发与重定向
return "redirect:/user.jsp";//重定向
return "forward:页面";//转发
@ResponseBody
用于将控制器方法的返回值直接写入 HTTP 响应体中,而不是解析为视图名称。
对象中添加:
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)表示属性为null不返回。
@Controller
@RequestMapping("/user")
public class DemoController {@ResponseBody@RequestMapping("/demo05")public ResultJSON demo05(){Bill bill = new Bill();bill.setId(1111);bill.setBillCode("abccc");bill.setProductDesc("aaaaaa");return ResultJSON.success(bill);}
}
HTTP响应体
HTTP 响应体(HTTP Response Body)是 HTTP 响应消息的一部分,用于携带从服务器返回给客户端的数据。
HTTP 响应由三个部分组成:
状态行(Status Line):包含 HTTP 版本、状态码和状态描述。
响应头(Response Headers):包含关于响应的元数据,如内容类型、内容长度、缓存控制等。
响应体(Response Body):实际的数据内容,可以是 HTML、JSON、XML、文本等。
视图解析
在传统的 MVC 框架中,控制器方法的返回值通常是一个视图名称(例如,一个 JSP 文件名)。Spring MVC 会根据这个视图名称找到对应的视图模板,并将模型数据渲染到该视图中,最终生成 HTML 页面并返回给客户端。
@RestController
标注该类中所有的方法都返回JSON 用于类中。无须在写@Controller。
@DateTimeFormat
用户对象属性,控制入参时日期类型转换。