Tag: requestdispatcher

何时提交或刷新servlet响应?

根据javadoc: in- request.getRequestDispatcher(“/Test”).forward(request,response); 应该在将响应提交给客户端之前调用forward(在刷新响应主体输出之前)。响应缓冲区中的未提交输出在转发之前自动清除。 当这个响应被提交或被刷新时,我感到困惑? 这是printwriter println写的。

如何为request.getRequestDispatcher()指定.JSP文件的路径?

我对request.getContextPath()的含义感到困惑。 我的文件布局如下: MyServer/WebContent: /Resources/MyImage.jpg /Resources/Scripts/MyScript.js /WEB-INF/JSP/MyPage.jsp 在MyPage.jsp我能够找到JavaScript和图像 和 由此我得出结论, ${pageContext.request.contextPath}动态解析为“WebContent”文件夹,我理解这将解析为此文件夹,无论它的名称是什么。 那很有效。 但是,从所有这一点我得出结论,在我的.java代码中, request.getContextPath()也会动态地解析为“WebContent”。 但是当我尝试使用request.getContextPath()+”/WEB-INF/JSP/MyPage.jsp”形成的字符串从.java代码转发到MyPage.jsp ,无法找到JSP; 这导致404错误 – “请求的资源(/MyServer/WEB-INF/JSP/MyPage.jsp)不可用”。 如果我调用”/WEB-INF/JSP/MyPage.jsp”我们就会启动JSP页面。 有人可以解释为什么预先挂起的request.getContextPath()导致它失败,还有什么我应该用来确保始终解析.JSP的路径?

如何将requestdispatcher转发到远程URL

我有一个从远程服务器使用的HTML页面http://www.mywebapp.com/sample.html 。 我在同一个HTML表单中将HTML URL作为隐藏表单传递给 在我的servlet中,我得到了隐藏的URL http://www.mywebapp.com/sample.html并将其存储为String fieldValue = http://www.mywebapp.com/sample.html 现在当我尝试RequestDispatcher并将页面转发到这样的隐藏URL时, RequestDispatcher rd = req.getRequestDispatcher(fieldValue); rd.forward(req, resp); 我收到ERROR 404 。 任何人都可以建议我解决这个问题。 EDITED 我真正想做的是,从远程服务器,HTML页面将请求我的REST Web服务。 Web服务的响应将以JSON输出。 现在我想将此JSON响应发送到请求的HTML表单(即到远程服务器HTML页面) 任何人都可以提出解决这个问题的想法。 我们将不胜感激。

RequestDispatcher是否在一个servlet容器中处理多个webapps?

RequestDispatcher是否可以处理多个Web应用程序? 我问,因为我有一个单一的webapp工作正常,使用RequestDispatcher而不是重定向,所以在显示错误和反馈消息时状态不会丢失。 但是我现在需要在两个webapps之间拆分一些function,因此初始调用是从webapp1上托管的网页进行的,调用webapp2最终将用户返回到webapp1上托管的页面。 显然,如果webapps和webapp2在不同的网站上使用RequestDispatcher是不可能的,但是如果两个webapps都部署在servlet容器的同一个实例中(tomcat 7) 更新 得到请求调度程序部分工作,如在答案中解释,但我无法检索放入我的webapp2中的数据,这是我使用它的原因 即 调用webapp2,进行一些处理,然后调度到webapp1上的jsp protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession userSession = request.getSession(true); String emailAddress = …… String nextPage = /finish.jsp userSession.setAttribute(“DATA”, emailAddress); ServletContext otherContext = getServletContext().getContext(“/webapp1”); otherContext.getRequestDispatcher(nextPage).forward(request, response); } webapp2 jsp文件包含 … Email() … 但始终显示null 更新2 ** 我想知道我是否误解了crossContext =“true”实际上是做什么的。 它是否可以在不同的webapps中使用相同的HttpSession,或者只是将ServletContext从一个webap可用到另一个webap,从而允许一个webapp看到另一个webapp的HttpSessions? 我开始认为我在做什么是一个坏主意,因为我一直热衷于使用vanilla servlet设置,并且从不想将自己绑定到特定的实现。 我想如果我解释为什么我首先需要拆分webapps,这可能会有所帮助。 我有一个webapp(webapp1),这是一个关于我开发的产品的网站,以及使用Google […]