程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 攔截JSP頁面,校驗是否已登錄

攔截JSP頁面,校驗是否已登錄

編輯:關於JSP

 最近使用struts2做項目,需要攔截JSP以校驗是否已經登,但struts2的過濾器鏈只能過濾action。後來發現在web.xml裡可以直接增加javax.servlet.Filter實現類的過濾器,可以過濾JSP。請看代碼 Filter實現類 [java]   <span style="font-size:18px;">package com.common;      import java.io.IOException;   import javax.servlet.Filter;   import javax.servlet.FilterChain;   import javax.servlet.FilterConfig;   import javax.servlet.ServletException;   import javax.servlet.ServletRequest;   import javax.servlet.ServletResponse;   import javax.servlet.http.HttpServlet;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpServletResponse;      public class LoginFilter extends HttpServlet implements Filter {                  private static final long serialVersionUID = 1L;              @Override         public void doFilter(ServletRequest request, ServletResponse response,                 FilterChain chain) throws IOException, ServletException {             HttpServletRequest req = (HttpServletRequest)request;             HttpServletResponse res = (HttpServletResponse)response;             String path = req.getContextPath();           String indexPath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+path+ "/pages/login.jsp";           if(req.getRequestURI().endsWith("login.jsp"))           {               chain.doFilter(request, response);                return;           }                      Object loginuser = req.getSession().getAttribute("<strong><span style="color:#ff0000;">loginSession</span></strong>");             if(loginuser == null){               res.sendRedirect(indexPath);                 return;             }           chain.doFilter(request, response);         }              @Override         public void init(FilterConfig arg0) throws ServletException {             // TODO Auto-generated method stub          }          }     </span>   登錄方法: [java]  <span style="font-size:18px;">  public String login()       {           Login login = new Login();                          //.......校驗登錄信息           ActionContext ctx = ActionContext.getContext();           Map<String, Object> session = ctx.getSession();           session.put("<strong><span style="color:#ff0000;">loginSession</span></strong>", login);           return "success";       }</span>    web.xml配置 [html]   <filter>          <filter-name>setlog</filter-name>          <filter-class>com.common.LoginFilter</filter-class>     </filter>     <filter-mapping>          <filter-name>setlog</filter-name>          <url-pattern>/pages/home.jsp</url-pattern>        <url-pattern>/pages/channel/*</url-pattern>        <url-pattern>/pages/content/*</url-pattern>        <url-pattern>/pages/product/*</url-pattern>        <url-pattern>/pages/vodtask/*</url-pattern>   </filter-mapping>     注意,如果頁面上使用了框架,則可能導致session超時後退出到登錄頁面,此時登錄頁面顯示在框架的某個子頁面,解決方法,在登錄頁面加入如下代碼即可。 [html]   <span style="font-size: 18px;">    <script language="javascript">              if (top != window)                  top.location.href = window.location.href;          </script></span>    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved