springmvc项目二RequestMapping注解
来源:互联网 发布:免费流量软件 移动 编辑:程序博客网 时间:2024/05/29 05:02
1,新建一个web项目,按照【springmvc项目一】的方式搭建好即可。本项目讲解关于springmvc的@RequestMapping注解。
2,在新项目的WEB-INF的文件夹中新建一个views的文件夹,然后在views中新建一个success.jsp文件。
在工程目录下(eclipse默认为WebContent)新建一个index.jsp。当前的两个jsp文件暂时没有其它内容,后面的操作中将逐一添加需要的代码。
3,新建一个TestRequestMapping的java类(我们将不断的往该类中添加新的测试方法)。
添加一个testRM()的测试方法。类和方法的代码如下。
在WEB-INF目录下新建一个index.jsp文件(后面所有添加的链接或者提交都在该页面中,相应的也会对应类的方法,我们将成对的讲述)。
代码中可以看出,@RequestMapping可以注解类,也可以注解方法。
其注解的意思表示可以通关过类似http://127.0.0.1:8080/web/testRequestMapping/testRM的链接来访问该类的该方法。
其对应的jsp代码如下,也就是运行本项目,点击该链接就可以调用到testRM()方法。
注意:如果类上没有给与@RequestMapping注解,那么访问是直接跟方法的注解地址即可。
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/testRequestMapping")public class TestRequestMapping {@RequestMapping("/testRM")public String testRM(){System.out.println("testRM()...");return "success";}}
<a href="testRequestMapping/testRM">test R M</a>
4,@RequestMapping注解的value和method属性。相关的java代码和jsp代码如下。
value属性是和上面一样表示映射的地址,只是如果不用其它的属性value可以省略不写。
method属性的表示,只接受什么类型的请求。
如下面的案例所示一个get的请求,一个post请求,而注解的方法只接受post的请求。所以当点击get请求的时候,会反馈给页面一个405的请求。
关于method的其它请求,我们在REST风格的项目中在行讲述。
<span style="white-space:pre"></span>@RequestMapping(value="/testMethod",method=RequestMethod.POST)public String testMethod(){System.out.println("testMethod()...");return "success";}
<a href="testRequestMapping/testMethod">testMethod get</a><form action="testRequestMapping/testMethod" method="post"><input type="submit" value="testMethod post"></form>
5,params属性
params 支持简单的表达式:
param1: 表示请求必须包含名为 param1 的请求参数。
!param1: 表示请求不能包含名为 param1 的请求参数。
param1 != value1: 表示请求包含名为 param1 的请求参数,但其值 不能为 value1。
使用get和post请求均有效。
案例中表示请求中必须包含name和age的请求参数,而且age不能等于0。
@RequestMapping(value="/testParams",params={"name","age!=0"})public String testParams(){System.out.println("testParams()..");return "success";}
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;"></span><pre name="code" class="html"><a href="testRequestMapping/testParams?name=tom&age=18">test Params</a><form action="testRequestMapping/testParams" method="post"><input type="text" name="name"><input type="text" name="age"><input type="submit" value="test Params"></form>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px;">5,</span><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:14px">headers属性</span></span>
headers与params一样也支持上面的表达式。
案例中表示请求头的Accpet-Encoding和Accept-Language的参数必须与注解的一样才能相应其请求(案例中是复制chrome的请求头信息)。
@RequestMapping(value="/testHeaders",headers={"Accept-Encoding=gzip, deflate, sdch","Accept-Language=zh-CN,zh;q=0.8"})public String testHeaders(){System.out.println("testHeaders()...");return "success";}
<a href="testRequestMapping/testHeaders">test Headers</a>6,Ant风格的资源地址
Ant 风格资源地址支持 3 种匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:** 匹配多层路径
@RequestMapping 还支持 Ant 风格的 URL:
/user/*'/'createUser: 匹配 /user/aaa/createUser、 /user/bbb/createUser 等
/user/**'/'createUser: 匹配/user/createUser、 /user/aaa/bbb/createUser 等
/user/createUser??: 匹配 /user/createUseraa、/user/createUserbb 等 URL
@RequestMapping("/testAntStyle/**/before")public String testAntStyle(){System.out.println("testAntStyle()...");return "success";}
<a href="testRequestMapping/testAntStyle/**/before">test AntStyle</a>7,占位符参数 @PathVariable
通过案例中的方式可以在请求地址中带入占位的参数,在方法中使用@PathVariable注解该占位符即可。(由于是在请求地址中的占位符,所以必须用GET请求方式)
@RequestMapping(value="/testPathVariable/{id}",method=RequestMethod.GET)public String testPathVariable(@PathVariable(value="id")Integer id){System.out.println("testPathVariable()... id = "+id);return "success";}
<a href="testRequestMapping/testPathVariable/23">test PathVariable</a>8,通过@RequestParam请求来映射方法的请求参数。
①RequestParam的参数含义
value:映射请求的参数名称,必须两方保持一致(页面,映射参数)
required:表示value的参数是否为必须,默认为true。
defaultValue:赋值给请求参数的默认值(对于post请求基本无效)。
②如果参数使用的是int(long、double等等)类型的参数时:
--如果使用post请求,而又没有值的话,则会报错,配置defaultValue也无效。
--如果使用get请求,如果没有defaultValue="0"参数也会报错,如果有则不会报错。
③如果参数使用的是Intger,如果没有传输参数时不容易出错,值为null(建议使用Integer等包装类来代替基本数据类型)。
案例中演示了post请求的方式,你可以自行验证一下上述的结论。
@RequestMapping(value="/testRequestParam")public String testRequestParam(@RequestParam(value="name")String name,@RequestParam(value="age",required=true)/*int*/Integer age){System.out.println("testRequestParam()... name="+name+";age="+age);return "success";}
<span style="white-space:pre"></span><form method="post" action="testRequestMapping/testRequestParam">name:<input type="text" name="name"><br>age :<input type="text" name="age"><br><input type="submit" value="test RequestParam"></form>9,关于如果接受 请求头和cookie信息的方法
在方法中使用@RequestHeader注解和@Cookievalue注解,然后标注其value属性即可得到参数(value可以省略)。
<span style="white-space:pre"></span>@RequestMapping(value="/testRequestHeader")public String testRequestHeader(@RequestHeader("Accept-Language")String language){System.out.println("testRequestHeader()..."+language);return "success";}@RequestMapping("/testCookieValue")public String testCookieValue(@CookieValue(value="JSESSIONID")String jessionId){System.out.println("testCookieValue()..."+jessionId);return "success";}
<span style="white-space:pre"></span><a href="testRequestMapping/testRequestHeader">test RequestHeader</a><br><br><a href="testRequestMapping/testCookieValue">test CookieValue</a>
- springmvc项目二RequestMapping注解
- SpringMVC 的@RequestMapping注解
- SpringMVC-02 RequestMapping注解
- SpringMVC RequestMapping注解详解
- springmvc注解中的@requestmapping
- SpringMVC之@RequestMapping注解
- springmvc 注解之 @RequestMapping
- springMVC-@RequestMapping注解
- SpringMVC-RequestMapping注解
- springMVC-@RequestMapping注解
- springMVC@RequestMapping注解详细
- SpringMVC-核心注解:RequestMapping
- springmvc的@requestMapping注解
- Springmvc注解@RequestMapping(七)
- SpringMVC获取注解RequestMapping
- springmvc注解之@RequestMapping注解
- SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
- SpringMVC 学习笔记(二) @RequestMapping、@PathVariable等注解
- Coding Guidelines for Cocoa
- <iOS>获取键盘高度
- jQuery-easyUI的使用:combogrid
- 利用UIWebView打造一个炫酷的视频背景视图(OC & Swift)
- ios xcode 7 插件安装
- springmvc项目二RequestMapping注解
- NSRunloop的简单认识
- 【个人架站系列之yum源】CentOS搭建内网yum源(转载)
- 10万以内数字转换为中文小写
- Handler、HandlerThread、Thread的区别
- android——彻底关闭——应用程序
- mybatis使用游标返回list
- NSUserDefaults 存储类型 及存储对象
- PHP安全相关的配置