博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC系列(二): SpringMVC各个注解的使用
阅读量:7048 次
发布时间:2019-06-28

本文共 8048 字,大约阅读时间需要 26 分钟。

1、@RequestMapping

1.@RequestMapping除了能修饰方法,还能修饰类

(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录
(2)修饰方法:提供进一步的细分映射信息
相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录

2.@RequestMapping的请求方式

@RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条
件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

3.Ant 风格资源地址支持 3 种匹配符:

– ?:匹配文件名中的一个字符
– *:匹配文件名中的任意字符
– **:** 匹配多层路径
• @RequestMapping 还支持 Ant 风格的 URL:
– /user/*/createUser: 匹配
/user/aaa/createUser、/user/bbb/createUser 等 URL
– /user/**/createUser: 匹配
/user/createUser、/user/aaa/bbb/createUser 等 URL
– /user/createUser??: 匹配
/user/createUseraa、/user/createUserbb 等 URL

1 package com.study.springmvc.handlers; 2  3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestMethod; 6  7 @RequestMapping("/requestMappingTest") 8 @Controller 9 public class RequestMappingTest {10 11     public static final String SUCCESS="success";12     /**13      * 1.@RequestMapping除了能修饰方法,还能修饰类14      *(1)修饰类:提供初步的请求映射信息,相对于web请求的根目录15      *(2)修饰方法:提供进一步的细分映射信息16      * 相对于类定义处的URL,若类定义处未标注@RequestMapping,则方法处标记的URL相对于web应用的根目录17      * @return 成功18      */19     @RequestMapping("/testRequestMapping")20     public String testRequestMapping() {21         System.out.println("testRequestMapping");22         return SUCCESS;23     }24     25     /**26      * 2.@RequestMapping的请求方式27        @RequestMapping 的 value、method、params 及 heads 分别表示请求 URL、请求方法、请求参数及请求头的映射条28          件,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。29      * @return30      */31     @RequestMapping(value="/testMethod",method=RequestMethod.POST)32     public String testMethod() {33         System.out.println("testMethod的post方式");34         return SUCCESS;35     } 36     37     /**38      * 3.了解: 可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.39      * 40      * @return41      */42     @RequestMapping(value = "testParamsAndHeaders", params = { "username",43             "age!=10" }, headers = { "Accept-Language=zh-CN,zh;q=0.8" })44     public String testParamsAndHeaders() {45         System.out.println("testParamsAndHeaders");46         return SUCCESS;47     }48     /**49      * 4.Ant 风格资源地址支持 3 种匹配符:50      *    – ?:匹配文件名中的一个字符51      *    – *:匹配文件名中的任意字符52      *    – **:** 匹配多层路径53      * @return54      */55     @RequestMapping("/testAntPath/*/abc")56     public String testAntPath() {57         System.out.println("testAntPath");58         return SUCCESS;59     }60 }
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3      4  5  6  7 
8 Hello World 9 10
11 @RequestMapping修饰类和方法12 13
14
15
16
17 18
19 testParamsAndHeaders20 21
22 testAntPath23 24 25 26

2、@PathVariable

@PathVariable 映射 URL 绑定的占位符

• 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义

• 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的入参中。

1 package com.study.springmvc.handlers; 2  3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.PathVariable; 5 import org.springframework.web.bind.annotation.RequestMapping; 6  7 @RequestMapping("/pathVariableTest") 8 @Controller 9 public class PathVariableTest {10 11     public static final String SUCCESS="success";12     13     /**14      * @PathVariable 可以来映射 URL 中的占位符到目标方法的参数中.15      * @param id16      * @return17      */18     @RequestMapping("/testPathVariable/{id}")19     public String testPathVariable(@PathVariable("id") Integer id) {20         System.out.println("testPathVariable: " + id);21         return SUCCESS;22     }23 }

 3、@RequestParam 

@RequestParam 来映射请求参数

value 值即请求参数的参数名

required 该参数是否必须. 默认为 true
defaultValue 请求参数的默认值

index.jsp代码

handlers代码

1 package com.study.springmvc.handlers; 2  3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 import org.springframework.web.bind.annotation.RequestParam; 6  7 @RequestMapping("/requestParamTest") 8 @Controller 9 public class RequestParamTest {10 11     public static final String SUCCESS="success";12     13 14     /**15      * @RequestParam 来映射请求参数. 16      * value 值即请求参数的参数名 17      * required 该参数是否必须. 默认为 true18      * defaultValue 请求参数的默认值19      */20     @RequestMapping(value = "/testRequestParam")21     public String testRequestParam(22             @RequestParam(value = "username") String username,23             @RequestParam(value = "age", required = false, defaultValue = "0") int age) {24         System.out.println("testRequestParam, username: " + username + ", age: "25                 + age);26         return SUCCESS;27     }28 }

4. @RequestHeader

映射请求头信息 用法同 @RequestParam,使用机会较少了解就行

index.jsp代码

handlers代码

1 package com.study.springmvc.handlers; 2  3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestHeader; 5 import org.springframework.web.bind.annotation.RequestMapping; 6  7 @RequestMapping("/requestHeaderTest") 8 @Controller 9 public class RequestHeaderTest {10 11     public static final String SUCCESS="success";12     13     /**14      * 使用机会较少了解就行15      * 映射请求头信息 用法同 @RequestParam16      */17     @RequestMapping("/testRequestHeader")18     public String testRequestHeader(19             @RequestHeader(value = "Accept-Language") String al) {20         System.out.println("testRequestHeader, Accept-Language: " + al);21         return SUCCESS;22     }23 }

5. @CookieValue

映射一个 Cookie 值. 属性同 @RequestParam,使用机会较少了解就行

index.jsp代码

handlers代码

1 package com.study.springmvc.handlers; 2  3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.CookieValue; 5 import org.springframework.web.bind.annotation.RequestMapping; 6  7 @RequestMapping("/cookieValueTest") 8 @Controller 9 public class CookieValueTest {10 11     public static final String SUCCESS="success";12     13     /**14      * 使用机会较少了解就行15      * 16      * @CookieValue: 映射一个 Cookie 值. 属性同 @RequestParam17      */18     @RequestMapping("/testCookieValue")19     public String testCookieValue(@CookieValue(value = "JSESSIONID") String sessionId) {20         System.out.println("testCookieValue: sessionId: " + sessionId);21         return SUCCESS;22     }23 }

 6. @InitBinder

• 由 @InitBinder 标识的方法,可以对 WebDataBinder 对象进行初始化。WebDataBinder 是 DataBinder 的子类,用于完成由表单字段到 JavaBean 属性的绑定

• @InitBinder方法不能有返回值,它必须声明为void。
• @InitBinder方法的参数通常是是 WebDataBinder

1     @InitBinder2     public void initBinder(WebDataBinder binder){3         binder.setDisallowedFields("lastName");4     }

7. @DateTimeFormat

对界面提交过来的日期进行格式化

@DateTimeFormat 注解可对java.util.Date、java.util.Calendar、java.long.Long 时间类型进行标注:

– pattern 属性:类型为字符串。指定解析/格式化字段数据的模式,如:”yyyy-MM-dd hh:mm:ss”
– iso 属性:类型为 DateTimeFormat.ISO。指定解析/格式化字段数据的ISO模式,包括四种:ISO.NONE(不使用) -- 默认、ISO.DATE(yyyy-MM-dd)、ISO.TIME(hh:mm:ss.SSSZ)、ISO.DATE_TIME(yyyy-MM-dd hh:mm:ss.SSSZ)
– style 属性:字符串类型。通过样式指定日期时间的格式,由两位字符组成,第一位表示日期的格式,第二位表示时间的格式:S:短日期/时间格式、M:中日期/时间格式、L:长日期/时间格式、F:完整日期/时间格式、-:忽略日期或时间格式

1 @DateTimeFormat(pattern="yyyy-MM-dd")2     private Date birth;

 

备注:必须在springmvc.xml里面配置<mvc:annotation-driven/>,因为配置了以后才会默认实例化数据集类型转换和格式化的工厂类FormattingConversionServiceFactroyBean,如果自定义了类型转换器则需要这样配置

1 
2 3
4
6
7
8
9
10
11

 

8. @NumberFormat

对界面提交过来的数值进行格式化

@NumberFormat 可对类似数字类型的属性进行标注,它拥有两个互斥的属性:

– style:类型为 NumberFormat.Style。用于指定样式类型,包括三种:Style.NUMBER(正常数字类型)、Style.CURRENCY(货币类型)、 Style.PERCENT(百分数类型)
– pattern:类型为 String,自定义样式,如patter="#,###"

1 @NumberFormat(pattern="#,###,###.#")2     private Float salary;

 备注:必须在springmvc.xml里面配置<mvc:annotation-driven/>,因为配置了以后才会默认实例化数据集类型转换和格式化的工厂类FormattingConversionServiceFactroyBean,如果自定义了类型转换器则需要和@NumberFormat 一样配置

 

转载地址:http://rxzol.baihongyu.com/

你可能感兴趣的文章
如何打开MDI子窗口时,不显示窗口由小变大的过程
查看>>
MongoDB(三):创建、更新及删除文档
查看>>
Maven项目部署问题
查看>>
关于百度坐标系 (BD-09)与火星坐标系 (GCJ-02)以及WGS84坐标之间的互相转换
查看>>
I'm BACK NOW
查看>>
oracle管理之ASM
查看>>
BGP MPLS ×××
查看>>
zabbix 之邮件报警(msmtp+mutt)
查看>>
web前端开发中浏览器兼容问题(一)
查看>>
恢复博客
查看>>
怎么设计用户错误提示
查看>>
JQuery——实现Ajax应用
查看>>
zookeeper 集群安装(单点与分布式成功安装)
查看>>
jslint Unsafe character
查看>>
C++继承、多态总结
查看>>
Aspose.Words V17.4.0发布,3月更新重点锦集 | 附下载
查看>>
yii使用表单–创建动作
查看>>
黑马程序员——面向对象篇之继承
查看>>
Firefox 中更有效的整合 Tor 的方法
查看>>
MDT 2013 从入门到精通之LTI rules
查看>>