JavaWeb_day06_Filter過濾器

本文爲博主辛苦總結,但願本身之後返回來看的時候理解更深入,也但願能夠起到幫助初學者的做用.

轉載請註明 出自 : luogg的博客園 謝謝配合!

day06

request 對象經常使用方法

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

response 對象經常使用方法

這裏寫圖片描述

302 : 頁面跳轉html

Servlet過濾器

1.統一整個webApp應用的編碼方式
2.禁止瀏覽器緩存webApp動態資源
3.控制瀏覽器緩存靜態資源
4.實現URL權限控制
5.過濾敏感內容web

web-xml中設置 : url-pattern /* 過濾全部頁面瀏覽器

chain.doFilter(request, response);//放行,過濾攔截緩存

filter生命週期 :

啓動服務器的時候建立而且初始化,
訪問頁面的時候調用doFilter方法,
關閉服務的時候生命結束.服務器

filter對象只會建立一次,init方法只會執行一次,destroy方法也只會執行一次session


filter 應用

一.設置頁面字體,還有post表單提交的時候亂碼.

1.建立filter,而且配置web-xml
2.將web-xml中 設置爲/*
在filter-class下邊加入 : 由於通常總的控制頁面編碼格式是在web-xml修改的
post

<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);
    }
相關文章
相關標籤/搜索