`

jsp/servlet中的相对路径

阅读更多
1.基本概念

绝对路径:

绝对路径就是你的主页上的文件或目录,在硬盘上的真正路径(URL或物理路径)。
例如:
绝对物理路径:C:\xyz\test.txt 代表了test.txt文件的绝对路径。
绝对URL路径: http://www.sun.com/index.htm 代表了一个URL绝对路径。

根路径:

对当前路径而言,相对与某个基准目录的路径。

相对路径:

相对当前根路径时,使用的路径。
例如:使用相对路径时,
"/"代表根路径,"./" 代表当前路径,
"../"代表上级目录。

从上面可以看出:绝对路径 = 根路径+相对路径


2.在JSP/Servlet中的相对路径

假设web应用名称为webapp。
我把以 "/webapp" 开头的路径称为相对绝对路径,简称:绝对路径;
其它的路径,称为相对相对路径,简称:相对路径。(有点绕口)



在使用路径访问一个客户端或服务器端的对象之前,首先看一下服务器端和客户端的根路径地址。


服务器端的根路径地址:

服务器端根路径的地址指的是相对于web应用的地址。
即相对于http://192.168.0.1:8080/webapp/
这个地址是由服务器端解析的。
(不同于前台html/jsp和javascript中的相对地址,他们是由客户端浏览器解析的)

我们在客户端或在服务器端访问或使用,服务器端的资源时,
使用的根路径是:http://192.168.0.1:8080/webapp/

比如servlet中的forward:
request.getRequestDispatcher(address);
因为address是在服务器端解析的,所以,要forward到a.jsp应该这么写:
request.getRequestDispatcher("/user/a.jsp");
这个/是当前web应用webapp的路径,
所以其绝对路径就是:/webapp/user/a.jsp

服务器端所有对象的根路径都是:
http://192.168.0.1:8080/webapp/

客户端的根路径地址 :

客户端根路径的地址是相对于web服务器根目录的地址。
即相对于http://192.168.0.1:8080/
这个地址是由客户端浏览器解析的


比如index.jsp中的form表单的action属性的地址是相对于
服务器根目录(http://192.168.0.1:8080/)的。
使用http://192.168.0.1:8080/webapp/index.jsp
访问index.jsp时,如果提交到a.jsp:
(访问客户端的资源)

方式一:
action="/user/a.jsp"
使用相对路径访问方式,
此时"/"代表根路径:http://192.168.0.1:8080/
结果:404错误


方式二:
action="./user/a.jsp"
使用相对路径访问方式,
此时"./" 代表当前路径:http://192.168.0.1:8080/webapp/
结果:正确

方式三:
action="/webapp/user/a.jsp"
使用绝对路径方式
结果:正确

Javascript也是在客户端解析的,所以其相对路径的使用和form表单一样。


3、客户端使用相对路径访问弊端:

情形之一:
如果客户端的jsp页面是通过action/servlet跳转访问的,
则jsp页面的根路径变为访问action/servlet的路径。
导致在JSP/HTML页面中引用CSS/Javascript/Action等属性时,
不能正确访问。


因此在客户端使用的地址最好是绝对路径


4、在客户端获取绝对路径前缀

如果所有链接都使用手动添加"/webapp"作为前缀,难免有些死板。
在jsp页面中,可以使用<%=request.getContextPath()%>获取
<%=request.getContextPath()%>的值就是:/webapp

EL表达式:${pageContext.request.contextPath}的值也是:/webapp

在项目根目录下创建一个文件:/webapp/varfile/include.jsp
在文件中设置一个变量:
<c:set var="ctx" value="${pageContext.request.contextPath}"  scope="page"  />

在另一个文件中使用:
<%@include file="/webapp/varfile/include.jsp"%>
<link href="${ctx}/resources/style/main.css" rel="stylesheet" type="text/css" />







引用:
http://www.blogjava.net/simie/archive/2007/07/29/133094.html





---------------------------------
服务器端,Servlet的路径,学习:



例如:
String file = request.getRequestURI();
if (request.getQueryString() != null) {
   file += '?' + request.getQueryString();
}
URL reconstructedURL = new URL(request.getScheme(),
                               request.getServerName(),
                               request.getServerPort(),
                               file);
out.println(URL.toString());


Remember the following three points:
1. Request URI = context path + servlet path + path info.
2. Context paths and servlet paths start with a / but do not end with it.
3. HttpServletRequest provides three methods getContextPath(),
    getServletPath() and getPathInfo() to retrieve the context path,
    the servlet path, and the path info, respectively, associated with a request.


Identifying the servlet path
To match a request URI with a servlet, the servlet container follows a simple algorithm.
Once it identifies the context path, if any, it evaluates the remaining part of the
request URI with the servlet mappings specified in the deployment descriptor, in the
following order. If it finds a match at any step, it does not take the next step.

1 The container tries to match the request URI to a servlet mapping. If it finds a
match, the complete request URI (except the context path) is the servlet path. In
this case, the path info is null.
2 It tries to recursively match the longest path by stepping down the request URI
path tree a directory at a time, using the / character as a path separator, and determining
if there is a match with a servlet. If there is a match, the matching part
of the request URI is the servlet path and the remaining part is the path info.
3 If the last node of the request URI contains an extension (.jsp, for example),
the servlet container tries to match it to a servlet that handles requests for the
specified extension. In this case, the complete request URI is the servlet path
and the path info is null.
4 If the container is still unable to find a match, it will forward the request to the
default servlet. If there is no default servlet, it will send an error message indicating
the servlet was not found.





---------
引自:
http://yaodong.yu.blog.163.com/blog/static/121426690200993104353382/?fromdm&fromSearch&isFromSearchEngine=yes













--
  • 大小: 4.6 KB
分享到:
评论

相关推荐

    JSP、Servlet中的相对路径和绝对路径(包括路径问题).mht

    JSP、Servlet中的相对路径和绝对路径(包括路径问题),解决繁琐的路径问题。

    在JAVA文件中获取该项目的相对路径.doc

    在 JAVA 文件中获取项目的相对路径是非常重要的,特别是在 JSP/Servlet 中。下面将详细介绍在 JAVA 文件中获取项目的相对路径的相关知识点。 1. 绝对路径和相对路径的概念 在讨论获取项目的相对路径之前,我们需要...

    Java开发绝对和相对路径问题

    在 JSP/Servlet 中,正确的理解和使用路径非常重要,避免使用类似".","./","../../" 等类似的相对该文件位置的相对路径,使用 request.getContextPath() 方法来获取当前应用的相对路径,可以避免许多问题。

    jsp_servlet路径问题

    - Web应用中的相对路径(HTML中的相对目录):在Servlet中,“/”通常代表Web应用的根目录。 - 物理路径的相对表示:“./”代表当前目录,“../”代表上级目录。 **3. URI、URL、URN** - **URI** (Uniform ...

    Servlet中的相对路径和绝对路径归纳

    Servlet 中的相对路径和绝对路径归纳 在 Servlet 编程中,路径是非常重要的一个概念。路径可以分为相对路径和绝对路径两种,在不同的场景下,选择合适的路径类型非常重要。本文将对 Servlet 中的相对路径和绝对路径...

    JSP的相对路径深入研究

    JSP相对路径深入研究是指在JSP文件中使用图片、CSS、JavaScript等资源时,如何正确地计算相对路径,以便正确地加载资源。下面我们将深入研究JSP相对路径的计算规则。 第一种情况:直接访问JSP文件 当我们直接访问...

    java Web 中相对路径绝对路径问题总结

    在Java Web开发中,理解和掌握相对路径与绝对路径的运用是至关重要的,因为这直接影响到资源定位、页面跳转以及文件读写等操作的正确性。以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与...

    Java相对路径绝对路径总结

    #### 二、JSP/Servlet中的相对路径和绝对路径 ##### 2.1 服务器端的地址 服务器端的相对地址是指相对于Web应用的地址。在服务器端解析时,这些地址与客户端浏览器解析的不同。 - **Forward**: 在Servlet中使用`...

    绝对路径和相对路径

    在JSP和Servlet中获取当前应用的相对路径和绝对路径非常重要,可以帮助开发者更好地处理文件和目录。 ##### 3.1 JSP中获得当前应用的相对路径和绝对路径 - **根目录所对应的绝对路径**:可以通过`request....

    jsp+servlet路径状态的测试

    在探讨“jsp+servlet路径状态的测试”这一主题时,我们深入分析了在JSP与Servlet环境下,不同路径(绝对路径与相对路径)在页面跳转过程中的表现及其对资源定位的影响。本测试旨在理解并优化JSP页面之间的跳转机制,...

    达内servlet/jsp/jquery资料

    - 相对路径和绝对路径的使用需要注意,避免出现找不到资源的问题。 ### 23. 过滤器 - **过滤器** 是一种可以拦截请求和响应的组件,用于实现诸如认证、日志记录等功能。 - 通过实现`javax.servlet.Filter`接口来...

    jsp servlet中的过滤器Filter配置总结

    通常,URL模式以斜杠开头表示其是一个绝对路径,否则被视为相对路径。此外,`/*`匹配所有路径,而`*.ext`匹配所有以`.ext`结尾的文件路径。理解这些规则对于正确配置Filter至关重要,以确保它们按预期工作。 Filter...

    java(Web)中相对路径,绝对路径问题总结

    #### JSP/Servlet中的相对路径和绝对路径 在Java Web应用中,路径的解析方式取决于它所在的上下文环境。主要分为两大类:服务器端路径和客户端路径。 ### 服务器端路径 **服务器端路径**是指在服务器端进行解析的...

    JSP-Servlet.rar_jsp_jsp综述_servlet_servlet jsp

    在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种重要的技术,它们共同构建了动态网页应用程序的基础。本文将深入探讨JSP与Servlet的重定向技术,并结合提供的资源来帮助初学者理解和掌握这一核心概念。 ...

    java中相对路径与绝对路径的问题

    3. JSP 编程中获得当前实际运用的相对路径和绝对路径根列表所对应的绝对路径 在 JSP 编程中,我们可以使用 `request.getRequestURI()` 来获取当前实际运用的相对路径和绝对路径根列表所对应的绝对路径。此外,我们...

    JAVA开发中相对路径汇编.pdf

    相对路径和绝对路径是文件定位的关键概念,它们在JSP和Servlet中扮演着重要角色。 **1. 基本概念** - **绝对路径**:绝对路径是文件或目录在磁盘上的完整路径,包括驱动器字母(在Windows系统中)或者根目录(如"/...

    java中相对路径,绝对路径问题总结.doc

    本文主要涵盖了Java中相对路径和绝对路径的基本概念,以及它们在JSP和Servlet中的应用。以下是对这些概念的详细解释: 1. **绝对路径**: 绝对路径是文件或目录在文件系统中的完整路径,它明确指出了从根目录开始...

    Tomcat下JSP、Servlet和JavaBean环境的配置

    在IT行业中,Web开发是不可或缺的一部分,而Tomcat作为一个轻量级的应用服务器,常常被用于部署和运行JSP、Servlet和JavaBean应用。本篇将详细介绍如何在Tomcat环境中配置这些核心组件,以便初学者能够顺利搭建开发...

Global site tag (gtag.js) - Google Analytics