Java 提交响应后无法调用sendRedirect()
我有一个过滤器来检查会话是否存在。如果它不存在,我会使用Java 提交响应后无法调用sendRedirect(),java,jsp,servlets,servlet-filters,Java,Jsp,Servlets,Servlet Filters,我有一个过滤器来检查会话是否存在。如果它不存在,我会使用response.sendRedirect(),将用户重定向到登录页面 在某些网页上它是有效的,在其他网页上它是无效的。我收到此错误在提交响应后无法调用sendRedirect() 似乎如果我在jsp页面中删除一些代码部分,如,它就会工作。 但是,正如我所说,在其他jsp页面中,即使我有这样的代码,它也可以工作。 我真的不明白出了什么问题 我在这个论坛上读了一些类似的帖子,但我没有找到解决办法 这是我的过滤器 public class Se
response.sendRedirect()
,将用户重定向到登录页面
在某些网页上它是有效的,在其他网页上它是无效的。我收到此错误在提交响应后无法调用sendRedirect()
似乎如果我在jsp页面中删除一些代码部分,如
,它就会工作。
但是,正如我所说,在其他jsp页面中,即使我有
这样的代码,它也可以工作。
我真的不明白出了什么问题
我在这个论坛上读了一些类似的帖子,但我没有找到解决办法
这是我的过滤器
public class SessionFilter implements Filter {
public void destroy() {}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
try {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getServletPath();
HttpSession session = request.getSession(false);
/*caso in cui il webserver non abbia ancora creato la sessione*/
if (null == session) {
reindirizza = true;
} else {
/*caso in cui il webserver abbia creato la sessione e l'utente sia loggato*/
if(session.getAttribute("loggato")!=null && session.getAttribute("loggato").equals("si")) {
reindirizza = false;
}
/*caso in cui il webserver abbia creato la sessione e l'utente non sia loggato*/
else {
reindirizza = true;
}
}
chain.doFilter(req, res);
if(reindirizza) {
response.sendRedirect("Gestione.jsp?message=Sessione scaduta o non valida. Effettuare il Login");
}
} catch(Exception e) {
System.out.println(e.getMessage());
}
}
public void init(FilterConfig config) throws ServletException { }
}
我还经常遇到相同类型的问题,即在提交响应后无法调用sendRedirect()/forward
这个错误有点误导性,但实际发出的错误是jsp中jstl标记的一些不正确使用。例如,标记没有正确终止。因此,检查您的所有标记是否处于正确的形状这里,您需要关闭jsp中所有打开的out.println和out.flush语句。这应该可以解决您的问题。在
响应之后,我也遇到了同样的问题。sendRedirect(“jsppage”)
您应该像
return;
在
sendredirect
方法之后添加上述语句,则没有问题。您应该显示一些相关的代码。.是否尝试调试?我尝试过,但我不知道在哪里设置检查点。如果我删除了一段html代码,比如div,那么在我删除了很多代码之后,它就会工作。但是在我的html代码中没有任何错误。我用w3c验证器检查了它。这似乎是一个“随机错误”,我将部分代码复制到html代码较少的页面中,没有问题。似乎错误与页面中编写的代码量有关。