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 公主她爹 閱讀(596) 評論(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)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邵武市| 邯郸市| 东莞市| 凤阳县| 阿城市| 渭南市| 嘉定区| 阿荣旗| 西乡县| 泊头市| 唐河县| 兴业县| 梁河县| 昌吉市| 明水县| 泊头市| 山西省| 西平县| 呼玛县| 汾阳市| 珲春市| 东安县| 龙海市| 玉龙| 论坛| 商丘市| 普兰店市| 云林县| 阿克苏市| 莱西市| 五家渠市| 怀集县| 沈阳市| 台中市| 佳木斯市| 钦州市| 雅江县| 昌都县| 峨眉山市| 隆林| 绍兴县|