在开发jsp项目的时候,通常会遇到从前台传的值在后台servlet接收的时候是乱码,即使在jsp页面上设置了字符的编码格式。
解决方法有很多种,有一种方法是给每一个request设置字符集,不过感觉很麻烦。
设置字符集方法
String keyWords = new String(request.getParameter("keyWords").trim().getBytes("iso-8859-1"),"UTF-8");我这里的解决方法是写一个Filter。
过滤器的代码如下:
package com;
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 FilterEncoding implements Filter {
private FilterConfig filterConfig = null;
public FilterEncoding() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null
|| !(request.getCharacterEncoding().equals("UTF-8"))) {
try {
request.setCharacterEncoding("UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
chain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
public void destroy() {
}
public void init(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
}
写完之后,还得在web.xml中配置一下,加上的配置如下:
<filter>
<filter-name>filterEncoding</filter-name>
<filter-class>com.FilterEncoding</filter-class>
</filter>
<filter-mapping>
<filter-name>filterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
本文介绍了一种通过Filter解决JSP项目中从前台传参到后台Servlet时出现乱码问题的方法,具体步骤包括设置Filter在请求中自动设置字符集,避免手动设置的繁琐。此外,文章还提供了Filter的实现代码和在web.xml中的配置示例。
236

被折叠的 条评论
为什么被折叠?



