1.映射对应关系
若一个请求为localhost:8080/springMVCProject/Handler/welcome
控制器为:
package person.demo.handler;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("Handler")
public class SpringMVCHandler {
@RequestMapping(value="welcome" , method = RequestMethod.POST , params = {"name=zs"})
public String welcome() {
return "success"; //默认使用请求转发,地址栏不变
}
}
此时根据url去匹配控制器的requestMapping值与对应方法的requestMapping值
并非匹配相关控制器的类名
类名与requestMapping值可以不相同
若在web.xml中配置
url-pattern的值为.action,则springmvc只拦截以.action为节为的请求,其余请求可自由配置,例如交由传统servlet进行拦截
<servlet>
<servlet-name>springDispatherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springDispatherServlet</servlet-name>
<url-pattern>.action</url-pattern>
</servlet-mapping>
2.RqeuestMapping的参数
value–路径解析为Handler/welcome
method–提交方式为POST
params–提交的参数中必须有name这个字段且name的字段值为zs,否则不拦截
age!=23 当字段age的值为23时不拦截,age的值为空或不等于23时 拦截
!name ,提交的参数不能包含名为name的字段,如果包含则不拦截
使用ant风格的请求路径
?–单字符
* --任意个字符(0个或多个)
** --任意目录
使用@PathVariable获取动态参数
在请求地址中使用“/字段值”
在控制器中:@RequestMapping(value=“welcome6/{动态参数名}”)
@PathVariable(“动态参数名<与requestMapping中的参数名保持一致>”) String name <将动态参数赋值给String类型的name>
在方法中可直接使用name来使用传入的参数
@RequestMapping(value="welcome" , method = RequestMethod.POST , params = {"name=zs" , "age!=23"} , "!height" )
@RequestMapping(value="welcome3/*/test")
@RequestMapping(value="welcome4/a?c/test")
@RequestMapping(value="welcome5/**/test")
//获取动态参数
<a href="Handler/welcome6/zs">springmvc-welcome(6)</a><br>
@RequestMapping(value="welcome6/{name}")
public String welcome6(@PathVariable("name") String name) {
System.out.println(name);
return "success"; //默认使用请求转发,地址栏不变
}