过滤代码
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session=req.getSession();
String name=(String) session.getAttribute("name");
System.out.println(name);
if(session == null || session.getAttribute("name") == null)
request.getRequestDispatcher("/RedLogin.html").forward(request, response);
else
chain.doFilter(request, response);
}
检查登录的Servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("uname");
String password = request.getParameter("pname");
Authenticate authenticate = new Authenticate();
try {
if (authenticate.authenticator(username, password)) {
HttpSession session = request.getSession(true);
session.setAttribute("name", username);
RequestDispatcher dis = request.getRequestDispatcher("/welcome.jsp");
dis.forward(request, response);
} else {
response.sendRedirect("RedLogin.html");
}
} catch (Exception e) {
e.printStackTrace();
}
答案 0 :(得分:0)
这可能是因为过滤器的映射是针对任何url的,包括servlet,因此它永远不会进入servlet代码,而session.getAttribute()