2011-11-01 76 views
5

我想从一个servlet重定向JSP页面。 所有的JSP页面都在Web Content之下。不是under Web-INF。 我有一个调用该JSP页面的问题。我得到了404错误。问题与路径。从servlet重定向jsp RequestDispatcher

如何在Web内容下调用jsp页面?

ServletContext context = getServletContext(); 
       RequestDispatcher dispatcher = context.getRequestDispatcher("/thankYou.jsp"); 
       dispatcher.forward(request,response); 

谢谢你。

问题已解决!

+2

我解决了它使用像这样RequestDispatcher requestDispatcher; \t \t \t \t requestDispatcher = request.getRequestDispatcher(“/ thankYou.jsp”); \t \t \t \t requestDispatcher.forward(request,response); – kitokid

回答

13

我解决了使用RequestDispatcher这样的问题:

RequestDispatcher requestDispatcher; 
requestDispatcher = request.getRequestDispatcher("/thankYou.jsp"); 
requestDispatcher.forward(request, response); 
7

稍微清洁剂来写这段代码的办法是:

request.getRequestDispatcher("/thankyou.jsp").forward(request, response); 
0

使用SendDirect如果你想与JSP页面的工作

response.sendRedirect("/thankyou.jsp"); 

这是比使用RequestDispatc更简单的东西她不与doPost()一起工作。

+0

当然它不会 - POST请求不会被发送回“客户端”的“视觉输出”。但是您不会重定向到JSP,而是重定向到为Servlet映射的路径(因此该站点是由客户端通过GET再次请求的)。 – UniversE

+0

通过请求调度程序,我们可以将请求和响应对象从中间页面转发到下一页,这是不可能的。 –

0

使用响应对象使用'sendRedirect()'方法的更好方法。

您可以编写

response.sendRedirect("./newpage.jsp"); 

这将发送控制你的'newpage.jsp页面。

+0

不,这是最终的错误方式。这会向客户端发送HTTP 302,并将其重定向到JSP页面,这使得Servlet非常无用。如果您将jsp放入“WEB-INF/view”目录中,例如无论如何它都无法工作。 – UniversE

0

当您将您的请求转发到的jsp的java scriptlet中有错误时,会发生此错误。
例如,我打电话给<%request.getAttribute(“user”); %> 而问题解决了,当我使用<%request.getParameter(“user”)%>