本文爲博主辛苦總結,但願本身之後返回來看的時候理解更深入,也但願能夠起到幫助初學者的做用.
轉載請註明 出自 : luogg的博客園 謝謝配合!
302 : 頁面跳轉html
1.統一整個webApp應用的編碼方式
2.禁止瀏覽器緩存webApp動態資源
3.控制瀏覽器緩存靜態資源
4.實現URL權限控制
5.過濾敏感內容web
web-xml中設置 : url-pattern /* 過濾全部頁面瀏覽器
chain.doFilter(request, response);//放行,過濾攔截
緩存
啓動服務器的時候建立而且初始化,
訪問頁面的時候調用doFilter方法,
關閉服務的時候生命結束.服務器
filter對象只會建立一次,init方法只會執行一次,destroy方法也只會執行一次session
1.建立filter,而且配置web-xml
2.將web-xml中
在filter-class下邊加入 : 由於通常總的控制頁面編碼格式是在web-xml修改的
<init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param>
public class EncodingFilter implements Filter { private String encoding = "utf-8"; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //4.在doFilter方法下邊,設置頁面編碼格式還有post請求表單編碼格式 request.setCharacterEncoding(encoding);//設置post表單中文亂碼 response.setContentType("text/html;charaset="+encoding); chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { //3.在Filter頁面定義一個`private String encoding = "utf-8";` //在Filter頁面,init方法下邊 : 調用xml中設置的encoding String en = fConfig.getInitParameter(encoding); if(en != null && !"".equals(encoding)){ encoding = en; } } }
最後在用戶登陸界面,用戶名輸入中文,在控制檯測試就行了.測試
清理緩存以後,第一次只能夠進去index.html輸入用戶名密碼界面,當輸入正確密碼以後,進入
主頁,可是在此直接輸入主頁地址,仍是能夠直接進來,是由於session還存在,能夠獲取到session name.字體
public class UrlFilter implements Filter { /** * 用戶登陸校驗,排除登陸頁面和校驗頁面 */ public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse rep = (HttpServletResponse) response; String uri = req.getRequestURI(); System.out.println(uri); HttpSession session = req.getSession(); Object obj = session.getAttribute("name"); if (uri.endsWith("index.html") || uri.endsWith("CheckUser")) {//uri以xxx結尾 chain.doFilter(request, response); } else { if (obj == null) { rep.sendRedirect("/wx_web_day02/index.html"); } else { chain.doFilter(request, response); } } } public void init(FilterConfig fConfig) throws ServletException { } }
response.sendRedirect("BSessionTest");//重定向使用了兩次過濾器
request.getRequestDispatcher("BSessionTest").forward(request, response);//內部轉發使用了一次過濾器編碼
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String s = request.getParameter("userName"); if(s.indexOf('豬')!=-1){ s = s.replace('豬', '*'); request.setAttribute("userName", s); System.out.println(s); } chain.doFilter(request, response); }