[关闭]
@wangyupu 2020-09-01T14:30:42.000000Z 字数 3934 阅读 24

Spring MVC

ssm


Spring MVC常用注解

使用注解前应扫包并开启注解

  1. <!--自动扫描的包名,只扫描@Controller -->
  2. <context:component-scan base-package="com.hz.controller" >
  3. <!--开启注解-->
  4. <mvc:annotation-driven/>

@Controller

  1. 标注一个普通的JavaBean成为可以处理请求的控制器

@RequestMapping

  1. 通过请求URL进行映射
  1. //标识在类上
  2. @RequestMapping("/index")
  3. public class IndexController{
  4. //在方法上
  5. @RequestMapping(value="/ts",method = RequestMethod.GET)
  6. public ModelAndView index(){
  7. .....
  8. }
  9. method:
  10. RequestMethod.GET 必须以GET方式进入 @GetMapping
  11. RequestMethod.POST 必须以POST方式进入 @PostMapping
  12. params
  13. { "param1=value1" , "param2" , "!param3" }
  14. 请求参数的映射条件,指定请求的URL地址需要带那些参数

@RequestParam

  1. 参数传递
  2. public ModelAndView index(@RequestParam(value = "name1",required = false) String user_name)
  3. {
  4. .......
  5. }
  6. value:属性名,如:xxxx?name1=...
  7. required:是否必须 false为否
  8. defaultValue:默认值

@SessionAttributes

  1. 只能定义在类上,作用是将指定的Model中的键值对添加至session
  2. //类中定义user_name存入session作用域
  3. @SessionAttributes(value = {"user_name"})
  4. public class IndexController {
  5. @RequestMapping("/ts")
  6. public ModelAndView index(){
  7. ModelAndView mav = new ModelAndView("user");
  8. //存入Request作用域和Session作用域
  9. mav.addObject("user_name",user_name);
  10. ....
  11. }
  12. }
  13. @SessionAttributes(types=User.class)会将model中所有类型为 User的属性添加到会话中。
  14. @SessionAttributes(value={“user1”, user2”}) 会将model中属性名为user1user2的属性添加到会话中。
  15. @SessionAttributes(types={User.class, Dept.class}) 会将model中所有类型为 UserDept的属性添加到会话中。
  16. @SessionAttributes(value={“user1”,“user2”},types={Dept.class})会将model中属性名为user1user2以及类型为Dept的属性添加到会话中。

@ResponseBody

  1. 返回JSON数据 一般用于方法上
  2. 引入JSON依赖包
  3. <!--JSON依赖-->
  4. <dependency>
  5. <groupId>com.fasterxml.jackson.core</groupId>
  6. <artifactId>jackson-core</artifactId>
  7. <version>2.4.3</version>
  8. </dependency>
  9. <dependency>
  10. <groupId>com.fasterxml.jackson.core</groupId>
  11. <artifactId>jackson-databind</artifactId>
  12. <version>2.4.3</version>
  13. </dependency>
  14. @ResponseBody
  15. @RequestMapping("/testjson")
  16. public User jsons(@RequestParam long user_id){
  17. User user = this.userService.getUserById(user_id);
  18. return user;//直接返回对象
  19. }
  20. 对象中添加:
  21. @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
  22. 表示属性为null不返回

@RestController

  1. 标注该类中所有的方法都返回JSON 用于类中。无须在写@Controller

@ModelAttribute

  1. @RequestMapping(value="/ts1")
  2. public String index1(@ModelAttribute("user") User user)
  3. {
  4. user.setUser_name("张三");
  5. System.out.println(user.getUser_name());
  6. return "user";
  7. }

@DateTimeFormat

  1. 用户对象属性,控制入参时日期类型转换

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date user_login_endtime;

@RequestHeader

  1. 获取请求头中的参数
  2. @ResponseBody
  3. @RequestMapping(value = "/index",method = RequestMethod.POST)
  4. public User index(@RequestHeader(value = "token",defaultValue = "1",required = false) int tokenid){
  5. ......
  6. }

@JsonFormat

  1. 返回JSON数据时日期类型处理
  2. @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
  3. @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
  4. private Date user_login_endtime;

参数传递

ModelAndView

  1. 包含视图信息和模型数据信息
  2. public ModelAndView index1(){
  3. //返回页面 转发
  4. ModelAndView mav = new ModelAndView("视图名");
  5. ModelAndView mav = new ModelAndView();
  6. mav.setViewName("视图名");
  7. //存入值 Request作用域
  8. mav.addObject("键","值");
  9. return mav;
  10. }

Model

  1. Map方式进行存储,用于向作用域中存值
  2. public String index1(Model model)
  3. {
  4. model.addAttribute("user_name","张三");
  5. return "user"; //返回user.jsp页面
  6. }
  7. 注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key

Map

  1. Map方式进行存储,用于向作用域中存值
  2. public String index1(Map<String ,Object> map)
  3. {
  4. map.put("user_name","123");
  5. return "user";
  6. }

通过实体类接收参数

  1. 传入参数名必须与实体类对应,一般用于添加,修改类中多个属性时
  2. @RequestMapping(value="/ts1")
  3. public String index1(User user)
  4. {
  5. System.out.println(user.getUser_name());
  6. return "user";
  7. }

重定向与转发

  1. public String index1(User user)
  2. {
  3. .....
  4. return "redirect:/user.jsp";//重定向
  5. return "forward:页面";//转发
  6. }

REST风格

  1. @RequestMapping(value="/ts1/{user_id}.html")
  2. public String index1(@PathVariable("user_id") Long user_id)
  3. {
  4. System.out.println("id======"+user_id);
  5. return "user";
  6. }
  7. 请求路径为:.../ts1/参数.html
  8. 如:..../ts1/1.html或..../ts1/10.html

servlet方式

引入servlet-api.jar

  1. <!--servlet-api-->
  2. <dependency>
  3. <groupId>javax.servlet</groupId>
  4. <artifactId>javax.servlet-api</artifactId>
  5. <version>3.1.0</version>
  6. <scope>provided</scope>
  7. </dependency>
  8. public String cs(HttpServletRequest request, HttpServletResponse response, HttpSession session){
  9. session.setAttribute("username","123");
  10. return "user";
  11. }

Spring MVC框架特点

  1. 清晰地角色划分
  2. 灵活的配置功能
  3. 提供了大量的控制器接口和实现类
  4. 真正做到与View层的实现无关(JSPVelocityXslt等)
  5. 国际化支持
  6. 面向接口编程
  7. Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注