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);
}
}