### JSP/Servlet中的路径问题详解 #### 一、路径的基本概念 在JSP和Servlet技术中,理解和处理路径是非常重要的。路径可以分为绝对路径和相对路径两种。 **1. 绝对路径** - **定义**:绝对路径是指文件或目录在硬盘上的实际路径,包括URL和物理路径。 - **示例**: - 物理路径:`C:\xyz\test.txt` - URL路径:`http://www.sun.com/index.htm` **2. 相对路径** - **定义**:相对于某个基准目录的路径。 - **示例**: - Web应用中的相对路径(HTML中的相对目录):在Servlet中,“/”通常代表Web应用的根目录。 - 物理路径的相对表示:“./”代表当前目录,“../”代表上级目录。 **3. URI、URL、URN** - **URI** (Uniform Resource Identifier):用于标识资源的一种统一方式,包括URL和URN。 - **URL** (Uniform Resource Locator):具体指出资源的位置。 - **URN** (Uniform Resource Name):用于唯一标识资源的名字。 #### 二、JSP/Servlet中的路径使用 **1. 服务器端的地址** 服务器端的相对地址指的是相对于Web应用的地址,它在服务器端解析,不同于HTML和JavaScript中的相对地址,这些由客户端浏览器解析。 - **forward**:Servlet中的`request.getRequestDispatcher(address)`中的`address`是在服务器端解析的,因此如果要转发到`a.jsp`,应该写成`request.getRequestDispatcher("/user/a.jsp")`。这里的`/`相对于当前的Web应用,绝对地址是`http://192.168.0.1/webapp/user/a.jsp`。 - **sendRedirect**:在JSP中使用`response.sendRedirect("/rtccp/user/a.jsp");`来实现重定向。 **2. 客户端的地址** 所有HTML页面中的相对地址都是相对于服务器根目录的,而不是相对于特定Web应用的目录。 - **Form表单的Action属性**:应该相对于服务器根目录(`http://192.168.0.1/`),如果提交到`a.jsp`,则可以写为`action="/webapp/user/a.jsp"`或`action="<%=request.getContextPath()%>/user/a.jsp"`。 - **JavaScript**:同样在客户端解析,因此其相对路径与Form表单相同。 #### 三、路径的获取 在开发过程中,经常需要获取当前应用的相对路径和绝对路径。 **1. JSP中获取路径** - **根目录的绝对路径**:`request.getRequestURI()` - **文件的绝对路径**:`application.getRealPath(request.getRequestURI())` - **当前Web应用的绝对路径**:`application.getRealPath("/")` - **请求文件的上层目录**:`new File(application.getRealPath(request.getRequestURI())).getParent()` **2. Servlet中获取路径** - **根目录的绝对路径**:`request.getServletPath()` - **文件的绝对路径**:`request.getSession().getServletContext().getRealPath(request.getRequestURI())` - **当前Web应用的绝对路径**:`servletConfig.getServletContext().getRealPath("/")` - **ServletContext对象的获取**:可以通过多种方式获得,如`javax.servlet.http.HttpSession.getServletContext()`、`javax.servlet.jsp.PageContext.getServletContext()`等。 通过以上介绍,我们可以看到,在JSP和Servlet开发中,正确地理解和使用路径对于程序的健壮性和可维护性至关重要。特别是在涉及到文件读取、资源定位以及页面跳转等方面时,合理的路径设计能够有效提高系统的灵活性和稳定性。希望以上内容能够帮助开发者更好地理解并运用JSP和Servlet中的路径处理技巧。
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助