Java 为什么过滤器代码中的session.getAttribute(“name”)在下面的代码中总是为空?
过滤代码Java 为什么过滤器代码中的session.getAttribute(“name”)在下面的代码中总是为空?,java,jsp,session,servlets,filter,Java,Jsp,Session,Servlets,Filter,过滤代码 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req=(HttpServletRequest)request; HttpSession session=req.getSession(); S
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();
}
这可能是因为过滤器的映射是针对任何url的,包括servlet,所以它永远不会进入servlet代码,而servlet代码执行session.getAttribute()