Java Web 學習 Day09 過濾器
阿新 • • 發佈:2021-08-14
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); }