SpringMVC--注解

淡淡的烟草味﹌ 2023-06-08 03:08 145阅读 0赞

1.@RequestMapping

 1.1 修饰类与方法

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

 1.2 请求方式

  1. @RequestMapping value --> URL
  2. (常用) method --> 请求方法
  3. (了解) params --> 请求参数
  4. (了解) heads 分别表示请求的 请求头 的映射条件

method:

  1. @RequestMapping("/springmvc")
  2. @Controller
  3. public class SpringmvcTest {
  4. private static final String SUCCESS = "success";
  5. @RequestMapping(value = "/test" ,method = RequestMethod.POST)
  6. public String test(){
  7. System.out.println("test");
  8. return SUCCESS;
  9. }
  10. }

 1.3 映射请求(了解)

  1. Ant 风格资源地址支持 3 种匹配符:
  2. ? :匹配文件名中的一个字符
  3. * :匹配文件名中的任意字符
  4. **:** 匹配多层路径

  eg:

  1. @RequestMapping("/springmvc")
  2. @Controller
  3. public class SpringmvcTest {
  4. private static final String SUCCESS = "success";
  5. @RequestMapping("t/*/t")
  6. public String test1(){
  7. return SUCCESS;
  8. }
  9. }
  10. <a href="springmvc/t/abc/t">映射请求的测试</a>

 1.4 @PathVariable(映射 URL 绑定的占位符)

  1. @RequestMapping("t1/{id}")
  2. public String test2(@PathVariable("id") Integer id){
  3. System.out.println(id);
  4. return SUCCESS;
  5. }

 1.5 HiddenHttpMethodFilter 过滤器

  1.5.1 四种基本操作

  1. (1) GET 获取资源
  2. (2) POST 新建资源
  3. (3) PUT 更新资源
  4. (4) DELETE 删除资源

  1.5.2 发送 PUT 请求和 DELETE 请求

  1. (1) 需要配置 HiddenHttpMethodFilter
  2. <filter>
  3. <filter-name>HiddenHttpMethodFilter</filter-name>
  4. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>HiddenHttpMethodFilter</filter-name>
  8. <url-pattern>/*</url-pattern>
  9. </filter-mapping>
  10. (2) 需要发送 POST 请求
  11. (3) 需要在发送 POST 请求时携带一个 name="_method" 的隐藏域, 值为 DELETE 或 PUT
  12. <form action="springmvc/testRest4/1234" method="post">
  13. <input type="hidden" name="_method" value="PUT">
  14. <input type="submit" value="TEST PUT">
  15. </form>
  16. <br><br>
  17. <form action="springmvc/testRest3/123" method="post">
  18. <input type="hidden" name="_method" value="DELETE"/>
  19. <input type="submit" value="TEST DELETE"/>
  20. </form>

  1.5.3 在 SpringMVC 的目标方法中使用 @PathVariable得到 id

  1.5.4 注意:如果PUT与DELETE请求发生405错误,在方法的类的上面加上注释*@ResponseBody*

  1.5.5 @ResponseBody表示该方法的返回结果直接写入HTTP response body中

  1. 使用@RequestMapping后,返回值通常解析为跳转路径,
  2. 加上@ResponseBody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。

 1.6 @RequestParam 映射请求参数

  1.6.1 属性

  1. (1) value 值即请求参数的参数名
  2. (2) required 该参数是否必须. 默认为 true
  3. (3) defaultValue 请求参数的默认值

  eg:

  1. @RequestMapping("/testRequestParam")
  2. public String testRequestParam(@RequestParam("name") String name,@RequestParam("id") Integer id){
  3. System.out.println(name+"<-->"+id);
  4. return SUCCESS;
  5. }
  6. <a href="springmvc/testRequestParam?name=hanhan&id=250">testRequestParam</a>

 1.7 @RequestHeader 映射请求头信息(属性同@RequestParam)(了解)

2. 使用 POJO 对象绑定请求参数值

  Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值,支持级联属性。

  eg:
   两个bean

  1. public class Person {
  2. private String name;
  3. private Integer age;
  4. private Address address;
  5. ...
  6. }
  7. public class Address {
  8. private String city;
  9. private Integer id;
  10. ...
  11. }

  jsp

  1. <form action="springmvc/testPOJO" method="post">
  2. name:<input type="text" name="name"/>
  3. <br>
  4. age:<input type="text" name="age"/>
  5. <br>
  6. city:<input type="text" name="address.city"/>
  7. <br>
  8. id:<input type="text" name="address.id"/>
  9. <br>
  10. <input type="submit" value="提交"/>
  11. </form>

  handler

  1. @RequestMapping("/testPOJO")
  2. public String testPOJO(Person person){
  3. System.out.println(person);
  4. return SUCCESS;
  5. }

3. 原生Servlet API 作为参数

API

  1. (1) HttpServletRequest (2) HttpServletResponse (3) HttpSession
  2. (4) java.security.Principal (5) Locale (6) InputStream
  3. (7) OutputStream (8) Reader (9) Writer

  eg:

  1. @RequestMapping("/testServlet")
  2. public String testHttpServletAPI(HttpServletRequest req , HttpServletResponse resp){
  3. System.out.println(req+"-----"+resp);
  4. return SUCCESS;
  5. }

4.mvc:annotation-driven

<mvc:annotation-driven /> 会自动注册
   RequestMappingHandlerMapping 、RequestMappingHandlerAdapter 与 ExceptionHandlerExceptionResolver 三个bean

 提供了以下支持:

#

  1. (1) 支持使用 ConversionService 实例对表单参数进行类型转换
  2. (2) 支持使用 @NumberFormat annotation@DateTimeFormat 注解完成数据类型的格式化
  3. (3) 支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证
  4. (4) 支持使用 @RequestBody @ResponseBody 注解

5. @InitBinder

  1. (1) @InitBinder标识的方法,可以对WebDataBinder对象进行初始化。WebDataBinderDataBinder的子类,用于完成由表单字段到JavaBean属性的绑定
  2. (2) @InitBinder方法不能有返回值,它必须声明为void
  3. (3) @InitBinder方法的参数通常是是WebDataBinder

6.数据格式化(数字类型*@NumberFormat* 与日期类型*@DateTimeFormat*)

  (1) @NumberFormat

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

  (2) @DateTimeFormat

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

发表评论

表情:
评论列表 (有 0 条评论,145人围观)

还没有评论,来说两句吧...

相关阅读