springmvc的@RequestMapping知识点

1、处理方法
@RequestMapping("/helloworld")
public String hello(){
System.out.println("这是我的第一个springmvc的测试文件");
return "success";
}

2、处理类
@RequestMapping("springmvc")
@Controller
public class SpringmvcTest {
private static String SUCCESS="success";
/**
* 1.@RequestMapping除了修饰方法,还可以修饰类
* 2.
* 1)类定义处:提供初步请求映射信息。相对于web应用的根目录
* 2)方发处:提供进一步的细分映射信息
* 相对于类定义处的URL。若类定义处未标注@RequestMapping,则方发处标注的URL相当于web应用的根目录
* @return
*/
@RequestMapping("/springmvcTest")
public String springmvcTest(){
System.out.println("springmvcTest测试");
return SUCCESS;
}

/**
* 常用:使用method属性来指定请求方式
*/
@RequestMapping(value="/testMethod",method=RequestMethod.POST)
public String testMethod(){
System.out.println("testMethod");
return SUCCESS;
}
}
首页的url应是类定义处+方法处:
1、对于修饰类<a href="springmvc/springmvcTest">测试</a>
2、对于使用使用method属性来指定请求方式,在首页要以post发送请求,可以用表单
<form action="springmvc/testMethod" method="post">
<input type="submit">
</form>
3、使用params和headers更加精确的映射请求,params和headers支持简单的表达式。这个用的比较少,要求了解
@RequestMapping(value="/testParamAndHeaders",params={"username","age!=10"},headers={"Accept-Language=zh-Cd,zh;q=0.8"})
public String testParamAndHeaders(){
System.out.println("testParamAndHeaders");
return SUCCESS;
}
4、关于ant的写法
/**
* 测试ant,在前端页面的超链接testAnt和abc之间随便写,开心就好
*/
@RequestMapping("/testAnt/*/abc")
public String testAnt(){
System.out.println("testAnt");
return SUCCESS;

}

5、@PathVariable映射url绑定占位符
/**
* @PathVariable可以用来映射URL中的占位符到目标方法的参数中
* @param id
* @return
*/
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable("id")Integer id){
System.out.println("testPathVariable"+id);
return SUCCESS;
}

REST:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便, 所以正得到
越来越多网站的采用 
资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。 可以用一个URI
(统一资源定位符)指向它,每种资源对应一个特定的 URI 。要 获取这个资源,访问它的URI就可以,因此 URI 即为每一个资源的独一无二的识别符。 
表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层? (Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格 式、XML 格式、JSON 
格式表现,甚至可以采用二进制格式。 
状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端
想要操作服务器,必须通过某种手段,让服务器端发生“ 状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是 “ 表现层状态转化”。具体说,就是 HTTP 
协议里面,四个表示操作方式的动 词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET 用来获 取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除
资源。

示例:/order/1  HTTP GET :得到 id = 1 的 order   
  /order/1  HTTP DELETE:删除 id = 1的 order  
 /order/1  HTTP PUT:更新id = 1的 order   
        /order    HTTP POST:新增 order 
HiddenHttpMethodFilter:浏览器 form 表单只支持 GET与POST请求,而DELETE、PUT 等 method 并不支 持,Spring3.0 添加了一个过滤器,可以将这些请求转换 为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。

使用 @RequestParam 绑定请求参数值
在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法 value:参数名required:是否必须。默认为 true, 表示请求参数中必须包含对应– 的参数,若不存在,将抛出异常
@RequestMapping("/TestRequestParam")
public String  TestRequestParam (@RequestParam(value="username", required= false)String username,@RequestParam(value="age")int age){
System.out.println("@RequestParam的测试");
return SUCCESS;
}

使用 @RequestHeader 绑定请求报头的属性值
/**
* 映射请求头部信息
* 用法同TestRequestParam
* @param lang
* @return
*/

//使用 @RequestHeader 绑定请求报头的属性值
@RequestMapping("/TestRequestHeader")
public String TestRequestHeader(@RequestHeader("Accept-Language")String lang){
System.out.println("TestRequestHeader的测试lang"+lang);
return SUCCESS;
}

使用 @CookieValue 绑定请求中的 Cookie 值
/**
* @CookieValue 映射一个cookie值属性同RequestParam
* @param cookid
* @return
*/
@RequestMapping("/TestCookieValue")
public String TestCookieValue(@CookieValue("JSESSIONID")String cookid){
System.out.println("TestCookieValue的cookid:"+cookid);
return SUCCESS;
}

使用 POJO 对象绑定请求参数值
/**
* springmvc会按照请求参数名和pojo属性名进行自动匹配
* 自动为该对象填充属性值,支持级联属性。比如:address.city、address.province等
*/
@RequestMapping("/TestPojo")
private String TestPojo(UserInfo user){
System.out.println(user);
return SUCCESS;
}

假如UserInfo里的属性为:
private String uname;
private String password;
private int age;
private String email;
private Address address;
然后Address里的属性为:
private String city;
private String province;
在前台的form表单可以这样表达,使后台接收到值:
<form action="springmvc/TestPojo" method="post">
姓名:<input type="text" name="uname"/>
<br>
密码:<input type="password" name="password"/>
<br>
年龄:<input type="text" name="age"/>
<br>
邮箱:<input type="text" name="email"/>
<br>
城市:<input type="text" name="address.city"/>
<br>
省份:<input type="text" name="address.province"/>
<br>
<input type="submit" value="提交"/>
</form>

使用Servlet API作为入参
/**
* 可以使用servlet原生的API作为目标方法的参数,具体支持一下类型
* HttpServletRequest
* HttpServletResponse
* HttpSession
* java.security.Principal
* Locale
* InputStream
* OutputStream
* Reader
* Writer
*/
@RequestMapping("/testServletApi")
private String testServletApi(HttpServletRequest request,HttpServletResponse response){
System.out.println("servletApi:"+request+"  "+response);
return SUCCESS;
}

@RequestMapping("/testServletApi")
private void testServletApi(HttpServletRequest request,HttpServletResponse response,Writer out) throws IOException{
System.out.println("servletApi:"+request+"  "+response);
out.write("springmvc");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值