post乱码
在web.xml配置文件中添加如下代码(代码位置:最前面)
<!-- 解决post乱码(spring编码过滤器) -->
<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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
get乱码
在Tomcat的server.xml中修改为如下即可:
表单提交时间转换
SpringMVC的表单提交,时间默认只支持yyyy/MM/dd类型的。
解决办法:在命令控制器封装参数的类中重写initBinder(HttpServletRequest request,
ServletRequestDataBinder binder)方法
public class CommandController extends AbstractCommandController{
//指定参数绑定到那个javaBean
public CommandController(){
this.setCommandClass(User.class);
}
@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
//把命令对象强制转化为User对象
User user=(User) command;
ModelAndView mv=new ModelAndView();
mv.addObject("user", user);
mv.setViewName("index");
return mv;
}
@Override
/**
* SpringMVC 时间转换
*/
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
//得到提交表单的时间
String str = request.getParameter("birthday");
if(str.contains("/")){
binder.registerCustomEditor(Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy/MM/dd"), true));
}else if(str.contains("-")){
binder.registerCustomEditor(Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
}
}
}