SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径
@RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类
1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求;
2)在控制的类定义以及方法定义处都可以使用@RequestMapping标注
---类定义:提供初步的请求映射信息,相对于WEB应用的根目录。
---方法 :提供进一步的细分映射信息,相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。
3)DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。
示例:基于上一篇文章中搭建的demo project上修改HelloWord.java类。
package com.dx.springlearn.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("class_requestmapping") public class HelloWord { private static String SUCCESS = "success"; @RequestMapping("/hello") public String hello() { System.out.println("hello word..."); return SUCCESS; } }
此时,index.jsp中链接路径编辑为:
<a href="class_requestmapping/hello">hello action</a>
@RequestMapping指定方法的请求方式:
1)@ReuqestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求。
2)@RequestMapping的value、method、params及heads分别表示请求URL、请求方法、请求参数及请求头的映射条件,他们之间的关系是与的关系,联合使用多个条件可让请求映射更加精确化。
3)params和headers支持简单的表达式:
--- param1:表示请求必须包含名为param1的请求参数
--- !param1:表示请求不能包含名为param1的请求参数
--- param1 != value1:表示请求包含名为param1的请求参数,但其值不能为value1
--- {"param1=value1","param2"}:请求必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1
在HelloWord.java中添加testMethod方法:
package com.dx.springlearn.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("class_requestmapping") public class HelloWord { private static String SUCCESS = "success"; @RequestMapping(value = "/testMethod", method = RequestMethod.POST) public String testMethod() { System.out.println("test method"); return SUCCESS; } @RequestMapping("/hello") public String hello() { System.out.println("hello word..."); return SUCCESS; } }
在index.jsp中指定请求testMethod方法的html脚本:
<form id="form_testMethod" name="form_testMethod" method="POST" action="class_requestmapping/testMethod"> <button name="submit" id="submit">test method</button> </form>
@RequestMapping指定请求参数和请求头
在HelloWord.java中添加testParamsAndHeaders方法:
package com.dx.springlearn.handlers; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping("class_requestmapping") public class HelloWord { private static String SUCCESS = "success"; @RequestMapping(value="/testParamsAndHeaders",params={"username","password!=23456"},headers={"Accept-Language=zh-CN,zh;q=0.8"}) public String testParamsAndHeaders() { System.out.println("test params and headers"); return SUCCESS; } @RequestMapping(value = "/testMethod", method = RequestMethod.POST) public String testMethod() { System.out.println("test method"); return SUCCESS; } @RequestMapping("/hello") public String hello() { System.out.println("hello word..."); return SUCCESS; } }
修改index.jsp,添加请求链接:
<a href="class_requestmapping/testParamsAndHeaders?username=abc&password=12345">testParamsAndHeaders</a>
@RequestMapping支持Ant路径方式:
1)Ant风格资源地址支持3种匹配符:
--- ?:匹配文件名中的一个字符;
--- * :匹配文件名中的任何个字符;
--- **:匹配多层路径
2)Ant风格示例:
--- /user/*/createuser:配置/user/aaa/createuser、user/bb/createuser等URL
--- /user/**/createuser:匹配/user/createuser、/user/abc/ab/createuser等URL
--- /user/createuser??:配置/user/createuseraa、/user/createuserbc等URL
测试方法:
@RequestMapping("/testAnt/*/createuser") public String testAnt(){ System.out.println("test ant"); return SUCCESS; }
index.jsp支持的链接方式:
http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oiasdkj/createuser
http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oxd/createuser
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。