我创建了一个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吗?
如果是,那么我需要做什么?
如果没有那么为什么?
由于
答案 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);