servlet中重定向和转发中的地址问题
作者:互联网
在进行servlet重定向和转发遇到的一些疑惑。
问题:
重定向和转发的路径是怎样变化的?
回答:
假如通过
http://localhost:8080/myApp/cool/bar.do
请求到达该方法所属的Servlet
重定向
response.sendRedirect("foo/stuff.do")
生成地址:原来请求URL的目录 + 参数生成完整的URL
即: http://localhost:8080/myApp/cool/foo/stuff.do
-
response.sendRedirect("/foo/stuff.do")
生成地址:web服务器地址 + 参数生成完整的URL
即:
http://localhost:8080/foo/stuff.do
-
response.sendRedirect("http://www.xxx.com")
生成地址:URL地址
即:
http://www.xxx.com
转发
-
request.getRequestDispatcher("foo/stuff.do")
生成地址:原来请求URL的目录 + 参数生成完整的URL
即:
http://localhost:8080/myApp/cool/foo/stuff.do
-
request.getRequestDispatcher("/foo/stuff.do")
生成地址:Web应用的根目录(项目目录) + 参数生成完整的URL
即:
http://localhost/myApp/foo/stuff.do
表单请求
项目名称:MyProject
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>cn.laoyao.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
<!--这里的/login.do表示的地址为: http://localhost:8080/smbms_again/login.jsp -->
</servlet-mapping>
则jsp页面提交表单给servlet有两种方法:
-
<form class="loginForm" action="login.do">
-
<form class="loginForm" action="/MyProject/login.do">
或者
<form class="loginForm" action="${pageContext.request.contextPath}/login.do">
总的来说: / 代表服务器的路径
标签:do,http,重定向,URL,地址,stuff,转发,foo,servlet 来源: https://www.cnblogs.com/zlaoyao/p/16395221.html