posts - 19,  comments - 4,  trackbacks - 0
          Filter過濾器的使用
          本篇文章是介紹javax.servlet包中Filter的幾個功能,一是字符編碼過濾,二是攔截指文件夾中的文件,實現登錄驗證.實現以上兩個功能需以下幾個步驟:
          1、實現javax.servlet.Filter接口,編寫兩個類,如下:
          /**
          ?* 作用:過濾編碼
          ?*/
          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 "對請求進行編碼過濾");
          ??????? filterchain.doFilter(servletrequest, servletresponse);
          ??? }
          ??? public void setFilterConfig(FilterConfig filterconfig)
          ??? {
          ??????? filterConfig = filterconfig;
          ??? }
          ??? public void destroy()
          ??? {
          ??????? filterConfig = null;
          ??? }
          }
          /**
          ?* 作用:過濾外界非法的進入頁面
          ?* 注意:使用該功能時,一定要把登錄頁與被過濾文件夾設為同級,否則會出現循環
          ?*/
          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
          ??????? {
          ??????????? //通過驗證時在session中存的一個標志
          ???? key = (String) session.getAttribute("key");
          ??????????
          ???????????
          ??????????? if (key!= null&&key.equals("ok"))
          ??????????? {
          ??????????????
          ??????????????? filterchain.doFilter(servletrequest, servletresponse);
          ??????????? }
          ??????????? else
          ??????????? {
          ??????????????? response.sendRedirect(LOGIN_PAGE);
          ??????????????? System.out.println("被攔截一個未認證的請求");
          ??????????? }
          ??????? }
          ??????? 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中做一些設置
          ?<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 公主她爹 閱讀(592) 評論(1)  編輯  收藏 所屬分類: Servlet Filter

          FeedBack:
          # re: javax.servlet.Filter 的應用
          2011-07-09 11:31 | qcghdy
          很好  回復  更多評論
            

          <2011年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(1)

          隨筆分類(19)

          隨筆檔案(19)

          相冊

          娛樂網站

          技術網站(Java)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东乌珠穆沁旗| 丘北县| 彭山县| 柳州市| 牡丹江市| 蓬安县| 都江堰市| 开封市| 昌黎县| 衡南县| 平泉县| 临海市| 彰化县| 元阳县| 鸡西市| 神农架林区| 静海县| 四平市| 东明县| 泰和县| 诏安县| 江陵县| 利辛县| 慈溪市| 平山县| 志丹县| 岳阳县| 密云县| 嘉黎县| 镇巴县| 北碚区| 通化县| 余庆县| 原平市| 卓尼县| 固镇县| 沂水县| 历史| 永安市| 清新县| 札达县|