一、筆記
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文檔(價值連城呀呀,不收藏你會後悔的)