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">
总的来说: / 代表服务器的路径
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!