1. 程式人生 > 其它 >Java Web 學習 Day09 過濾器

Java Web 學習 Day09 過濾器

Java Web 學習 Day09 過濾器

1、Filter過濾器

過濾器、用來過濾網站的資料

  • 處理中文亂碼
  • 登陸驗證

2、使用Filter過濾器

實現Filter介面,重寫對應的方法即可

import javax.servlet.*;
import java.io.IOException;

public class CharacterEncodingFilter implements Filter {
    //初始化:Web伺服器啟動,就已經開始初始化了,隨時等待過濾物件出現
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("CharacterEncodingFilter開始");
    }
    //chain : 鏈
    /*
    * 1.過濾器中的所有程式碼,在過濾特定請求的時候都會執行
    * 2.必須要讓過濾器繼續執行
    *   chain。doFilter();
    * */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=UTF-8");

        System.out.println("CharacterEncodingFilter執行前...");
        chain.doFilter(request,response);   //讓我們的程式繼續進行,不過不寫 程式到這就就被攔截停止
        System.out.println("CharacterEncodingFilter執行後....");
    }
    //銷燬:web伺服器關閉時會銷燬
    @Override
    public void destroy() {
        System.out.println("CharacterEncodingFilter銷燬");
    }
}

在web.xml中配置Filter

  <filter>
    <filter-name>showfilter</filter-name>
    <filter-class>com.lantian.filter.CharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>showfilter</filter-name>
    <!-- 只要是 /servlet的任何請求,都會經過這個過濾器-->
    <url-pattern>/servlet/*</url-pattern>
  </filter-mapping>

3、Filter實現許可權攔截

使用者登入之後才能進入主頁!登出登入後無法進去

1、使用者登入之後,向Session中放入使用者的資料

2、進入主頁的時候要判斷使用者是否已經登陸;要求:使用過濾器實現

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    Object user_session = request.getSession().getAttribute("USER_SESSION");
    if(user_session==null){
        response.sendRedirect("/error.jsp");
    }

    filterChain.doFilter(servletRequest, servletResponse);
}