`

springmvc中的编码过滤器

 
阅读更多

在web.xml中编写一下代码

 

 

<filter>
		<filter-name>encoding</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>encoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

  

 

让我们来读读这个过滤器,此处有三个属性,一个是编码,一个是强制request编码,一个是强制response编码

 

 

private String encoding;

private boolean forceRequestEncoding = false;

private boolean forceResponseEncoding = false;

 

 

然后来看一下构造器;

 

 

public CharacterEncodingFilter() {
	}

public CharacterEncodingFilter(String encoding) {
		this(encoding, false);
}

public CharacterEncodingFilter(String encoding, boolean forceEncoding) {
               this(encoding, forceEncoding, forceEncoding);
	}
public CharacterEncodingFilter(String encoding, boolean forceRequestEncoding, boolean forceResponseEncoding) {
		Assert.hasLength(encoding, "Encoding must not be empty");
		this.encoding = encoding;
		this.forceRequestEncoding = forceRequestEncoding;
		this.forceResponseEncoding = forceResponseEncoding;
	}

 

 

这里只传了一个参数,就是encoding,然后forceRequestEncoding和forceResponseEncoding都是false,下面主要是一些编码的set和get方法

 

 

   public void setEncoding(String encoding) {
		this.encoding = encoding;
	}

	
	public String getEncoding() {
		return this.encoding;
	}
	public void setForceEncoding(boolean forceEncoding) {
		this.forceRequestEncoding = forceEncoding;
		this.forceResponseEncoding = forceEncoding;
	}
	public void setForceRequestEncoding(boolean forceRequestEncoding) {
		this.forceRequestEncoding = forceRequestEncoding;
	}
	public boolean isForceRequestEncoding() {
		return this.forceRequestEncoding;
	}
	public boolean isForceResponseEncoding() {
		return this.forceResponseEncoding;
	}
	public void setForceResponseEncoding(boolean forceResponseEncoding) {
		this.forceResponseEncoding = forceResponseEncoding;
	}

 

然后是过滤器主要方法

 

 

 

protected void doFilterInternal(
			HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {

		String encoding = getEncoding();
		if (encoding != null) {
			if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {
				request.setCharacterEncoding(encoding);
			}
			if (isForceResponseEncoding()) {
				response.setCharacterEncoding(encoding);
			}
		}
		filterChain.doFilter(request, response);
	}

 

然后在这个方法中设定了request和response的编码

 

 

Filter过滤器方法,下面的子类使用了模版的继承方式

 

 

public interface Filter {

    public void init(FilterConfig filterConfig) throws ServletException;
//进行初始话
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
            throws IOException, ServletException;
//进行过滤依靠chain向下传递
    public void destroy();
//进行摧毁时候进行调用
}

 

 

 

分享到:
评论

相关推荐

    通过原理解析Spring mvc的内置编码过滤器

    "Spring MVC内置编码过滤器详解" Spring MVC框架中,如何解决从页面传来的字符串的编码问题?答案是使用CharacterEncodingFilter过滤器,该过滤器是Spring MVC内部提供的,主要用于设置请求响应的字符编码。 ...

    SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    例如,可以在过滤器中处理通用的HTTP请求预处理,而在Spring MVC的拦截器中处理特定业务逻辑的校验和处理。同时,由于它们都是预处理和后处理机制,因此可以利用拦截器实现过滤器无法完成的高级功能,如AOP切面。 ...

    SpringMVC拦截器

    SpringMVC提供了一个名为`CharacterEncodingFilter`的过滤器,用于解决HTTP请求中的乱码问题。该过滤器通常被配置在`web.xml`文件中,或者通过Spring的配置类来配置。通过设置`CharacterEncodingFilter`的`encoding`...

    解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题

    "解决springmvc项目中使用过滤器来解决请求方式为post时出现乱码的问题" Spring MVC 项目中,使用过滤器来解决请求方式为 POST 时出现乱码的问题是非常重要的。本文将详细介绍如何使用过滤器来解决这个问题,并给...

    过滤器与过滤器

    在这个基于SpringMVC的简单示例中,我们将探讨过滤器和拦截器的工作原理以及它们的区别。 过滤器是Java Servlet规范的一部分,通过实现javax.servlet.Filter接口来创建。过滤器在请求到达目标Servlet或JSP之前进行...

    springMVC项目开发框架

    4. **过滤器(Filter)**:在Servlet容器中,过滤器用于在请求处理之前和之后执行特定逻辑,如GZIP压缩、字符编码转换、安全检查等。SpringMVC项目可能预设了一些常用的过滤器,提高应用的安全性和效率。 5. **拦截...

    springmvc+mybatis面试题

    1. 入口不同:SpringMVC的入口是DispatcherServlet(前端控制器),而Struts2的入口是Filter(过滤器)。 2. 开发方式:SpringMVC基于方法开发,参数通过方法形参传递;Struts2基于类开发,参数通过类的属性传递。 3...

    SpringMVC - 拦截器

    过滤器是在 Servlet 容器层面处理请求和响应,而拦截器是在 SpringMVC 框架内部操作,提供了更多的灵活性。 综上所述,SpringMVC 拦截器是实现业务逻辑增强、提高代码复用性和可维护性的重要手段。通过灵活地配置和...

    浅谈SpringMVC的拦截器(Interceptor)和Servlet 的过滤器(Filter)的区别与联系 及SpringMVC 的配置文件

    在本文中,我们将深入探讨SpringMVC的拦截器(Interceptor)和Servlet的过滤器(Filter)之间的差异和联系,以及如何配置SpringMVC的拦截器。理解这两者的区别对于开发高效且安全的Web应用程序至关重要。 首先,让我们...

    吴天雄--SpringMVC笔记.doc

    - 字符编码过滤器确保正确处理请求和响应的字符编码。 - 自定义类型转换器,允许自定义数据类型转换规则。 - 跳转方式:forward 和 redirect,分别对应页面内部转发和外部重定向。 - 作用域传值:session、...

    SpringMvc(4.0)+hibernate(4.0)

    在 web.xml 文件中,配置了 Spring 的字符编码过滤器以确保所有请求和响应都使用 UTF-8 编码,避免乱码问题。此外,配置了 ContextLoaderListener 监听器,该监听器会在 Web 应用启动时初始化 Spring 容器,加载 ...

    浅谈springMVC拦截器和过滤器总结

    在Spring MVC中,有两种常见的机制可以用来对访问的URL进行拦截处理:拦截器(Interceptor)和过滤器(Filter)。这两者都可以实现预处理和后处理功能,但它们的工作方式和应用场景有所不同。 ### 拦截器...

    SpringMVC 使用JSON、XML视图

    接下来,我们需要在`web.xml`中配置SpringMVC的核心控制器`DispatcherServlet`,以及设置字符编码过滤器`CharacterEncodingFilter`,确保数据在传输过程中保持正确的编码格式。 然后,在`dispatcher.xml`...

    SpringMVC是Spring家族的一款专注于解决控制器层问题的框架技术,学习资料第一天

    处理POST请求提交的中文乱码可以通过配置字符编码过滤器来解决。 九、Spring+SpringMVC+MyBatis整合 Spring+SpringMVC+MyBatis整合可以实现jee应用开发,包括: * 搭建开发环境 * 引入依赖 * 引入配置文件 * 初始...

    SpringMVC+mysql框架

    在SpringMVC中,开发者可以利用Model-View-Controller(MVC)模式来分离业务逻辑、数据模型和用户界面,使得代码更加结构化,易于维护。与MySQL数据库结合使用,可以构建出高效、可扩展的Web应用程序。 **SpringMVC...

    maven + springmvc 入门实例

    2. **配置SpringMVC**: 创建`web.xml`配置文件,配置DispatcherServlet、视图解析器(如InternalResourceViewResolver)和字符编码过滤器。同时,还需要在Spring的配置文件中定义Controller beans。 3. **编写...

    SpringMVC参数收集及乱码处理.docx

    我们可以在 web.xml 文件中添加 Spring 字符编码过滤器,以处理所有请求地址的字符编码。例如: ```xml &lt;filter-name&gt;characterEncodingFilter &lt;filter-class&gt;org.springframework.web.filter....

    spring+springMVC+Mybatis框架整合

    - `&lt;filter&gt;`和`&lt;filter-mapping&gt;`用于设置字符编码过滤器`CharacterEncodingFilter`,确保请求和响应的字符编码为UTF-8,避免乱码问题。 - `&lt;context-param&gt;`和`&lt;listener&gt;`用于初始化Spring的全局上下文,`...

    SpringMVC集成SpringSecurity

    1. **SpringSecurity架构**:SpringSecurity的核心架构由多个组件构成,包括过滤器链、认证管理、权限控制等。其中,过滤器链是SpringSecurity处理请求的第一道防线,它会拦截所有HTTP请求并进行安全检查。 2. **...

Global site tag (gtag.js) - Google Analytics