`
godsend_jin
  • 浏览: 41528 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts中用过滤器(Filter)解决数据库中文的问题

阅读更多

在web.xml中加上
<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GB2312</param-value>
    </init-param>
    <init-param>
      <param-name>ignore</param-name>
      <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <servlet-name>action</servlet-name>
</filter-mapping>
这里会涉及一个Filter,源码如下:
import javax.servlet.*;
import java.io.IOException;

.public class SetCharacterEncodingFilter implements Filter {

    protected String encoding = null;
    protected FilterConfig filterConfig = null;
    protected boolean ignore = true;

    public void destroy() {

        this.encoding = null;
        this.filterConfig = null;

    }

    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain)
    throws IOException, ServletException {

         if (ignore || (request.getCharacterEncoding() == null)) {
            String encoding = selectEncoding(request);
            if (encoding != null)
                request.setCharacterEncoding(encoding);
        }

         chain.doFilter(request, response);

    }


    public void init(FilterConfig filterConfig) throws ServletException {

    this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");
        String value = filterConfig.getInitParameter("ignore");
        if (value == null)
            this.ignore = true;
        else if (value.equalsIgnoreCase("true"))
            this.ignore = true;
        else if (value.equalsIgnoreCase("yes"))
            this.ignore = true;
        else
            this.ignore = false;

    }
    protected String selectEncoding(ServletRequest request) {

        return (this.encoding);

    }

加上这个后,在action中就可以直接从form中接收gb2312编码的数据了,返回时自然也是gb2312了

分享到:
评论

相关推荐

    struts2用cookie实现自动登录中用过滤器执行读取上下文方法

    在Struts2中,可以通过实现`Filter`接口或者继承`FilterDispatcher`类来自定义过滤器。在这个过滤器的`doFilter`方法中,我们可以检查请求是否带有自动登录相关的Cookie。如果找到该Cookie,就从Cookie中解析出用户...

    Struts2学习笔记2012

    解决方法包括设置正确的字符编码和在web.xml中配置过滤器以处理输入流的字符编码。 #### 五、Struts模块包含 Struts支持模块化开发,允许将应用划分为多个逻辑上独立的模块。每个模块都有自己的配置文件(struts....

    通过xml配置搞定Struts重复提交问题

    TokenFilter是Struts中用来防止重复提交的一种常见方法。这个过滤器会在用户提交表单时生成一个唯一的令牌,并将其存储在用户的会话(session)中。当表单被提交时,服务器会检查这个令牌,如果令牌匹配且未被使用过...

    Struts2 Spring Hibernate的配置及登录实例(附源码)

    - 配置过滤器,如`struts2-convention-plugin`,以便自动匹配Action和结果页面。 2. **Spring配置** - 创建`applicationContext.xml`,定义Bean的配置,包括Action、Service、DAO等类的实例。 - 使用Spring的DI...

    struts2.0项目

    4. web.xml配置:配置Struts2的核心过滤器`&lt;filter-name&gt;struts2&lt;/filter-name&gt;`,以及其对应的过滤器类`&lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;`。...

    struts2工作流程

    2. **过滤器处理**:请求经过一系列过滤器(Filter),其中第一个通常是Struts2的核心过滤器——`StrutsPrepareAndExecuteFilter`。该过滤器负责初始化Struts2环境,并准备执行相应的Action。此外,还可能包括其他...

    struts2课件

    2. **Struts2架构**:了解Struts2框架的组件,如Filter Dispatcher(过滤器调度器)、Action类、Result、Interceptor(拦截器)等,它们在框架中的作用和相互协作方式。 3. **配置文件**:深入学习struts.xml配置...

    JSP选课系统

    这可能涉及到session管理,以及使用过滤器(Filter)来检查用户是否已登录。 7. **异常处理**: 在开发过程中,良好的错误和异常处理至关重要。开发者可能使用try-catch语句来捕获可能出现的问题,并提供友好的...

    JavaWebjwd.zip

    4. **Filter(过滤器)**:过滤器可以拦截请求和响应,进行预处理或后处理,如权限检查、字符编码转换等。熟悉filter链、doFilter方法以及在web.xml中的配置是学习过滤器的关键。 5. **Listener(监听器)**:监听...

    JavaEE教程

    过滤器(Filter)和监听器(Listener)是JavaEE中用于处理HTTP请求和响应的关键组件。过滤器可以对请求和响应进行预处理和后处理,而监听器则可以监听应用上下文和会话的状态变化,执行相应的逻辑。 #### 十、Struts2 ...

    JavaEE(权威)

    - **Filter 接口**:实现过滤器功能的关键接口。 - **一个例子**:创建过滤器来检查用户是否已登录。 #### 9.2 监听器 监听器用于监听应用程序的生命周期事件,如应用程序启动和停止。 ### 十、Struts2 #### ...

    JSP中用回车监听按钮事件兼容火狐 IE等主流浏览器

    2. **过滤器(Filter)和拦截器(Interceptor)**:过滤器是Java Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前对其进行预处理,并在响应返回给客户端之后进行后处理。而拦截器通常是在MVC框架...

Global site tag (gtag.js) - Google Analytics