之前一直用的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的字符集过滤器的更多相关文章

  1. Spring Boot中以代码方式配置Tomcat

    在Spring Boot2.0以上配置嵌入式Servlet容器时EmbeddedServletContainerCustomizer类不存在,经网络查询发现被WebServerFactoryCusto ...

  2. 使用Java配置SpringMVC

    在此之前,一直使用的是XML的方式配置SpringMVC,现在为了适应Servlert3.0以及JavaConfig的Spring配置方式,在这里记录一下使用Java代码配置SpringMVC.首先, ...

  3. Struts2第十篇【数据校验、代码方式、XML配置方式、错误信息返回样式】

    回顾以前的数据校验 使用一个FormBean对象来封装着web端来过来的数据 维护一个Map集合保存着错误信息-对各个字段进行逻辑判断 //表单提交过来的数据全都是String类型的,birthday ...

  4. Entity Framework入门教程(18)---EF6中基于代码进行配置方式

    EF6中基于代码进行配置方式 我们以前对EF进行配置时是在app.config/web.config下的<entityframework>节点下进行配置的,EF6引进了基于代码的配置方法. ...

  5. SpringMVC的注解方式配置

    SpringMVC支持使用注解方式配置,比配置文件方式更加灵活易用,是SpringMVC使用的主流模式. 1.在配置文件中开启SpringMVC的注解 <!-- 开启包扫描 --> < ...

  6. 0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client

    一.官方文档解读 官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#_cust ...

  7. 使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置

    1.使用java代码动态配置与xml文件结合的方式使用mybatis-generator生成代码配置 2.上代码:在resources目录下新建:generatorConfiguration.xml文 ...

  8. 纯注解方式配置spring+springMVC

    1.新建类initConfig,继承AbstractAnnotationConfigDispatcherServletInitializer,并重写getRootConfigClasses().get ...

  9. springmvc字符编码过滤器CharacterEncodingFilter浅析

      一.在web.xml中的配置 <!-- characterEncodingFilter字符编码过滤器 --> <filter> <filter-name>cha ...

随机推荐

  1. Flutter 使用json_model解析json生成dart文件

    一.json_serializable使用步骤 1.集成json_serializable pubspec.yaml 添加以下依赖 dependencies: json_annotation: ^2. ...

  2. 一探torch.nn究竟“What is torch.nn really?”

    来自: https://pytorch.org/tutorials/beginner/nn_tutorial.html <What is torch.nn really?>这文章看起来不能 ...

  3. storm的JavaAPI运行报错

    报错:java.lang.NoClassDefFoundError: org/apache/storm/topology/IRichSpout 原因:idea的bug:本地运行时设置scope为pro ...

  4. 一、Servlet之14道面试题

    1.什么是Servlet    Servlet是用Java编写的服务端程序,它与协议和平台无关,运行于支持Java的应用服务器中,Java Servlet可以动态的扩展服务器的能力,并采用请求-响应模 ...

  5. php 等于不等于 一个感叹号两个等于号

    $a == $b 等于 TRUE,如果 $a 等于 $b. $a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同.(PHP 4 引进) $a != $b 不等 TRUE,如 ...

  6. Day3-P - Matrix POJ3685

    Given a N × N matrix A, whose element in the i-th row and j-th column Aij is an number that equals i ...

  7. PhpStorm 10.0.1破解激活步骤

    1.下载破解补丁 链接:https://pan.baidu.com/s/1S4JVKiaFnCZG01MpDPaAAA 密码:c6x6 放到phpstorm安装目录下的lib文件夹下: C:\soft ...

  8. SSH整合出现的问题

    一 .  使用action注入service的时候,service为null 1 如果是xml配置方式,则一般是配置文件的路径问题. 2 如果是注解方式,@Resource , 则需要在applica ...

  9. CSS样式表——样式

    样式: 1)大小 width:200px;       或width:100%;                           //样式中要加单位 height:100px; 2)背景 back ...

  10. [题解] LuoguP2764 最小路径覆盖问题

    传送门 好久没做网络流方面的题发现自己啥都不会了qwq 题意:给一张有向图,让你用最少的简单路径覆盖所有的点. 考虑这样一个东西,刚开始,我们有\(n\)条路径,每条路径就是单一的一个点,那么我们的目 ...