Servlet中一些路径问题(客户端路径和服务端路径)

xiaoxiao2021-02-28  39

路径问题分为两种一种是客户端路径,一种是服务端路径,下面分别来介绍

1.客户端

在进行客户端跳转和服务器端跳转时,都需要指定目标资源的URL,

如果这个路径以“”开始。在客户端跳转当中“”代表的是应用服务器根目录,即“http://localhost:8080/”, 

response.sendRedirect("")

以上这些属于客户端路径,其中“/”为http://localhost:8080,“/”后面需跟项目名以及资源路径

2.服务器端

而在服务器端跳转当中代表的是应用程序根目录,即“http://localhost:8080/项目名/”

request.getRequestDispatcher("/xxx").forward()

其中“/”为项目根目录,比如http://loaclhost:8080/projectName,“/”后面只需要跟项目根目录下资源路径即可

两者区别

1.redirect 方式可以跨应用访问,forward 只能在同一个应用中跳转。

2.forward 客户端访问服务器,服务器找到要跳转的相应URL并执行返回给客户端。客户端的地址栏显示的是原始URL

   redirect 客户端访问服务器,服务器找到要跳转的URL并将URL发给客户端,再由客户端对新的URL重新发送请求。客

   户端的地址栏显示的是第二次请求的URL

3.数据的传输:在request中的数据,forward可以访问,redirect不行,因为redirect已经是一个新的请求。

相对路径的理解:

forward中"/"相对于web应用.从http://localhost:8080/Test/gw/page.jsp中转发  <jsp:forward page="OtherPage.jsp"/>在JSP页面被解析后转换成pageContext.forward("OtherPage.jsp");  "/OtherPage.jsp"提交到http://localhost:8080/Test/OtherPage.jsp  "OtherPage.jsp"提交到http://localhost:8080/Test/gw/OtherPage.jsp    <form action="/ddd"> 和 response.sendRedirect("/ddd"); 相对于服务器根路径.  假设转发代码包含于注册的servlet-url为/ggg/tt;jsp为/ggg/tt.jsp:  绝对路径:response.sendRedirect("http://www.brainysoftware.com")发送http://www.brainysoftware.com  根路径:response.sendRedirect("/ooo")发送至http://localhost:8080/ooo  相对路径:response.sendRedirect("ooo")发送至http://localhost:8080/Test/ggg/ooo,

转载请注明原文地址: https://www.6miu.com/read-2614676.html

最新回复(0)