其他分享
首页 > 其他分享> > servlet中重定向和转发中的地址问题

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">

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

标签:do,http,重定向,URL,地址,stuff,转发,foo,servlet
来源: https://www.cnblogs.com/zlaoyao/p/16395221.html