1.日期格式转换
当页面提交日期格式时 默认的格式为2017/10/1
如果指定日期格式为2017-10-1
1 //初始化绑定日期格式--不定义初始化格式时只能默认用yyyy/MM/dd格式
2 @InitBinder
3 public void InitBinder (ServletRequestDataBinder binder){
4 binder.registerCustomEditor(
5 java.util.Date.class,
6 new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
7 }
2.中文乱码问题
一站式的中文乱码解决,通过 过滤器实现 需要在web.xml中配置过滤器即可
1 <!-- 配置过滤器,解决编码乱码问题 --> 2 <filter> 3 <filter-name>encodingFilter</filter-name> 4 <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class> 5 <init-param> 6 <param-name>encoding</param-name> 7 <param-value>utf-8</param-value> 8 </init-param> 9 </filter> 10 <filter-mapping> 11 <filter-name>encodingFilter</filter-name> 12 <url-pattern>/*</url-pattern> 13 </filter-mapping>
3.同名提交框问题(复选框提交表单name值是一致)
在SpringMVC中如果遇到同名提交框,介绍参数为字符串时,则会自动的拼接中间中","号隔开.
1 //选中复选框最后将取得以逗号隔开的字符串 2 //类似:篮球,足球,台球 3 @RequestMapping("addUser.action") 4 public String addUser(User user,String hobby,Model model){ 5 6 model.addAttribute("hobby", user.getHobby()); 7 8 return "result"; //返回要显示的页面名称,在视图解析器中需要拼接路径 9 10 }
如果String[]接收,则会自动的拼接为数组
1 //最终得到复选框是个数组形式显示 2 @RequestMapping("addUser.action") 3 public String addUser(User user,String[] hobby,Model model){ 4 5 model.addAttribute("hobby", Arrays.toString( user.getHobby())); 6 7 return "result"; //返回要显示的页面名称,在视图解析器中需要拼接路径 8 9 }
4.提交参数与接收参数不一致的问题
当请求参数与Controller中接收的参数不一致时,可以用@RequestParam注解解决
1 /** 2 * @RequestParam(value|defaultValue|rquired) 3 * value="页面属性值" --> 请求时的参数 如:hobby 4 * defaultValue=""--> 默认值,若参数没有值时可以给个默认值 5 * rquired="true|false" --> true:参数必须有值,否则报错; 6 */ 7 @RequestMapping("addUser.action") 8 public String addUser(User user,@RequestParam(value="hobby",defaultValue="默认值")String[] hobbys,Model model){ 9 15 model.addAttribute("hobby", Arrays.toString( hobbys)); 16 17 return "result"; //返回要显示的页面名称,在视图解析器中需要拼接路径 18 19 }
5.RESTFul结构
RESTFul结构是一种参数的格式
get提交方式:
Url:localhost:XXXX/addUser.action?name=tom&age=18
RESTFul提交方式:
Url:localhost:XXXX/addUser/tom/18.action
传值时值传递具体的值,多个值中间用"/"分割;
后台接收参数的方式:@RequestMapping("RestFul/{name}/{age}.action")
1 @RequestMapping("RestFul/{name}/{age}.action") 2 public String RestFul(@PathVariable String name,@PathVariable int age,Model model){ 3 4 model.addAttribute("msg","测试RestFul结构接收参数的方式..."+name+"--"+age); 5 return "result"; //返回要显示的页面名称,在视图解析器中需要拼接路径 6 7 }
6.SpringMVC中的重定向和转发
重定向:redirect
特点:
1.浏览器的地址栏 发生变化
2.多次请求---多次响应
3.不能通过重定向 传递参数.
redirect:/toFile.action
//若匹配到redirect关键字时会以后面的字符串拼接到地址了作为地址 return "redirect:/toFile.action"
转发:forward
特点:
1.浏览器的地址不发生变化
2.一次请求一次响应
3.可以携带参数进行转发
forward:/toFile.action
由于WEB-INF/下的页面浏览器不能直接访问,所以需要通过转发或重定向toFile.action进行访问.
//匹配到forward关键字时以转发的形式进行跳转并携带相应的参数 return "forward:/toFile.action"