浏览 2582 次
锁定老帖子 主题:Struts2.0
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-03-21
<filter> <filter-name>struts</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 但是,该Filter一个问题,就是从页面传到后台的中文经过这个过滤器后会变成乱码,为了解决这个问题,需要重写这个过滤器,最简单的方法是写一个类继承FilterDispatcher,在src目录下创建com.filter包,在包中建立NewFilterDispatcher类,继承FilterDispatcher,代码如下: package com.filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import org.apache.struts2.dispatcher.FilterDispatcher; public class NewFilterDispatcher extends FilterDispatcher { private static String encoding = "GB2312"; public void init(FilterConfig filterConfig) throws ServletException { super.init(filterConfig); String encodingParam = filterConfig.getInitParameter("encoding"); if (encodingParam != null && encodingParam.trim().length() != 0) { encoding = encodingParam; } } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); super.doFilter(request, response, chain); } } 这时web.xml中相应的地方就改为: <filter> <filter-name>struts</filter-name> <filter-class> com.filter.NewFilterDispatcher </filter-class> <init-param> <param-name>encoding</param-name> <param-value>GB2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 说明: (1)该类是FilterDispatcher类的子类。 (2)该类有个成员变量,名为encoding,默认是“GB2312”。 (3)注意在web.xml中,<filter>标签里多了<init-param>标签,顾名思义,它的作用是初始化一个参数,里面定义了参数名和参数值。因此,在子类中,需要重写init方法,其中: String encodingParam = filterConfig.getInitParameter("encoding"); 就是从web.xml中读出了参数名为encoding的值,然后赋给子类中的encoding成员。 (4)重写dofilter方法,加上: request.setCharacterEncoding(encoding); 然后再调用父类的dofilter方法,这样就完成了编码的转换。 (5)如果需要使用其它编码(如“UTF-8”等),只要改变<param-value>中的值即可。 这样就把struts2.0加入到工程中了。 除了在web.xml中配置以外,struts2.0还有几个自己的配置文件,其中最重要的两个是struts.properties和struts.xml,都要放到src目录下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-24
果然是入门讨论
|
|
返回顶楼 | |