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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

網(wǎng)站過濾器Filter

2019-11-10 20:05:17
字體:
供稿:網(wǎng)友

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

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

[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)){              //如果用戶沒有登錄,那么將會直接跳轉(zhuǎn)到登陸頁面              ((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們跳轉(zhuǎn)到登陸頁面去登陸。如果要這個登陸過濾器起作用,還需要在web.xml文件中進(jì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>           此處表示這個任何用戶訪問/user/*下面的路徑將會通過此過濾器,如果沒有登陸,SESSION中沒有user,那么將會跳轉(zhuǎn)到登陸頁面。如果需要對多個地址進(jìn)行配置(在SSM框架中,需要對每個控制器進(jìn)行配置),那么正確的配置方法是(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>           不知道大家有沒有注意到上面過濾器的這行被注釋的代碼,正常情況下使用此代碼就可以完成跳轉(zhuǎn)任務(wù):

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

         而下面這行代碼是:

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

         最下面這行代碼就是為了解決我這次遇到的小問題的。因?yàn)樾枰{(diào)整的頁面是frameset框架的,所以有很多鏈接定義為跳轉(zhuǎn)到框架下的某個地方,這樣如果使用上面的那種跳轉(zhuǎn),將會是局部跳轉(zhuǎn),達(dá)不到應(yīng)有的效果,只有使用下面的方式返回一句js代碼,然后執(zhí)行,整體跳轉(zhuǎn),這樣才能滿足效果。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 利川市| 大厂| 廊坊市| 贞丰县| 北安市| 大安市| 牙克石市| 许昌县| 偏关县| 始兴县| 洪雅县| 乌兰察布市| 鄂尔多斯市| 乌鲁木齐县| 杭锦旗| 察隅县| 邯郸市| 延寿县| 安吉县| 和林格尔县| 沽源县| 兴仁县| 郁南县| 玉龙| 万载县| 韶山市| 浦城县| 镇原县| 崇明县| 昌平区| 甘洛县| 永兴县| 河北区| 贵南县| 唐河县| 虹口区| 淄博市| 阿拉善右旗| 三明市| 贵南县| 当涂县|