请求参数映射和请求参数乱码

在这里插入图片描述
映射
标准URL映射

标准URL映射是最简单的一种映射,例如:
@RequestMapping("/index") 或 @RequestMapping(value = “/index”)
@RequestMapping(value={“user1”,“user11”}):可以是任意一个;
Ant风格的URL映射*
3中匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:匹配多层路径
匹配实例:

PathDescription
/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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值