映射
标准URL映射
标准URL映射是最简单的一种映射,例如:
@RequestMapping("/index") 或 @RequestMapping(value = “/index”)
@RequestMapping(value={“user1”,“user11”}):可以是任意一个;
Ant风格的URL映射*
3中匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:匹配多层路径
匹配实例:
Path | Description |
---|---|
/app/*.x | 匹配(Matches)app路径下所有.x文件 |
/app/p?ttern | 匹配(Matches) /app/pattern 和 /app/pXttern,但是不包括/app/pttern |
/**/example | 匹配项目根路径下 /project/example, /project/foow/example, 和 /example |
/app/**/dir/file. | 匹配(Matches) /app/dir/file.jsp, /app/foo/dir/file.html,/app/foo/bar/dir/file.pdf, 和 /app/dir/file.java |
/**/*.jsp | 匹配项目根路径下任何的.jsp 文件 |
**占位符映射**
Rest风格的URL
不以请求URL路径作为操作依据,而是以请求方式作为操作依据的。符合这种请求方式的url ,叫做rest 风格的url
实例:
<a href="<%=request.getContextPath()%>/user/user5/2">占位符</a><br>
@RequestMapping(value = "user5/{id}")
public String user5(@PathVariable("id") Integer id){
System.out.println(id);
return "showUser";
}
**限制请求方法映射**
请求方法常用的是GET、POST但是还有DELET、PUT、HEAD等
实例:
<a href="<%=request.getContextPath()%>/user/user1">标准映射</a><br>
@RequestMapping(value="user1",method=RequestMethod.GET)
//@RequestMapping(value="user1",method={RequestMethod.GET,RequestMethod.POST})
public String user1(Model model){
model.addAttribute("name","张三");
return "showUser";
}
**限制参数映射**
限定参数只读id
@RequestMapping(value = "user2",params = "id")
public String user2(Model model,int id){
model.addAttribute("name","张三");
System.out.println(id);
return "showUser";
}
名字不一样注解
@RequestMapping(value = "user2",params = "id")
public String user2(Model model,@RequestParam("id") int uid){
model.addAttribute("name","张三");
System.out.println(uid);
return "showUser";
}
限定参数读id,但是不能等于1
@RequestMapping(value = “user3”,params = “id!=1”)
public String user3(Model model,@RequestParam(“id”) int id){
model.addAttribute(“name”,“张三”);
System.out.println(id);
return “showUser”;
}
@RequestParam的用法:
<a href="<%=request.getContextPath()%>/user/user3?name=asd">限定映射2</a><br>
允许没有id;
@RequestMapping(value = "user3")
public String user3(Model model,@RequestParam(value = "id",required = false) Integer id,String name){
model.addAttribute("name","张三");
System.out.println(id+""+name);
return "showUser";
}
**@RequestBody注解**
<form action="<%=request.getContextPath()%>/user/user4" method="post">
用户id:<input type="text" name="id" value="2"><br>
用户名:<input type="text" name="name" value="Marry"><br>
密码:<input type="text" name="pwd"><br>
<input type="submit" value="提交">
</form>
// 依次读出表单内容
@RequestMapping(value = "user4")
public String user4(@RequestBody String body){
System.out.println(body);
return "showUser";
}
参数乱码配置
注意:不能防止@RequestBody注解获取的表单内容的乱码
在web.xml中配置:
<!--防止乱码配置-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>