`

struts1的所有.do请求使用过滤器,处理中文显示乱码

阅读更多
写道
web.xml

XML code

<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>
包名.SetCharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>



官方过滤器:自己放置在某个一个包下

Java code

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;
/**
* 过滤器,设置文字编码格式
*/
public class SetCharacterEncodingFilter implements Filter {


// ----------------------------------------------------- Instance Variables


/**
* The default character encoding to set for requests that pass through
* this filter.
*/
protected String encoding = null;


/**
* The filter configuration object we are associated with. If this value
* is null, this filter instance is not currently configured.
*/
protected FilterConfig filterConfig = null;


/**
* Should a character encoding specified by the client be ignored?
*/
protected boolean ignore = true;


// --------------------------------------------------------- Public Methods


/**
* Take this filter out of service.
*/
public void destroy() {

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

}


/**
* Select and set (if specified) the character encoding to be used to
* interpret request parameters for this request.
*
* @param request The servlet request we are processing
* @param result The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

// Conditionally select and set the character encoding to be used
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}

// Pass control on to the next filter
chain.doFilter(request, response);

}


/**
* Place this filter into service.
*
* @param filterConfig The filter configuration object
*/
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 Methods


/**
* Select an appropriate character encoding to be used, based on the
* characteristics of the current request and/or filter initialization
* parameters. If no character encoding should be set, return
* <code>null</code>.
* <p>
* The default implementation unconditionally returns the value configured
* by the <strong>encoding</strong> initialization parameter for this
* filter.
*
* @param request The servlet request we are processing
*/
protected String selectEncoding(ServletRequest request) {

return (this.encoding);

}


}


这就OK了。

 

分享到:
评论

相关推荐

    struts2中文乱码

    - **解决方案**:使用Servlet过滤器来统一设置请求的字符编码。 - **具体操作**: 1. 借用Tomcat自带的`SetCharacterEncodingFilter`过滤器。 2. 在`web.xml`文件中添加以下配置: ```xml &lt;filter-name&gt;Set...

    struts,ajax乱码解决方案

    - **Struts**:在Struts框架中,解决乱码通常需要使用过滤器。可以创建一个自定义过滤器,如`SetCharacterEncodingFilter`,并在web.xml中配置。配置时,避免使用通配符`*`,而是具体指定到如`.do`或`...

    java中文乱码终极处理方案.docx

    为此,可以使用过滤器(Filter)来统一处理请求的编码。在Tomcat的`jsp-examples`目录下找到`SetCharacterEncodingFilter.java`,将其引入到自己的项目中,并配置过滤器映射,例如: ```xml &lt;filter-name&gt;...

    java中文乱码的解决方法

    对于使用Struts1框架的应用程序,可以通过扩展Apache的`ActionServlet`来解决中文乱码问题。 1. **自定义ActionServlet**: 创建一个自定义的Servlet类,继承自`ActionServlet`,并在其`service`方法中增加设置...

    Struts2学习笔记

    - **流程概述**:用户提交请求,Struts2核心过滤器接收并处理该请求,根据配置文件找到对应的Action,执行Action中的方法,然后根据返回的结果选择合适的视图进行展示。 1. **请求接收**:用户提交请求,Struts2的...

    struts2.33 中文学习笔记

    配置Struts2的开发环境,需要将Struts2的jar包放入`WEB-INF/lib`目录,然后在`web.xml`中配置Struts2过滤器。过滤器的配置如下: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng....

    如何在Spring中解决中文乱码的方法.doc

    在这个例子中,过滤器被应用到所有扩展名为`.jsp`和`.do`的URL上。 **注意事项** - 确保过滤器配置在其他过滤器之前加载,以保证其能正确处理字符编码。 - 如果使用了Struts框架,需要确保Struts的配置文件(如`...

    AJAX乱码解决大全.doc

    值得注意的是,过滤器的映射路径应避免使用通配符`*`,明确指定需要编码处理的请求路径,如`.do`或`servletActionName`,并在初始化参数中指定编码格式。 - **JSP页面头部设置**:在每个JSP页面的开头添加`;charset...

    Ajax乱码解决方案(docx)

    - 使用过滤器(如`SetCharacterEncodingFilter`)设定请求和响应的编码为UTF-8,确保数据在传输过程中不会出现乱码。 - 对于JSP页面,可以在页面顶部添加`;charset=UTF-8" %&gt;`来设定页面编码。 - 对于Struts,...

    Struts+Hibernate+Spring的整合方法

    配置过滤器映射到所有.do请求。 9. **处理只读模式异常**:由于OpenSessionInViewFilter将Session设为只读模式,所以在进行写操作时需要调整。可以通过Spring的声明式事务管理,使相关方法受事务控制。配置...

    ssh中struts2,spring,各配置说明

    3. **字符编码过滤器**:确保请求和响应的字符编码一致,避免乱码问题。 ```xml &lt;filter-name&gt;characterEncodingFilter &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter &lt;param-name&gt;...

    java中SSH框架主要说明SSH各部分的作用

    -- 配置编码过滤器 --&gt; &lt;filter-name&gt;Spring character encoding filter &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter ... &lt;filter-name&gt;Spring character encoding filter ...

    ssh(structs,spring,hibernate)框架中的上传下载

    SimpleNativeJdbcExtractor是效率最高的抽取器实现类,但具体到apache的BasicDataSource连接池,它封装了所有JDBC的对象,这时就需要使用CommonsDbcpNativeJdbcExtractor了。Spring针对几个著名的Web服务器的数据源...

    中文处理问题

    然后,针对不同的URL模式,如`.do`、`.jsp`等,进行过滤器映射,确保所有请求都能被正确处理。 此外,还可以在JSP页面中使用以下方式设置字符编码: 1. `&lt;% request.setCharacterEncoding("GBK"); %&gt;`:在JSP页面中...

    spring mvc 入门介绍

    - **作用**: 类似于 Struts2 中的核心过滤器,用于转发请求给其他组件进行处理。 **2. HandlerMapping** - **功能**: 分析客户端请求的 URL 并映射到合适的控制器 (Controller)。 - **作用**: 根据 URL 路径确定...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics