posts - 19,  comments - 4,  trackbacks - 0
          Filter過濾器的使用
          本篇文章是介紹javax.servlet包中Filter的幾個(gè)功能,一是字符編碼過濾,二是攔截指文件夾中的文件,實(shí)現(xiàn)登錄驗(yàn)證.實(shí)現(xiàn)以上兩個(gè)功能需以下幾個(gè)步驟:
          1、實(shí)現(xiàn)javax.servlet.Filter接口,編寫兩個(gè)類,如下:
          /**
          ?* 作用:過濾編碼
          ?*/
          package filter;
          import java.io.IOException;
          import javax.servlet.*;
          import javax.servlet.http.HttpServletRequest;
          public class EncodingFilter implements Filter
          {
          ??? protected FilterConfig filterConfig;
          ??? private String targetEncoding;
          ??? public EncodingFilter()
          ??? {
          ??????? targetEncoding = "gb2312";//直接初始化0912
          ??? }
          ??? public void init(FilterConfig filterconfig) throws ServletException
          ??? {
          ??????? filterConfig = filterconfig;
          ??????? //targetEncoding = filterconfig.getInitParameter("encoding");//web.xml掛參初始化
          ??? }
          ??? public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain)
          ??????? throws IOException, ServletException
          ??? {
          ??????? HttpServletRequest httpservletrequest = (HttpServletRequest)servletrequest;
          ??????? httpservletrequest.setCharacterEncoding(targetEncoding);
          ??????? System.out.println("使用" targetEncoding "對(duì)請(qǐng)求進(jìn)行編碼過濾");
          ??????? filterchain.doFilter(servletrequest, servletresponse);
          ??? }
          ??? public void setFilterConfig(FilterConfig filterconfig)
          ??? {
          ??????? filterConfig = filterconfig;
          ??? }
          ??? public void destroy()
          ??? {
          ??????? filterConfig = null;
          ??? }
          }
          /**
          ?* 作用:過濾外界非法的進(jìn)入頁(yè)面
          ?* 注意:使用該功能時(shí),一定要把登錄頁(yè)與被過濾文件夾設(shè)為同級(jí),否則會(huì)出現(xiàn)循環(huán)
          ?*/
          package filter;
          import java.io.IOException;
          import javax.servlet.*;
          import javax.servlet.http.*;
          public class ManageFilter implements Filter
          {
          ??? String LOGIN_PAGE;
          ??? protected FilterConfig filterConfig;
          ??? public ManageFilter()
          ??? {
          ??????? LOGIN_PAGE = "/login.jsp";
          ??? }
          ??? public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain)
          ??????? throws IOException, ServletException
          ??? {
          ??????? HttpServletRequest request = (HttpServletRequest) servletrequest;
          ??????? HttpServletResponse response = (HttpServletResponse) servletresponse;
          ??????? HttpSession session = request.getSession();
          ??????? String key = "";
          ??????? try
          ??????? {
          ??????????? //通過驗(yàn)證時(shí)在session中存的一個(gè)標(biāo)志
          ???? key = (String) session.getAttribute("key");
          ??????????
          ???????????
          ??????????? if (key!= null&&key.equals("ok"))
          ??????????? {
          ??????????????
          ??????????????? filterchain.doFilter(servletrequest, servletresponse);
          ??????????? }
          ??????????? else
          ??????????? {
          ??????????????? response.sendRedirect(LOGIN_PAGE);
          ??????????????? System.out.println("被攔截一個(gè)未認(rèn)證的請(qǐng)求");
          ??????????? }
          ??????? }
          ??????? catch (Exception exception)
          ??????? {
          ??????????? exception.printStackTrace();
          ??????? }
          ??? }
          ??? public void setFilterConfig(FilterConfig filterconfig)
          ??? {
          ??????? filterConfig = filterconfig;
          ??? }
          ??? public void destroy()
          ??? {
          ??????? filterConfig = null;
          ??? }
          ??? public void init(FilterConfig filterconfig)
          ??????? throws ServletException
          ??? {
          ??????? filterConfig = filterconfig;
          ??? }
          }
          2、在web.xml中做一些設(shè)置
          ?<filter>
          ???? <filter-name>code</filter-name>
          ???? <filter-class>filter.EncodingFilter</filter-class>
          ?</filter>
          ?
          ?<filter>
          ???? <filter-name>manage</filter-name>
          ???? <filter-class>filter.ManageFilter</filter-class>
          ?</filter>
          ?<filter-mapping>
          ???? <filter-name>code</filter-name>
          ???? <url-pattern>/*</url-pattern>
          ?</filter-mapping>
          ?
          ?<filter-mapping>
          ???? <filter-name>manage</filter-name>
          ???? <!-- <url-pattern>/ShuiBaoRHPWK_NEW/system/ruhepaiwukou/*</url-pattern>-->
          ???? <url-pattern>/servlets-examples/*</url-pattern>
          ?</filter-mapping>
          posted on 2007-01-05 13:51 公主她爹 閱讀(596) 評(píng)論(1)  編輯  收藏 所屬分類: Servlet Filter

          FeedBack:
          # re: javax.servlet.Filter 的應(yīng)用
          2011-07-09 11:31 | qcghdy

          <2007年1月>
          31123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類(19)

          隨筆檔案(19)

          相冊(cè)

          娛樂網(wǎng)站

          技術(shù)網(wǎng)站(Java)

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 宜春市| 无锡市| 福海县| 涟水县| 社会| 金乡县| 永康市| 安顺市| 阿巴嘎旗| 安仁县| 云南省| 桦川县| 阿合奇县| 逊克县| 扎鲁特旗| 南城县| 南部县| 普安县| 六盘水市| 色达县| 福鼎市| 丽水市| 尚志市| 正定县| 浦县| 陈巴尔虎旗| 余江县| 武威市| 崇左市| 怀柔区| 海南省| 莎车县| 宁津县| 剑阁县| 兴国县| 隆回县| 澳门| 长乐市| 宣武区| 南召县| 中方县|