JAVA-WEB 过滤器Filter 全局处理中文乱码

JSP

<%@ 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>
	
	<form action="${pageContext.request.contextPath }/filterDemo" method="get">
		<input type="text" name="name">
		<input type="submit" value="提交"> 
	
	</form>
	
	
<%-- 	<a href="${pageContext.request.contextPath }/filterDemo?name='张三'">测试编码过滤器</a> --%>
<%-- 	<a href="${pageContext.request.contextPath }/filterDemo">测试页面</a> --%>
	
	
	
	
	
</body>
</html>

servlet

package web;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FilterDemo extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		//获得传来的参数
		String name = request.getParameter("name");
		//测试服务器端收到的name
		System.out.println(name);
		//测试返回到浏览器的name
		response.getWriter().write(name);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}


flter

package web;

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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EncondeFilter implements Filter{
	
	@Override
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
			throws IOException, ServletException {
		//将参数1,2强转为HttpServletRequest与HttpServletResponse
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		//设置request与response的编码(tomcat8已解决get上传中文问题,所以不用再自己实现httpservletresponsewraper)
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=utf-8");
		//执行过滤
		chain.doFilter(request, response);
		
	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}


	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}


web.xml设置

  <filter>
  	<filter-name>EncondeFilter</filter-name>
  	<filter-class>web.EncondeFilter</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>EncondeFilter</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

猜你喜欢

转载自blog.csdn.net/alexzt/article/details/81063710