代码方式配置springmvc的字符集过滤器
之前一直用的xml方式配置
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
一直不知道代码怎么配置,现在有了,那就是注册过滤器
// 继承AbstractAnnotationConfigDispatcherServletInitializer
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
String filterName = "myfilter";
// new CharacterEncodingFilter()是自己创建的一个过滤器的对象
FilterRegistration.Dynamic filterRegistration = servletContext.addFilter(filterName, new CharacterEncodingFilter());
filterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
//父类的方法一定要调用,否则getRootConfigClasses与getServletConfigClasses等方法都会失效
super.onStartup(servletContext);
}
我们看下效果图:
我把原先的xml配置删除但是不加上这个onStartup,
在一个form表单中,我使用了注解校验@Length(max=4),结果我只输入了两个字,就提示长度超过

然后只填入一个字,成功提交了,显示出来的数据和数据的数据都是:

我们再加上代码配置:经我测试,成功了。
贴上过滤器的代码:
public class CharacterEncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("UTF-8");
        servletResponse.setCharacterEncoding("UTF-8");
      // 这句话是要的,不然界面进不去
        filterChain.doFilter(servletRequest, servletResponse);
    }
    @Override
    public void destroy() {
    }
}
第一种注册过滤器就是上方这种,下面介绍第二种注册过滤器,我没有试过
//================注册过滤器的方法一:利用getServletFilters与registerServletFilter,两者结合一起完成========
    /**
     * 这个方法注册的filter就是给DispatcherServlet用的,它的方式是让注册器关联到servlet
     * @return
     */
    /*@Override
    protected Filter[] getServletFilters() {
        return new Filter[]{new MyFilter()};
    }*/
    /**
     * 这个方法具体完成过滤器的注册工作,如果需要自定义注册设置,比如设置其urlPattern,而不是保留关联到DispatcherServlet的话
     * 就需要重写这个方法,
     * @param servletContext
     * @param filter
     * @return
     */
    /*@Override
    protected FilterRegistration.Dynamic registerServletFilter(ServletContext servletContext, Filter filter) {
        //这几行代码是自定义过滤器的注册配置
        String filterName = "myfilter";
        FilterRegistration.Dynamic filterRegistration = servletContext.addFilter(filterName, filter);
        filterRegistration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), false, "/*");
       return filterRegistration;
    }*/
代码方式配置springmvc的字符集过滤器的更多相关文章
- Spring Boot中以代码方式配置Tomcat
		在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCusto ... 
- 使用Java配置SpringMVC
		在此之前,一直使用的是XML的方式配置SpringMVC,现在为了适应Servlert3.0以及JavaConfig的Spring配置方式,在这里记录一下使用Java代码配置SpringMVC.首先, ... 
- Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】
		回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ... 
- Entity Framework入门教程(18)---EF6中基于代码进行配置方式
		EF6中基于代码进行配置方式 我们以前对EF进行配置时是在app.config/web.config下的<entityframework>节点下进行配置的,EF6引进了基于代码的配置方法. ... 
- SpringMVC的注解方式配置
		SpringMVC支持使用注解方式配置,比配置文件方式更加灵活易用,是SpringMVC使用的主流模式. 1.在配置文件中开启SpringMVC的注解 <!-- 开启包扫描 --> < ... 
- 0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client
		一.官方文档解读 官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_cust ... 
- 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置
		1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ... 
- 纯注解方式配置spring+springMVC
		1.新建类initConfig,继承AbstractAnnotationConfigDispatcherServletInitializer,并重写getRootConfigClasses().get ... 
- springmvc字符编码过滤器CharacterEncodingFilter浅析
		一.在web.xml中的配置 <!-- characterEncodingFilter字符编码过滤器 --> <filter> <filter-name>cha ... 
随机推荐
- PHP实现微信网页登陆授权开发
			这篇文章主要介绍了关于PHP实现微信网页登陆授权开发,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHPzhuanlan.zhihu.com 微信开 ... 
- NSString 常见数据类型转换:转NSInteger  , NSDate(互转)
			1. NSString转NSInteger, 转int (float, double类似 ) 1.1正常情况 , NSString所包含内容确能转化为int的类型 NSString *sNumber ... 
- 最简单的mybatis增删改查样例
			最简单的mybatis增删改查样例 Book.java package com.bookstore.app; import java.io.Serializable; public class Boo ... 
- 学习 Ansible Playbook,有这篇文章就够了!
			https://mp.weixin.qq.com/s?__biz=MzAwNTM5Njk3Mw==&mid=2247487361&idx=1&sn=b50327df2949e4 ... 
- MyBatis-Insert、Delete、Update的注意事项
			MyBatis-Insert.Delete.Update的注意事项 插入/更新乱码的解决 出现插入乱码,首先要考虑数据库的编码集是不是UTF-8 如果数据库的编码无误,查看MyBatis的全局配置文件 ... 
- 创建用户(adduser和useradd)和删除用户(userdel)及
			一 用户创建命令: # adduser 用户名 # useradd 用户名 1) useradd 与 adduser 的区别 在CentOs系统中: useradd与adduser是没有区别的, ... 
- Django博客开发-数据建模与样式设定
			开发流程介绍 之前Django的学习过程当中已经把基本Django开发学完了,现在以Django 的博客项目完成一遍课程的回顾和总结.同时来一次完整开发的Django体验. 一个产品从研究到编码我们要 ... 
- 单片机ADC检测4-20mA电路,以及计算方法
			单片机ADC检测4-20mA电路,以及计算方法 转载:https://www.hongchangzidonghua.com/?id=24 1,手里有一个4-20mA输出的压力传感器,假设测量范围是0M ... 
- 动态设置html根字体大小(随着设备屏幕的大小而变化,从而实现响应式)
			代码如下:如果设置了根字体大小,font-size必须是rem var html =document.querySelector('html'); html.style.fontSize = docu ... 
- vue 中使用 echarts 自适应问题
			echarts 自带的自适应方法 resize() 具体用法: let xxEcharts = this.$echarts.init(document.getElementById('xxx')) ... 
