本文主要是使用J2EE过滤器解决get请求中文乱码问题中文.......
1.使用maven添加相关依赖:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>2.核心过滤器,先通过init方法获取配置参数,然后判断当前是否为get请求,如果是get请求,将request进行包装,否则就不进行包装public class CharactorFilter implements Filter{
private String encoding;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
RequestWrapper rw = null;if(request.getMethod().equals("GET")){
//只对get请求做包装
rw = new RequestWrapper(request, encoding);
//将包装的request作为参数
chain.doFilter(rw, resp);
}else{
chain.doFilter(req, resp);
}
}
/**
* web容器启动的时候会调用初始化方法
*/
public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
}
}3.servlet里面没什么,只是读取参数,然后输出
public class ParamServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = -1628437374336667343L;
@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
System.out.println("name="+name);
}
}4.web.xml文件配置<filter>
<filter-name>charactorFilter</filter-name>
<filter-class>cn.edu.hbut.zw.filter.CharactorFilter</filter-class>
<!-- 设置改filter的初始化参数,即使用什么编码 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charactorFilter</filter-name><!-- 设置这个过滤路径,此时只对paramServlet的访问路径进行过滤 -->
<servlet-name>paramServlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>paramServlet</servlet-name>
<servlet-class>cn.edu.hbut.zw.servlet.ParamServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>paramServlet</servlet-name>
<url-pattern>/paramServlet</url-pattern>
</servlet-mapping>5.jsp页面发送get请求
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title>
</head>
<body>
<a href="paramServlet?name=张三">张三</a>
</body>
</html>6.使用tomcat进行发布,访问jsp页面,点击即可

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



