Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从筛选器重定向到JSP:Session vs Request时传递属性_Java_Jsp_Redirect_Request_Servlet Filters - Fatal编程技术网

Java 从筛选器重定向到JSP:Session vs Request时传递属性

Java 从筛选器重定向到JSP:Session vs Request时传递属性,java,jsp,redirect,request,servlet-filters,Java,Jsp,Redirect,Request,Servlet Filters,在一个过滤器中,我试图将过期会话发送回一个登录页面,其中包含一条用户必须登录的消息。我更喜欢将消息附加到请求对象,而不是会话对象,这样我就不必担心以后会删除消息 在过滤器内部使用时: catch (NullPointerException exc) { String message = "You must log in to access this site."; url += "/login.jsp"; request.setAttribute("message",

在一个过滤器中,我试图将过期会话发送回一个登录页面,其中包含一条用户必须登录的消息。我更喜欢将消息附加到请求对象,而不是会话对象,这样我就不必担心以后会删除消息

在过滤器内部使用时:

catch (NullPointerException exc)

{

    String message = "You must log in to access this site.";
    url += "/login.jsp";
    request.setAttribute("message", message);
    httpResponse.sendRedirect(url); 
}
登录页面不显示该消息(消息为空)。但是,当我使用:

session.setAttribute("message", message);
该消息在登录页面上显示得很好

在servlet中,我可以使用request对象附加和显示消息。我注意到只有使用过滤器才有这种困难

为什么会发生这种情况,并且可以预防?如果在从筛选器重定向时必须使用会话,那么在JSP端删除消息的最佳方法是什么?

请改用

我总是让任何询问RequestDispatcher vs SendRedirect的人阅读关于的这篇文章

另见

你也是

 request.getRequestDispatcher("/login.jsp").forward(request, httpResponse);