[英]why is the session.getAttribute(“name”) in Filter code is always null in the code below?
Filter code 过滤代码
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 to check login: 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();
}
这可能是因为过滤器的映射是针对任何url的,包括servlet,所以它永远不会进入执行session.getAttribute()的servlet代码中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.