---------------------取Servlet上下文路径,取WebContent的路径 --------------------------------
1、String path = request.getRealPath("/cfg.xml") (已不建议使用)
2、String path = request.getSession().getServletContext().getRealPath("/cfg.xml");
---------------------读取类路径中的文件 --------------------------------
一、getResource方法
//获取类的根路径classes/(重要)
URL s2 = Test.class.getResource("/");
String path2=s2.getPath();//如果路径有空格会使用 %20替代
//获取Test.class类文件所在的路径(重要)
URL s3 = Test.class.getResource("");
String path3=s3.getPath(); //如果路径有空格会使用 %20替代
// %20 转换为 空格(方案二)
String path4=s2.toURI().getPath(); //s2是URL s2
System.out.println(path4);
// %20 转换为 空格(方案二)
String path="file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/server-node.properties";
path = java.net.URLDecoder.decode(path, "UTF-8");
System.out.println(path);
二、getResourceAsStream方法
//在classes目录找文件a.txt
InputStream is = Test.class.getResourceAsStream( "/a.txt");
//在ReadCard类所在目录找文件a.txt
InputStream is = Test.class.getResourceAsStream( "a.txt");
----------------------取类路径测试代码 -------------------------------
package com.hc360.config.util; import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; // Test.class类文件实际路径是:E:/workspace3.6/configure huido/web/WEB-INF/classes/com/hc360/config/util/Test.class // 配置文件的实际路径是E:\workspace3.6\configure huido\web\WEB-INF\classes\server-node.properties // 注意configure huido中间有一个空格 // 下面开始测试,读取类路径中的文件 public class Test { public static void main(String[] args) throws Exception { //--------------取path----------------------- // 获取类的根路径classes/(重要) // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ // 参数也可以是:"/com/a.txt",在/com/目录下找文件a.txt URL s2 = Test.class.getResource("/"); System.out.println(s2); // 获取Test.class类文件所在的路径(重要) // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/com/hc360/config/util/ URL s3 = Test.class.getResource(""); System.out.println(s3); // 从来都是null // 结果:null URL s4 = Test.class.getClassLoader().getResource("/"); System.out.println(s4); // 获取类的根路径classes/ // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ URL s5 = Test.class.getClassLoader().getResource(""); System.out.println(s5); // 获取类的根路径classes/ // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ URL s6 = Thread.currentThread().getContextClassLoader().getResource(""); System.out.println(s6); //--------------取流InputStream----------------------- // 从类的根路径classes/下读取配置文件(重要) // 参数也可以是:"/com/a.txt",在/com/目录下找文件a.txt InputStream is = Test.class.getResourceAsStream("/server-node.properties"); System.out.println("InputStream is:" + (is == null ? "null" : "not null")); // 在Test类所在目录找文件(重要) // 要在classes/com/hc360/config/util/下有server-node.properties文件,就可以读出来 // 获取Test.class类文件所在的路径,读取配置文件(实际没有配置文件,所以返回null) InputStream is7 = Test.class.getResourceAsStream("server-node.properties"); System.out.println("InputStream is:" + (is7 == null ? "null" : "not null")); // 从来都是null InputStream is2 = Test.class.getClassLoader().getResourceAsStream("/server-node.properties"); System.out.println("InputStream is:" + (is2 == null ? "null" : "not null")); // 从类的根路径classes/下读取配置文件 InputStream is3 = Test.class.getClassLoader().getResourceAsStream("server-node.properties"); System.out.println("InputStream is:" + (is3 == null ? "null" : "not null")); //-------------------%20 转换为 空格-------------------- // %20 转换为 空格 // 结果:file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/ String path5=s2.toURI().toString(); System.out.println(path5); String path="file:/E:/workspace3.6/configure%20huido/web/WEB-INF/classes/server-node.properties"; path = java.net.URLDecoder.decode(path, "UTF-8"); System.out.println(path); } }
相关推荐
ServletContext是一个全局的上下文对象,它在整个Web应用程序中是唯一的,可以看作是整个Web应用的公共区域。它存储了与Web应用相关的共享信息,比如初始化参数、应用级的属性、以及对Web资源的访问。 当我们在类...
2. **利用`request.getContextPath()`获取项目的上下文路径:** - 示例:如果项目名为“TEST”,则调用此方法返回的路径为`/TEST`。 3. **利用`request.getServletPath()`获取当前页面的目录全名:** - 示例:...
Servlet路径问题在Web...开发者需要清楚地知道何时使用相对路径,何时使用绝对路径,以及它们如何与应用的上下文路径和服务器的根路径相互关联。这有助于避免路由混乱,确保请求能准确无误地到达目标Servlet或资源。
- 在传统的Java Web项目中,通常将`javax.servlet.jar`和`javax.servlet.jsp.jar`添加到项目的类路径中,这可以通过在`WEB-INF/lib`目录下放置这两个jar包实现。 - 使用Maven或Gradle等构建工具时,可以在pom.xml...
6. **Servlet上下文**:ServletContext接口代表了整个Web应用的共享环境。它提供了一种在Servlet之间传递信息的方式,以及获取应用级的初始化参数。 7. **请求和响应对象**:HttpServletRequest和...
开发者在构建web应用时,通常会将此jar包添加到项目的类路径中,以便能够利用Servlet API进行编程。 Servlet API主要包括以下几个关键概念和类: 1. **Servlet**:这是所有服务器端Java小程序的基类,实现了...
- `ServletConfig`:存储Servlet的初始化参数和上下文信息。 - `ServletContext`:代表整个Web应用的共享环境,用于Servlet间通信和共享资源。 4. **Servlet配置**: Servlet通常在`web.xml`部署描述符文件中...
4. `javax.servlet.ServletContext`:代表整个Web应用的上下文,可以获取应用范围内的信息,如初始化参数、资源路径等。 四、Servlet实战 在"day02"这个目录中,很可能包含了多个Servlet实例和相关的配置文件。你...
- `getContextPath()`: 获取Servlet上下文路径。 - `getAttribute(String name)`: 获取全局属性。 - `log(String message)`: 记录日志信息。 五、Filter和FilterChain 1. `Filter`:可以拦截和修改请求或响应,实现...
3. **javax.servlet.jsp.PageContext**:JspContext的实现,提供了对Servlet上下文、请求、响应、会话和应用程序范围的访问。 4. **javax.servlet.jsp.tagext.*包**:包含自定义标签库的接口和类,如Tag接口和...
ServletContext代表整个Web应用的上下文,提供全局信息,如Web应用的名称、初始化参数、MIME类型映射等。它还可以用来在所有Servlet之间共享数据。 7. **Servlet请求与响应** HttpServletRequest和...
// 获取Servlet上下文 String rootPath = context.getRealPath("/"); // 获取根目录的物理路径 String imagePath = rootPath + "images/logo.png"; // 拼接文件路径 ``` `getRealPath("/")`返回的是Web应用的根...
`ServletContext`是整个Web应用的共享上下文,它可以用来在不同Servlet之间共享信息,或获取全局配置。例如,`getContextPath()`获取Web应用的根路径,`getAttribute()`和`setAttribute()`用于存储和获取数据。 8....
Servlet3.1引入了异步处理能力,允许开发者在Servlet容器内部创建异步上下文(AsyncContext),从而将控制权交还给容器,避免了线程阻塞。这种方式使得服务器可以处理更多的并发请求,提高系统吞吐量。开发者可以在...
五、Servlet上下文 `ServletContext`接口代表了整个Web应用的共享环境,它可以在所有Servlet之间传递信息。可以使用`getInitParameter()`获取全局初始化参数,`setAttribute()`和`getAttribute()`用于存储和检索对象...
监听器是实现了特定接口的对象,它们监听Servlet上下文、session和请求事件。例如,ServletContextListener可以监听上下文的初始化和销毁事件,HttpSessionListener可以监听会话的创建和失效事件。 综上所述,Java ...
`ServletContext`是代表Web应用程序上下文的对象,它可以被多个Servlet共享。 ##### 2、`HttpServlet`对象介绍(接口) `HttpServlet`是抽象类,继承自`GenericServlet`,为HTTP协议提供了默认的实现。它重写了`...
7. **监听器(Listener)**:监听器是实现了特定接口的类,用于监听Servlet上下文、会话和请求事件。它们可以在Servlet的生命周期事件发生时自动执行代码。 8. **异步处理**:从Servlet 3.0开始,Servlet支持异步...