1

我有

root/logged/form.jsp
root/servlet
root/logged/form.jsp

我有 jsp 页面logged/form.jsp,它将表单提交给 servlet action="../update"。现在我想添加一些参数来请求并将其转发给logged/form.jsp但它不起作用并且仅在根上下文中向我显示 form.jsp root/servlet。请帮助我应该将我的请求转发到哪个网址。我不能使用 sendRedirect 来保留请求对象。

我已经在我的 servlet中尝试了 forward( logged/form.jsp) 和 forward( /logged/form.jsp) 和 forward( )/form.jsp

4

3 回答 3

0

尝试始终使用被解释为相对于上下文根的绝对路径(以 / 开头)。

于 2009-11-18T17:47:13.727 回答
0

/logged/form.jsp应该是对的。我建议阅读 appserver 日志。很有可能有IllegalStateException: response already committed内部。

等等,等等,您的实际问题是您想更改访问者在地址栏中看到的 URL?

如果是这样,那么不,前锋不可能做到这一点。然后我建议从另一端解决问题。form.jsp只需在文件夹中“隐藏”/WEB-INF并始终使用 servlet 来获取/发布表单。

伪:

protected void doGet(request, response) {
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}

protected void doPost(request, response) {
    doYourSubmitThingHere();
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}

将此 servlet 映射到url-patternof 上/logged/form,替换<form method="post" action="/servlet">by <form method="post" action="/logged/form">,然后您可以使用/调用它http://example.com/logged/form

您还可以更进一步,采用页面控制器模式并利用它HttpServletRequest#getPathInfo()来获取请求路径(以及 JSP 文件的路径),这样您就不需要为每个 JSP 编写一个新的 servlet。

于 2009-11-18T18:47:08.583 回答
0
req.getRequestDispatcher("../ïndex.jsp").forward(req,resp);
于 2016-10-21T17:04:27.823 回答