在使用springMVC框架的时候,在写controller层的时候,在每个类的方法头上,都会有一个很明显的注解--@RequestMapping.DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。我们知道它最常见的作用就是为控制器指定可以处理的URL请求.下面就再给大家介绍一下它的其他作用.
一.修饰类
先来看看@RequestMapping的封装:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
.....
}
从@RequestMapping的头注释可以看出,它可以修饰method和type.
类定义处:
提供初步的请求映射信息,相对于WEB应用的的根目录.
handler具体写法如下:
/**
* 1.使用@RequestMapping注解来映射请求的URL
* 2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver
* 视图解析器,会做如下的解析:
* 通过prefix+returnVal+后缀 这样的方式得到实际的物理视图,然后做转发操作
* @return
*/
@RequestMapping("/test/helloworld")
public String toIndex(){
System.out.println("hello world!");
return SUCCESS;
}
View的请求方式如下:
<a href="test/helloworld">helloworld</a>
二.方法处
提供进一步的细分映射信息.相对于类定义处的URL.若类定义出未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录.
handler具体实现:
@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {
private static final String SUCCESS="success";
/**
* 1.@RequestMapping 除了修饰方法,还可以修饰类
* @return
*/
@RequestMapping("/testRequestMapping")
public String testRequestMapping(){
System.out.println("testRequestMapping");
return SUCCESS;
}
@RequestMapping("/toIndex")
public String toIndexList(){
return "helloword";
}
}
View的具体请求:
<a href=" testRequestMapping" class="easyui-linkbutton" >test RequestMapping</a>
一个View有多个请求,并且多个请求之间有公共指出,既可以把公共之处提前出来,放到类定义处,把不同的不同之处放在方法处.这就是传说中的抽象.
二.映射请求
@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法,请求参数及请求头映射请求.
Handler具体代码:
/**
* 使用method属性来指定请求方式
* @return
*/
@RequestMapping(value="/testMethod",method=RequestMethod.POST)
public String testMethod(){
System.out.println("test method");
return SUCCESS;
}
View :
<form action="testMethod" method="post">
<input type="submit">
</form>
@RequestMapping的value,method,params及heads分别表示请求URL,请求方法,请求参数及请求头的映射条件,他们之间是与的关系,联合使用多个条件可让请求更加精确化.
Handler代码:
/**
* 可以使用params来更加精确的映射请求,params 支持简单的表达式
* @return
*/
@RequestMapping(value="testParamsAndHeaders",params={"username","age!=10"})
public String testParamsAndHeaders(){
System.out.println("testParamsAndHeader");
return SUCCESS;
}
View:
<a href="testParamsAndHeaders?username=admin&age=11">testParamsAndHeaders</a>
结果为:
如果把view的访问请求改为age=10,
<a href="testParamsAndHeaders?username=admin&age=10">testParamsAndHeaders</a>
访问结果为:
掌握SpringMVC注解的常用方法,可以让你的开发效率事倍功半