javaweb學習22:過濾器Filter
阿新 • • 發佈:2022-04-01
-
過濾器Filter:用來過濾網站的資料
-
-
登入驗證;
-
-
Filter開發步驟:
-
導包;(包不要導錯)
import javax.servlet.Filter;
-
編寫過濾器:實現Filter介面;
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
}
public void destroy() {
}
-
-
回顧JDBC操作事務:
-
開始事務;
-
回滾事務;
-
提交事務;
-
-
程式碼案例:編寫過濾器
//過濾器處理類
public class CharacterEncodingFilter implements Filter {
//初始化:web伺服器啟動,就初始化了,隨時等待過濾物件出現;
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("CharacterEncodingFilter已經初始化了");
}
//過濾器執行邏輯
/**
* Chain:鏈
* 1,過濾器中的所有程式碼,在過濾特定的請求的時候都會執行;
* 2,必須要讓過濾器繼續同行: chain.doFilter(request,response);
*
*/
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 是放行的作用
chain.doFilter(request,response);//讓我們的請求繼續走,如果不寫,程式到這裡就停止了
System.out.println("CharacterEncodingFilter執行前後");
}
//銷燬:web伺服器關閉的時候,過濾器會銷燬
public void destroy() {
System.gc();
System.out.println("CharacterEncodingFilter銷燬");
}
}
-
程式碼案例:編寫Servlet實現
//編寫Servlet處理類
public class ShowServlet extends HttpServlet {
-
web.xml配置:
-
只要是/servlet/的任何請求,都會經過這個過濾器
-