servlet中重定向和转发中的地址问题

在进行servlet重定向和转发遇到的一些疑惑。

问题:

​ 重定向和转发的路径是怎样变化的?

回答:

假如通过http://localhost:8080/myApp/cool/bar.do请求到达该方法所属的Servlet

重定向

  1. response.sendRedirect("foo/stuff.do")

生成地址:原来请求URL的目录 + 参数生成完整的URL

​ 即: http://localhost:8080/myApp/cool/foo/stuff.do

  1. response.sendRedirect("/foo/stuff.do")

    生成地址:web服务器地址 + 参数生成完整的URL

    ​ 即:http://localhost:8080/foo/stuff.do

  2. response.sendRedirect("http://www.xxx.com")

    生成地址:URL地址

    ​ 即:http://www.xxx.com

转发

  1. request.getRequestDispatcher("foo/stuff.do")

    生成地址:原来请求URL的目录 + 参数生成完整的URL

    ​ 即: http://localhost:8080/myApp/cool/foo/stuff.do

  2. 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有两种方法:

  1. <form class="loginForm" action="login.do">

  2. <form class="loginForm" action="/MyProject/login.do">

    或者<form class="loginForm" action="${pageContext.request.contextPath}/login.do">

总的来说: / 代表服务器的路径

posted @   z-laoyao  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示