只有登录成功后才可以访问的页面,该页面是不能用网址访问的。
比如:学生登录页面登录成功后转到学生信息页面,但是学生信息页面是用网址直接访问不到的。否则要登录页面干什么。
那现在就来说一下怎样用网址访问不到登录后的页面,即令牌。
首先想到过滤器,其次再想到正则表达式
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.HttpServletRequest;
public class LingPai implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain fileChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String usr = (String) req.getSession().getAttribute("USER");
String uri = req.getRequestURI();
/**
* 1.所有.jsp结尾
* 2.所有Servlet结尾
* 3.除过login.jsp和LoginServlet
*/
String regex = "(.+\\.jsp)|(.+servlet)";
//当访问登录后的页面,必须有登录成功的令牌,不然就跳到登录页面
if(uri.matches(regex) && !uri.endsWith("login.jsp") && !uri.endsWith("loginservlet")){
if(usr==null){
request.setAttribute("ERROR","请输入信息");
//返回到验证页面
request.getRequestDispatcher("/backend/login.jsp").forward(request, response);
}
}
fileChain.doFilter(request, response);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}