国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

網站過濾器Filter

2019-11-10 20:33:41
字體:
來源:轉載
供稿:網友

——過濾器使用已經很久了,今天遇到了一個小問題,也就想順便寫一個關于過濾器的博文,記錄一下自己使用的感受。

        實際上,Filter與Servlet及其相似,區別只是FIlter的doFilter()方法里多了一個FilterChain的參數,通過該參數可以控制是否放行用戶的請求。網站有了過濾器十分的方便,可以通過過濾器來過濾這個用戶是否已經登陸,如果沒有登陸,那么將限制TA的訪問權限,而且過濾器的設置以及配置都比較簡單。下面通過一個登陸過濾器的代碼簡單說一下過濾器的使用:

[java] view plain copy PRint?/**  *登陸過濾器  */    public class LoginFilter implements Filter {        @Override      public void destroy() {        }      @Override      public void doFilter(ServletRequest req, ServletResponse resp,              FilterChain chain) throws IOException, ServletException {          HttpServletRequest hsq = (HttpServletRequest)req;          //取得session中的loginUser對象          User user = (User)hsq.getSession().getAttribute("loginUser");          if(user==null || "".equals(user)){              //如果用戶沒有登錄,那么將會直接跳轉到登陸頁面              ((HttpServletResponse)resp).getWriter().write("<scrjsp'</script>");  //          ((HttpServletResponse)resp).sendRedirect("/index.jsp");                        }else{              chain.doFilter(req, resp);          }      }      @Override      public void init(FilterConfig arg0) throws ServletException {        }    }   

         上面的這個過濾器就會過濾掉所有未登陸的用戶,讓TA們跳轉到登陸頁面去登陸。如果要這個登陸過濾器起作用,還需要在web.xml文件中進行配置:

[html] view plain copy print?<!-- 配置過濾器 -->    <filter>      <filter-name>LoginFilter</filter-name>      <filter-class>com.common.LoginFilter</filter-class>    </filter>    <filter-mapping>      <filter-name>LoginFilter</filter-name>      <url-pattern>/user/*</url-pattern>    </filter-mapping>           此處表示這個任何用戶訪問/user/*下面的路徑將會通過此過濾器,如果沒有登陸,SESSION中沒有user,那么將會跳轉到登陸頁面。如果需要對多個地址進行配置(在SSM框架中,需要對每個控制器進行配置),那么正確的配置方法是(N個一樣的):

[html] view plain copy print?<filter>      <filter-name>LoginFilter</filter-name>      <filter-class>com.common.LoginFilter</filter-class>    </filter>    <filter-mapping>      <filter-name>LoginFilter</filter-name>      <url-pattern>/user/*</url-pattern>    </filter-mapping>    <filter-mapping>      <filter-name>LoginFilter</filter-name>      <url-pattern>/abc/*</url-pattern>    </filter-mapping>           不知道大家有沒有注意到上面過濾器的這行被注釋的代碼,正常情況下使用此代碼就可以完成跳轉任務:

((HttpServletResponse)resp).sendRedirect("/index.jsp");

         而下面這行代碼是:

((HttpServletResponse)resp).getWriter().write("<script>window.parent.location.href='/index.jsp'</script>");

         最下面這行代碼就是為了解決我這次遇到的小問題的。因為需要調整的頁面是frameset框架的,所以有很多鏈接定義為跳轉到框架下的某個地方,這樣如果使用上面的那種跳轉,將會是局部跳轉,達不到應有的效果,只有使用下面的方式返回一句js代碼,然后執行,整體跳轉,這樣才能滿足效果。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜梁县| 星子县| 青海省| 奉化市| 韶关市| 白河县| 彝良县| 武定县| 霞浦县| 武宁县| 巴彦县| 周口市| 漳州市| 汝阳县| 土默特左旗| 东丽区| 观塘区| 葵青区| 江西省| 乐至县| 文成县| 沐川县| 自贡市| 临漳县| 松江区| 从化市| 银川市| 和林格尔县| 桂东县| 克拉玛依市| 栾川县| 蓝山县| 双城市| 岢岚县| 油尖旺区| 府谷县| 临朐县| 阳曲县| 桂阳县| 乐昌市| 罗源县|