web.xml配置如下
<filter>
<filter-name>userLogin</filter-name>
<filter-class>com.pwq.util.UserFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>userLogin</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>userLogin</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
攔截下來jsp和action的url。
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.dispatcher.FilterDispatcher;
public class UserFilter extends FilterDispatcher{
/*攔截器,發現沒有登錄跳到登錄頁面*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
String url = ((HttpServletRequest) request).getRequestURL().toString();
// System.out.println(url);
String temp = (String) ((HttpServletRequest) request).getSession().getAttribute("username");
if(url.endsWith("/paoBlog/") && temp != null) {
request.getRequestDispatcher("/mainPage.jsp").forward(request,response);
}
//登出logout,登陸login和驗證碼getyzm.action、getcaptcha.action都不進行攔截
else if (url.indexOf("login.jsp")>0 || url.endsWith("/paoBlog/") ||
url.indexOf("getcaptcha.action")>0 || url.indexOf("getyzm.action")>0 ||
(url.indexOf("login.action")>0 || url.indexOf("logout.action")>0)) {
chain.doFilter(request, response);
}
else if (temp == null) { //如果seesion不存在返回登陸頁面
System.out.println("還沒有登錄,跳轉到登陸界面。");
request.getRequestDispatcher("/login.jsp").forward(request,response);
}
else chain.doFilter(request, response);
}
}