`

相对路径、绝对路径、部署路径

    博客分类:
  • J2EE
url 
阅读更多
1. <form action="abc.do" method="post">*********</form>,并且该页面的访问地址是http://localhost:8080/yaso/login
   <form action="/abc.do" method="post">*********</form>,并且该页面的访问地址是http://localhost:8080/yaso/login
    此处可以使用相对路径或者绝对路径,其中相对路径是相对于当前访问的页面。当提交表单后,浏览器地址栏中的信息变为http://localhost:8080/yaso/abc.do
    如果使用绝对路径,则"/"是指服务器的根而非应用的根。如果将上述表单改为action="/abc.do",则当提交表单后,浏览器地址栏中的信息变为http://localhost:8080/abc.do
    如果要使用绝对路径可以使用getContextPath()方法。

2. 在web.xml中的<servlet-mapping>中的<url-pattern>标记中只能使用绝对路径,即必须要 以"/"开头。可以这样理解:一个应用对应于一个web.xml,所以这里的绝对路径表示应用的根,而不是服务器的根。(一个特殊情况就是 在<url-pattern>中使用模式匹配的*.do,但仍然应该理解成从/开始。)

3.RequestDispatcher view = request.getRequestDispatcher("/abc.jsp");
   RequestDispatcher view = request.getRequestDispatcher("abc.jsp");
    这里可以使用相对路径和绝对路径。相对路径是当执行到该代码所在的Servlet的时候地址栏上显示的路径。
    如果使用绝对路径,则"/"表示应用的根。

4.RequestDispatcher view = getServletContext().getRequestDispatcher("/abc.jsp");
    这里必须使用绝对路径,"/"表示应用的根。可以这么理解:在ServletContext上调用请求转发,如果使用相对路径,则无法得知到底相对于该应用的什么位置,只能根据绝对路径来判断。由于是在应用上下文上调用的方法,所以"/"就表示应用的根。

5.servletContext中的getResourceAsStream(String),其中的参数应该是以"/"开头的绝对路径,其中"/"表示应用的根。

6.<a href="value">绝对 URL - 指向另一个站点(比如 href="http://www.example.com/index.htm")
相对 URL - 指向站点内的某个文件(href="index.htm"),这里站点就是你的工程的名字。
这里一定要留意页面中是否有
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><base href="<%=basePath%>">

引用
<base> 标签为页面上的所有链接规定默认地址或默认目标。

通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。

使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。
也就是说这个相对路径是相对于basePath,也就是你的项目名的。如果我们把这些去掉,就是把你当前的页面的最后一级替换,即
<a href ="non-ui/index.jsp">non-ui</a>
是将
http://localhost:8080/MyStrutsTest4/tags/index.jsp 替换为http://localhost:8080/MyStrutsTest4/tags/non-ui/index.jsp
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics