一、笔记
2.
3.
4.使用Filter实现统一全站编码,处理整个项目的中文乱码问题
二、撸代码
使用Filter实现统一全站编码,处理整个项目的中文乱码问题
CharacterFileter
package cn.lixuquan.anli02;
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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet Filter implementation class CharacterFileter
*/
@WebFilter("/*")
public class CharacterFileter implements Filter {
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//1.处理响应中文乱码问题
HttpServletRequest req = (HttpServletRequest )request;
HttpServletResponse resp = (HttpServletResponse)response;
resp.setContentType("text/html;charset=utf-8");
//2.处理请求中的中文乱码问题
String method = req.getMethod();
if("post".equalsIgnoreCase(method))
{
//3.处理post请求
req.setCharacterEncoding("utf-8");
}
//4.处理get请求
//使用增强的request
CharacterRequest chRequest = new CharacterRequest(req);
//5.放行
chain.doFilter(chRequest, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
CharacterRequest:(增强的request)
package cn.lixuquan.anli02;
/**
* 利用装饰者模式,来增强request中的getParameter()方法
*/
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class CharacterRequest extends HttpServletRequestWrapper {
//1.引用被增强对象
HttpServletRequest request;
public CharacterRequest(HttpServletRequest req) {
super(req);
this.request = req;
// TODO Auto-generated constructor stub
}
public String getParameter(String name)
{
String value = request.getParameter(name);
if(null == value)
{
return null;
}
String method = request.getMethod();
//处理get请求的中文乱码问题
if("get".equalsIgnoreCase(method))
{
try {
value = new String(value.getBytes("ISO-8859-1"),"utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return value;
}
}
测试表单省略
三、分享与交流
最后有兴趣一起交流的,可以关注我的公众号:这里你能够学到很实用的技巧,不是常用的我不说,公众号回复提取码即可获取以下学习资料啦啦啦啦,喜欢就拿去吧!!
(链接时常会失效,若出现此类情况,可以加我微信:17722328325(加时请备注:学习资料))
-
Java web从入门到精通电子书
-
Python机器学习电子书
-
Python400集(北京尚学堂)
-
JavaScript项目案例、经典面试题
-
Java300集(入门、精通)
-
Java后端培训机构录集(同事培训内部提供)
-
java重要知识pdf文档(价值连城呀呀,不收藏你会后悔的)