1.在web.xml最开始的地方加上对filter过滤器的声明,指明过滤器使用的类<filter-class>,要使用的编码<param-value>,以及过滤器的适用范围
<url-pattern>:
<filter>
<filter-name>setEncoding</filter-name>
<filter-class>
进行过滤器处理的类 com.yourcompany.struts.FilterEncoding
</filter-class>
<init-param>
<param-name>encoding</param-name>
指定使用的编码 <param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setEncoding</filter-name>
有效路径<url-pattern>/*</url-pattern>
</filter-mapping>
注意,与servlet的声明一样,两个地方的<filter-name>的值是一样的。
2.过滤器类FilterEncoding的书写:
注意事项:实现javax.servlet.Filter接口,重写其中的3个方法:(init(FilterConfig filterConfig),doFilter(ServletRequest request, ServletResponse response, FilterChain chain),destroy())
主要是从web.xml中取得要使用的编码,然后给request设置成取得的编码类型。示例代码如下:
package com.yourcompany.struts;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* @author n-liang
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class FilterEncoding implements Filter {
private FilterConfig filterConfig=null;
private String encoding=null;
/* (non-Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
}
/* (non-Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
String encoding=this.encoding;
if(encoding!=null)
{
request.setCharacterEncoding(encoding);
}
chain.doFilter(request, response);
}
/* (non-Javadoc)
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
this.encoding=null;
this.filterConfig=null;
}
}
分享到:
相关推荐
本示例通过使用过滤器(Filter)来解决这个问题,确保了数据在传输过程中的正确编码,从而避免乱码。 1. **Struts2.0框架介绍** Struts2.0是一个基于MVC设计模式的Java Web框架,它整合了WebWork和Struts1的优点,...
本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...
### Struts2配置过滤器详解 ...需要注意的是,在实际应用中还应考虑更多细节问题,比如如何处理不同环境下的配置差异、如何更灵活地管理过滤器链等。希望本文能为你在Struts2框架的学习和实践中提供一定的帮助。
本篇文章将详细探讨SSH框架中的中文乱码问题,以及如何通过实现自定义过滤器(Filter)来解决这一问题。 首先,我们要理解乱码的产生原因。在HTTP请求中,数据编码格式不一致是导致乱码的主要因素。例如,客户端...
在这个框架中,过滤器(Filter)扮演着关键角色,它们负责在请求到达实际处理之前进行预处理,或者在响应发送给客户端之后进行后处理。本示例中的“通用过滤器filter”是专门为Struts2设计的,用于增强应用的安全性...
在IT行业中,Tomcat、Struts2和Servlet Filter是Java Web开发中的重要组成部分。了解它们的工作原理对于构建高效、安全的Web应用程序至关重要。下面将详细阐述这三个组件的基本概念和工作流程。 首先,Tomcat是一个...
1. **Action类中的设置**:在Struts2的Action类中,可以使用`@Action`注解来指定请求的编码: ```java @Action(value = "testAction", results = { @Result(name = "success", type = "stream", params = { ...
在Struts2中,可以通过拦截器和过滤器实现这一功能。拦截器可以在动作执行前检查会话中的登录信息,如果发现用户未登录,可以重定向到登录页面。过滤器则可以在请求进入应用之前检查请求路径,防止未经认证的用户...
过滤器在Struts框架中扮演着关键角色,能够显著提高Web应用的功能性和灵活性。通过对请求和响应的处理,过滤器可以实现诸如安全性检查、日志记录、性能监控等多种功能。理解过滤器的基本原理和实现机制对于开发高...
在深入了解如何通过Struts2框架中的Servlet过滤器解决字符编码问题之前,我们先简要回顾一下字符编码的基本概念。字符编码是将计算机内部二进制数据转换为人类可读的文字的过程。常见的字符编码方式包括ASCII、GBK、...
3. 维护静态内容:FilterDispatcher 会维护 Struts2 中使用的一些公共的静态内容,例如 JavaScript 文件、CSS 文件等。 4. 清除 request 生命周期内的 XWork 的 interceptors:FilterDispatcher 会清除 request 生命...
Struts框架中的ActionForm乱码问题以及Servlet全局过滤器的转义编码处理是Java Web开发中常见的字符编码问题。在开发基于Struts的Web应用时,乱码主要出现在三个方面:页面显示乱码、参数传递乱码以及国际化资源文件...
Struts权限过滤器是Java Web开发中用于控制用户访问权限的关键组件,主要应用于基于Struts 2框架的应用程序。在Struts 2框架中,过滤器扮演着重要的角色,它们在HTTP请求到达Action之前进行拦截,对请求进行预处理,...
除了配置过滤器,我们还可以在Action类的execute方法中,或者更具体地说是在处理请求参数的方法中,手动设置请求的编码。例如: ```java request.setCharacterEncoding("UTF-8"); ``` 此外,对于Struts2框架,我们...
在Struts2中,过滤器(Filter)是Servlet API的一部分,用于拦截请求并在请求到达目标资源之前进行处理。自定义过滤器允许开发者根据需求添加特定的处理逻辑,如权限验证、日志记录或内容修改。创建自定义过滤器需...
在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地利用这两种工具来优化应用程序的性能和安全性。 #### 二、...
Struts 2框架中的过滤器(Filter)是Servlet规范的一部分,主要用于在请求到达目标资源(如JSP、Servlet或其他资源)之前或响应返回客户端之前进行预处理或后处理。过滤器能够检查和修改`ServletRequest`和`Servlet...
Struts2提供了一个名为`ActionContextCleanUp`的过滤器,它负责清理ActionContext,确保请求处理过程中使用的字符集是UTF-8。在web.xml中添加此过滤器并配置为全局过滤器,可以确保所有请求都使用UTF-8编码,避免...
在表示的过程中可以使用 Struts2 框架中继承的标签。 拦截器(Interceptor)和过滤器(Filter)的区别: 1. 拦截器是基于 Java 的反射机制的,而过滤器是基于函数回调。 2. 过滤器依赖于 Servlet 容器,而拦截器不...