java - 小服务程序 : Cannot forward after response has been committed

标签 java servlets geolocation response.redirect forward

我正在处理根据 geo-location 呈现内容的 servlet 页面,我想同时使用 sendRedirectforward ;例如;您从 France 浏览 example.com/aPage.jsp;首先,我希望 servlet 将您重定向到 example.com/fr/aPage.jsp,然后将您转发到 resources 页面。

这是我的 servlet 中的内容:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  ....
  response.sendRedirect(REDIRECT_URL_BASED_ON_GEO);
  // after redirect forward the resources page
  RequestDispatcher view = request.getRequestDispatcher(RESOURCES_PAGE);
  view.forward(request, response);
  ...
}

但是我得到:

java.lang.IllegalStateException: Cannot forward after response has been committed

我知道错误出现是因为我不能同时使用sendRedirectforward,但我不知道如何没有这个就可以实现我想要的(如上所述)。

有什么帮助吗?

最佳答案

 response.sendRedirect(REDIRECT_URL_BASED_ON_GEO);
  // after redirect forward the resources page

在那行之后,您的回复开始写入 clinet。

并且您正在尝试向其中添加其他数据。

The server has already finished writing the response header and is writing the body of the content, and which point you are trying to write more to the header - of course it cant rewind.

所以,处理servlet时的拇指规则是

redirectforward 添加 return 语句之前完成您的逻辑。因此执行到此结束。

关于java - 小服务程序 : Cannot forward after response has been committed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18211497/

相关文章:

java - ServletContext - 应用程序范围的 session 对象返回 null

java - 运行 servlet 显示错误

postgresql - 如何在postgis中将多个点转换为多点

javascript - 通过位置验证用户 JAVASCRIPT

java - 是否可以提示或强制用户使用 JNLP 升级他们的 JVM?

java - C 就像在 java 中使用整数一样?

java - 无法从 Jsp 文件中的 servlet 接收响应

javascript - JSON 获取地理位置未在 HTML 中返回值

java - 多线程阻塞工作线程

java - Apache POI XSSFPivotTable setDefaultSubtotal