日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

filter 作用

發布時間:2023/10/11 综合教程 104 老码农
生活随笔 收集整理的這篇文章主要介紹了 filter 作用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

 過濾器

filter用于攔截用戶請求,在服務器作出響應前,可以在攔截后修改request和response,這樣實現很多開發者想得到的功能。

filter是一個可以復用的代碼片段,可以用來轉換HTTP請求、響應和頭信息。Filter不像Servlet,它不能產生一個請求或者響應,它只是修改對某一資源的請求,或者修改從某一的響應。

一個過濾器是一個可以傳送請求或修改響應的對象。過濾器并不是servlet,他們并不實際創建一個請求。他們是請求到達一個servlet前的預處理程序,和/或響應離開servlet后的后處理程序。一個過濾器能夠:
·在一個servlet被調用前截獲該調用
·在一個servlet被調用前檢查請求
·修改在實際請求中提供了可定制請求對象的請求頭和請求數據
·修改在實際響應中提供了可定制響應對象的響應頭和響應數據
·在一個servlet被調用之后截獲該調用
 
    一個過濾器以作用于一個或一組servlet,零個或多個過濾器能過濾一個或多個servlet。一個過濾器需要實現java.servlet.Filter接口,并定義它的三個方法:
1.              void init(FilterConfig config) throws ServletException:在過濾器執行service前被調用,以設置過濾器的配置對象。
2.              void destroy();在過濾器執行service后被調用。
3.              Void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) throws IOException,ServletException;執行實際的過濾工作。
 
服務器調用一次init(FilterConfig)以為服務準備過濾器,然后在請求需要使用過濾器的任何時候調用doFilter()。FilterConfig接口檢索過濾器名、初始化參數以及活動的servlet上下文。服務器調用destory()以指出過濾器已結束服務。過濾器的生命周期和servelt的生命周期非常相似 ——在Servlet API 2.3 最終發布稿2號 中最近改變的。先前得用setFilterConfig(FilterConfig)方法來設置生命周期。
 
在doFilter()方法中,每個過濾器都接受當前的請求和響應,而FilterChain包含的過濾器則仍然必須被處理。doFilter()方法中,過濾器可以對請求和響應做它想做的一切。(就如我將在后面討論的那樣,通過調用他們的方法收集數據,或者給對象添加新的行為。)過濾器調用
chain.doFilter()將控制權傳送給下一個過濾器。當這個調用返回后,過濾器可以在它的doFilter()方法的最后對響應做些其他的工作;例如,它能記錄響應的信息。如果過濾器想要終止請求的處理或得對響應的完全控制,則他可以不調用下一個過濾器。
 

常見用法

處理全站中文亂碼問題

實現自動登錄

過濾敏感詞匯

壓縮網頁

選擇性讓瀏覽器緩存

這幾種功能的實現采用同樣的原理,那就是使用包裝模式或動態代理增強request或response對象的功能。

Servlet和filter的區別

1,servlet 流程是短的,url傳來之后,就對其進行處理,之后返回或轉向到某一自己指定的頁面。它主要用來在 業務處理之前進行控制.
2,filter 流程是線性的, url傳來之后,檢查之后,可保持原來的流程繼續向下執行,被下一個filter, servlet接收等,而servlet 處理之后,不會繼續向下傳遞。filter功能可用來保持流程繼續按照原來的方式進行下去,或者主導流程,而servlet的功能主要用來主導流程。
filter可用來進行字符編碼的過濾,檢測用戶是否登陸的過濾,禁止頁面緩存等。

demo演示

步驟一:新建comment.jsp頁面

  1. <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4. <title>評論</title>
  5. </head>
  6. <body>
  7. <form action="comment" method="post">
  8. <fieldset>
  9. <legend>評論</legend>
  10. 請輸入評論:<textarea name="comment"
  11. style="vertical-align:middle;
  12. width:140px;height:55px"></textarea><Br>
  13. <input type="submit" value="發表評論" />
  14. </fieldset>
  15. </form>
  16. </body>
  17. </html>

步驟二:新建CommentServlet.java文件

  1. package web;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.HttpServlet;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. public class CommentServlet extends HttpServlet {
  9. public void service(HttpServletRequest request,
  10. HttpServletResponse response)
  11. throws ServletException, IOException {
  12. request.setCharacterEncoding("UTF-8");
  13. response.setContentType("text/html;charset=UTF-8");
  14. PrintWriter out = response.getWriter();
  15. //獲取評論內容
  16. String str = request.getParameter("comment");
  17. //顯示評論內容
  18. out.println("<h3>評論內容:" + str + "</h3>");
  19. out.close();
  20. }
  21. }

步驟三:新建CommentFilter類

  1. package web;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.Filter;
  5. import javax.servlet.FilterChain;
  6. import javax.servlet.FilterConfig;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletRequest;
  9. import javax.servlet.ServletResponse;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. public class CommentFilter1 implements Filter{
  13. private String illegalWord;
  14. /**
  15. * 容器刪除過濾器實例之前調用,只執行一次
  16. */
  17. public void destroy() {
  18. }
  19. /**
  20. * 用于處理請求的主要方法
  21. */
  22. public void doFilter(ServletRequest request, ServletResponse response,
  23. FilterChain chain) throws IOException, ServletException {
  24. HttpServletRequest req = (HttpServletRequest)request;
  25. HttpServletResponse resp = (HttpServletResponse)response;
  26. req.setCharacterEncoding("UTF-8");
  27. resp.setContentType("text/html;charset=UTF-8");
  28. PrintWriter out = resp.getWriter();
  29. String comment = req.getParameter("comment");
  30. if(comment.indexOf("damn")!=-1){
  31. //有敏感詞匯
  32. out.print("<h3>評論內容已關閉</h3>");
  33. }else{
  34. //沒有敏感詞匯則向后處理,交給其他過濾器或Servlet
  35. chain.doFilter(req, resp);
  36. }
  37. }
  38. /**
  39. * 容器啟動之后,創建過濾器實例
  40. * 然后調用init方法,只會調用一次
  41. * 容器會將已經創建好的FilterConfig對象作為參數傳入
  42. * 可以從該參數中獲取初始化的配置信息
  43. */
  44. public void init(FilterConfig filterConfig) throws ServletException {
  45. illegalWord = filterConfig.getInitParameter("illegalWord");
  46. System.out.println("Filter1:init is runnming... " + illegalWord);
  47. }
  48. }

步驟四:配置CommentFilter過濾器

web.xml文件代碼:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <display-name></display-name>
  8. <!-- 過濾器 -->
  9. <filter>
  10. <filter-name>filter1</filter-name>
  11. <filter-class>web.CommentFilter1</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>filter1</filter-name>
  15. <url-pattern>/comment</url-pattern>
  16. </filter-mapping>
  17. <!-- Servlet -->
  18. <servlet>
  19. <servlet-name>CommentServlet</servlet-name>
  20. <servlet-class>web.CommentServlet</servlet-class>
  21. </servlet>
  22. <servlet-mapping>
  23. <servlet-name>CommentServlet</servlet-name>
  24. <url-pattern>/comment</url-pattern>
  25. </servlet-mapping>
  26. </web-app>

步驟五:部署應用,輸入評論查看結果

      

總結

以上是生活随笔為你收集整理的filter 作用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产卡一卡二卡三无线乱码新区 | 男人的天堂黄色 | 在线久久| 伊人影音| 久久国内视频 | 你懂得在线视频 | 黄页网址大全免费观看 | 新av在线 | 亚洲精品777| 午夜视频黄 | 国内自拍在线 | 四虎影视在线 | 国产乱码精品一区二区三区五月婷 | 国产在线观看一区 | 97精品人妻一区二区三区 | 欧美一二三区视频 | www黄色 | 哺乳期给上司喂奶hd | 另类激情 | 免费在线观看日韩av | 亚洲成熟女性毛茸茸 | 亚洲欧美色图视频 | 青青草中文字幕 | 网站在线观看你懂的 | 我把护士日出水了视频90分钟 | 亚洲AV不卡无码一区二区三区 | 狂野欧美性猛交免费视频 | 熟妇人妻中文av无码 | 欧美日韩资源 | 中文字幕三区 | 国 产 黄 色 大 片 | 97精品超碰一区二区三区 | 日本老师巨大bbw丰满 | 欧美黄色特级片 | 免费在线看视频 | 麻豆国产视频 | 成人激情av| 亚洲精品综合精品自拍 | 国产视频一区在线播放 | 日本少妇bbwbbw精品 | 国产精品成人免费一区久久羞羞 | 天天看天天摸 | 欧美亚洲色综久久精品国产 | 国产精品91在线观看 | av三级网站 | 国产乱码视频 | 久色免费视频 | 日韩精品一区二区亚洲av | 日韩成人av免费在线观看 | 成人午夜视频在线播放 | 成人三级图片 | 亚州av网 | av资源免费 | 亚洲色图一区二区三区 | 2018av| 国产视频观看 | 精品少妇久久 | 亚洲性图一区二区三区 | 色视频免费 | 中国a毛片 | 久久国产秒 | 免费久久视频 | 久久久1 | 国产视频网站在线观看 | 色视频免费在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 日日摸夜夜添狠狠添久久精品成人 | 久久久久人妻精品色欧美 | 午夜污污 | 日韩精品在线第一页 | www.我爱av| 亚洲av成人一区二区国产精品 | 久久久久久久久久国产精品 | 干欧美少妇 | 成年人的免费视频 | 国产一区二区波多野结衣 | 熟妇毛片| 成人在线免费观看网站 | 美女三级黄色片 | 亚洲激情区 | 亚洲精品在线观看av | 超碰免费在线 | 你懂的91 | 色视频网 | av中文字幕一区二区 | 偷偷操99| 国产资源视频 | 精品国产黄色 | 亚洲小说图片区 | 日本草逼视频 | 日韩av视屏 | 国产精品天美传媒 | 污片网站在线观看 | 日本成人一区 | 一区二区视频观看 | 国产激情一区 | 91麻豆成人精品国产 | 日本污视频在线观看 | 蜜桃免费在线视频 |