写道
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了。
分享到:
相关推荐
- **解决方案**:使用Servlet过滤器来统一设置请求的字符编码。 - **具体操作**: 1. 借用Tomcat自带的`SetCharacterEncodingFilter`过滤器。 2. 在`web.xml`文件中添加以下配置: ```xml <filter-name>Set...
- **Struts**:在Struts框架中,解决乱码通常需要使用过滤器。可以创建一个自定义过滤器,如`SetCharacterEncodingFilter`,并在web.xml中配置。配置时,避免使用通配符`*`,而是具体指定到如`.do`或`...
为此,可以使用过滤器(Filter)来统一处理请求的编码。在Tomcat的`jsp-examples`目录下找到`SetCharacterEncodingFilter.java`,将其引入到自己的项目中,并配置过滤器映射,例如: ```xml <filter-name>...
对于使用Struts1框架的应用程序,可以通过扩展Apache的`ActionServlet`来解决中文乱码问题。 1. **自定义ActionServlet**: 创建一个自定义的Servlet类,继承自`ActionServlet`,并在其`service`方法中增加设置...
- **流程概述**:用户提交请求,Struts2核心过滤器接收并处理该请求,根据配置文件找到对应的Action,执行Action中的方法,然后根据返回的结果选择合适的视图进行展示。 1. **请求接收**:用户提交请求,Struts2的...
配置Struts2的开发环境,需要将Struts2的jar包放入`WEB-INF/lib`目录,然后在`web.xml`中配置Struts2过滤器。过滤器的配置如下: ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher.ng....
在这个例子中,过滤器被应用到所有扩展名为`.jsp`和`.do`的URL上。 **注意事项** - 确保过滤器配置在其他过滤器之前加载,以保证其能正确处理字符编码。 - 如果使用了Struts框架,需要确保Struts的配置文件(如`...
值得注意的是,过滤器的映射路径应避免使用通配符`*`,明确指定需要编码处理的请求路径,如`.do`或`servletActionName`,并在初始化参数中指定编码格式。 - **JSP页面头部设置**:在每个JSP页面的开头添加`;charset...
- 使用过滤器(如`SetCharacterEncodingFilter`)设定请求和响应的编码为UTF-8,确保数据在传输过程中不会出现乱码。 - 对于JSP页面,可以在页面顶部添加`;charset=UTF-8" %>`来设定页面编码。 - 对于Struts,...
配置过滤器映射到所有.do请求。 9. **处理只读模式异常**:由于OpenSessionInViewFilter将Session设为只读模式,所以在进行写操作时需要调整。可以通过Spring的声明式事务管理,使相关方法受事务控制。配置...
3. **字符编码过滤器**:确保请求和响应的字符编码一致,避免乱码问题。 ```xml <filter-name>characterEncodingFilter <filter-class>org.springframework.web.filter.CharacterEncodingFilter <param-name>...
-- 配置编码过滤器 --> <filter-name>Spring character encoding filter <filter-class>org.springframework.web.filter.CharacterEncodingFilter ... <filter-name>Spring character encoding filter ...
SimpleNativeJdbcExtractor是效率最高的抽取器实现类,但具体到apache的BasicDataSource连接池,它封装了所有JDBC的对象,这时就需要使用CommonsDbcpNativeJdbcExtractor了。Spring针对几个著名的Web服务器的数据源...
然后,针对不同的URL模式,如`.do`、`.jsp`等,进行过滤器映射,确保所有请求都能被正确处理。 此外,还可以在JSP页面中使用以下方式设置字符编码: 1. `<% request.setCharacterEncoding("GBK"); %>`:在JSP页面中...
- **作用**: 类似于 Struts2 中的核心过滤器,用于转发请求给其他组件进行处理。 **2. HandlerMapping** - **功能**: 分析客户端请求的 URL 并映射到合适的控制器 (Controller)。 - **作用**: 根据 URL 路径确定...
\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}{...