一、springmvc的几个重要注解

1. @RequestMapping 

除了修饰方法, 还可来修饰类类定义处: 提供初步的请求映射信息。相对于 WEB 应用的根目录。

@RequestMapping("/springmvc")
public class SpringMVCTest {
连接将会是<ahref="springmvc/testRequestMapping">
  ② 方法处: 提供进一步的细分映射信息。相对于类定义处的 URL。
若类定义处未标注 @RequestMapping,则方法处标记的 URL相对于 WEB 应用的根目录。连接将会是<a href="helloworld">
③ @RequestMapping可以指明method属性:(常用)
@RequestMapping(value ="/testMethod", method = RequestMethod.POST)

但是浏览器跳转默认的是get方式,所以会出错,则此时就要加一个<form action>指明用post

<formaction="springmvc/testMethod" method="POST">
<inputtype="submit" value="submit"/>
</form>

④ 当然还有很多参数可以指明,但是不是很重要。(其中,可以使用 params 和 headers 来更加精确的映射请求. params 和 headers 支持简单的表达式.)

//请求参数必须包含username且age不等于10.  
@RequestMapping(value = "testParamsAndHeaders", params = {"username","age!=10"}, headers = { "Accept-Language=en-US,zh;q=0.8" }) 
       <ahref="springmvc/testParamsAndHeaders?username=atguigu&age=10">Test</a>

2. @PathVariable

可以来映射 URL 中的占位符到目标方法的参数中.

@RequestMapping("/testPathVariable/{id}")
id") Integer id) {  //可以里面写打印id

通过链接就可以传值输出id  :<a href="springmvc/testPathVariable/1">  //这个1也可以直接在浏览器中修改。

3. @RequestParam

用来映射请求参数。 value 值即请求参数的参数名; required 该参数是否必须,默认为 true;defaultValue 请求参数的默认值。

和@ PathVariable不同,一个是请求参数,一个是URL占位符。

//这个require设为false,表示这个参数值不是必须的,如果不写,默认是true,如果请求中没有带入参数,就直接会报错,如果这里写int型,
而没有用defaultValue=“0”,在没有传参时也会出错,除非用Integer类型。
@RequestMapping(value = "/testRequestParam")
 public String testRequestParam(@RequestParam(value = "username") String un, @RequestParam(value = "age", required = false, defaultValue = "0") int age){
System.out.println("testRequestParam, username: " + un + ", age: "+ age);
在链接处:<a href="springmvc/testRequestParam?username=atguigu&age=11">

4. @InitBinder

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

@InitBinder方法不能有返回值,它必须声明为void;
@InitBinder方法的参数通常是是 WebDataBinder
@InitBinder
public void initBinder(WebDataBinderbinder){
       binder.setDisallowedFields("lastName");  //作用是不给lastName赋值
}

这个方法一般是在某个类中的集合上,因为不能为该集合传值,所以只能手动映射,这时候就要用到这个注解。




二、springmvc的几个重要配置

1. HiddenHttpMethodFilter

浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,

使得支持 GET、POST、PUT 与DELETE 请求。

① <!-- 在web.xml中配置 HiddenHttpMethodFilter这个过滤器: <filter> <filter-mapping>
 把 POST 请求转为 DELETE 或 POST 请求 -->
<filter>
 <filter-name>HiddenHttpMethodFilter</filter-name>
 <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>HiddenHttpMethodFilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
 ② @RequestMapping(value = "/testRest/{id}", method = RequestMethod.DELETE)
public String testRestDelete(@PathVariable Integer id) {
//注:对于post不需要@PathVariable Integer id了
链接中:<form action="springmvc/testRest/1" method="post">
 // _method这个参数值是HiddenHttpMethodFilter中定义的用于转换的
 <input type="hidden" name="_method" value="DELETE"/> //PUT也是一样
 <input type="submit" value="TestRestDELETE"/>
 </form>
 其中对于get的方式:<a href="springmvc/testRest/1"> ; 对于post不需要传值。