如果转发

时间:2015-05-13 16:30:39

标签: java jsp servlets browser forward

我创建了一个Web应用程序MyApp

我有一个JSP roleAdd.jsp,其表单提交到RoleAdd.do网址。

<form id="form_role_add" method="post" action="RoleAdd.do">
   <label id="label_role_name">Role Name: </label>
   <input type="text" id="role_name" name="role_name">
   <label id="label_role_desc">Role Desc: </label>
   <input type="text" id="role_desc" name="role_desc">
   <button type="submit" id="button_add" name="button_add">Add</button>
</form>

web.xml我将RoleAdd.do网址映射到RoleAddServlet servlet。

<servlet>
   <servlet-name>RoleAddServlet</servlet-name>
   <servlet-class>com.myapp.web.servlet.RoleAddServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>RoleAddServlet</servlet-name>
   <url-pattern>/RoleAdd.do</url-pattern>
</servlet-mapping>

RoleAddServlet servlet中,我将转发回roleAdd.jsp

RequestDispatcher view = request.getRequestDispatcher("roleAdd.jsp");
view.forward(request, response);

现在我在浏览器中输入http://localhost:8080/MyApp/roleAdd.jsp。 JSP已加载。我在表单中输入数据,然后单击“提交”按钮。它转到RoleAddServlet servlet,然后转发回roleAdd.jsp。唯一的问题是浏览器现在正在显示http://localhost:8080/MyApp/RoleAdd.do

bowser有可能显示http://localhost:8080/MyApp/roleAdd.jsp吗? 如果是,那么我需要做什么? 如果没有那么为什么?

由于

2 个答案:

答案 0 :(得分:0)

将来自servlet的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。此方法允许一个servlet对请求进行初步处理,并允许另一个资源生成响应。将不在请求调度程序中创建新的请求对象。如果您想更改网址,则必须使用request.sendRedirect(String url)forward(ServletRequest request,ServletResponse response)无法实现。如果您想通过重定向传递参数,请执行以下操作:YourPageName.jsp?name=nameYouEntered 我希望这会对你有所帮助。

答案 1 :(得分:0)

通过以下行解决问题:

response.sendRedirect(request.getContextPath()+"/report.jsp");

注意:请勿使用以下代码行进行重定向。

RequestDispatcher RequetsDispatcherObj1 = request.getRequestDispatcher("/report.jsp");
RequetsDispatcherObj1.forward(request, response);