1.  context

获取真实路径(*****)

还可以使用ServletContext对象来获取Web应用下的资源,例如在hello应用的根目录下创建a.txt文件,现在想在Servlet中获取这个资源,就可以使用ServletContext来获取。

l  获取a.txt的真实路径:String realPath = servletContext.getRealPath(“/a.txt”),realPath的值为a.txt文件的绝对路径:F:\tomcat6\webapps\hello\a.txt;

l  获取b.txt的真实路径:String realPath = servletContext.getRealPath(“/WEB-INF/b.txt”);

5.2 获取资源流

不只可以获取资源的路径,还可以通过ServletContext获取资源流,即把资源以输入流的方式获取:

l  获取a.txt资源流:InputStream in = servletContext.getResourceAsStream(“/a.txt”);

l  获取b.txt资源流:InputStream in = servletContext.getResourceAsStream(“/WEB-INF/b.txt”);

5.3 获取指定目录下所有资源路径

还可以使用ServletContext获取指定目录下所有资源路径,例如获取/WEB-INF下所有资源的路径:

Set set = context.getResourcePaths("/WEB-INF");

System.out.println(set);

[/WEB-INF/lib/, /WEB-INF/classes/, /WEB-INF/b.txt, /WEB-INF/web.xml]

注意,本方法必须以“/”开头!!!

  1. class和classloader

获取类路径下资源

  获取类路径资源,类路径对一个JavaWeb项目而言,就是/WEB-INF/classes和/WEB-INF/lib/每个jar包!

l  Class

l  ClassLoader:

  这里要讲的是获取类路径下的资源,对于JavaWeb应用而言,就是获取classes目录下的资源。

InputStream in = this.getClass().getResourceAsStream("/xxx.txt");

System.out.println(IOUtils.toString(in));

InputStream in = this.getClass().getClassLoader().getResourceAsStream("xxx.txt");

System.out.println(IOUtils.toString(in));

l  Class类的getResourceAsStream(String path):

  • 路径以“/”开头,相对classes路径;
  • 路径不以“/”开头,相对当前.class文件所有路径,例如在cn.itcast.servlet.MyServlet中执行,那么相对/classes/cn/itcast/servlet/路径;

l  ClassLoader类的getResourceAsStream(String path):

  • 相对classes路径;

实例

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
Integer count = (Integer) servletContext.getAttribute("count");
if (count == null) {
count = 1;
servletContext.setAttribute("count",1);
} else {
servletContext.setAttribute("count",count + 1);
} PrintWriter pWriter = response.getWriter();
pWriter.write("<h1>"+count+"</h1>");
System.out.println(count); String string = servletContext.getRealPath("/index.jsp");
System.out.println(string); InputStream inputStream = servletContext.getResourceAsStream("/index.jsp"); Set<String> strings = servletContext.getResourcePaths("/WEB-INF");
System.out.println(strings); ClassLoader classLoader = servletContext.getClassLoader();
InputStream inputStream2 = classLoader.getResourceAsStream("/a.txt");
InputStream inputStream3 = classLoader.getResourceAsStream("/com/lqkj/context/b.txt");
String string2 = IOUtils.toString(inputStream2);
System.out.println(string2);
String string3 = IOUtils.toString(inputStream3);
System.out.println(string3); Class class1 = this.getClass();
InputStream inputStream4 = class1.getResourceAsStream("b.txt");
System.out.println(IOUtils.toString(inputStream4)); InputStream inputStream5 = class1.getResourceAsStream("/a.txt");
System.out.println(IOUtils.toString(inputStream5)); InputStream inputStream6 = class1.getResourceAsStream("/../../index.jsp");
System.out.println(IOUtils.toString(inputStream6)); }

  

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 1. 得到ClassLoader
* > 先得到Class,再得到ClassLoader
* 2. 调用其getResourceAsStream(),得到一个InputStream
*/
// ClassLoader cl = this.getClass().getClassLoader();
// 相对/classes
// InputStream input = cl.getResourceAsStream("cn/itcast/servlet/a.txt"); Class c = this.getClass();
// 相对当前.class文件所在目录!
// InputStream input = c.getResourceAsStream("a.txt"); // 相对classes下!
// InputStream input = c.getResourceAsStream("/a.txt"); InputStream input = c.getResourceAsStream("/../../index.jsp"); String s = IOUtils.toString(input);//读取输入流内容,转换成字符串返回
System.out.println(s);
}

  

servlet--获取类路径下资源的更多相关文章

  1. Servlet获取类路径下的资源

    示例程序: package cn.yzu; import java.io.IOException; import java.io.InputStream; import javax.servlet.S ...

  2. JavaWeb学习——获取类路径下的资源

    对于JavaWeb而言,获取类路径下的资源,就是获取classes目录下的资源. 获取资源的方式有两种,利用Class或ClassLoader. Class类的getResourceAsStream( ...

  3. java获取类路径下文件的绝对路径

    获取文件绝对路径 在idea中,默认的当前路径是project的根路径,如果你使用idea的默认路径,只要离开idea换到其他位置,可能当前路径就不是project的根路径了. 使用一下通用方式的前提 ...

  4. 15. 获取类路径下文件对应的输入流(inputStream)方式

    //获取 inputStream 方式一Resource resource = new ClassPathResource("excel/template/test.xlsx"); ...

  5. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

  6. spring boot 打jar包,获取resource路径下的文件

    前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到. 我想到了两种方法,一种是根据http访问静态资源比如 ...

  7. Windows 批处理获取某路径下最新创建的文件的名称

    批处理获取某路径下最新创建的文件的名称 by:授客 QQ:1033553122 echo off setlocal enabledelayedexpansion rem 设置文件所在目录 set sr ...

  8. Java 递归获取一个路径下的所有文件,文件夹名称

    package com.readfile; import java.io.File; public class GetAllFiles { public static void main(String ...

  9. Python获取指定路径下所有文件的绝对路径

    需求 给出制定目录(路径),获取该目录下所有文件的绝对路径: 实现 方式一: import os def get_file_path_by_name(file_dir): ''' 获取指定路径下所有文 ...

随机推荐

  1. IIS 发布网站出现<compilation debug="true" targetFramework="4.6.1">错误

    参考:http://www.mamicode.com/info-detail-1180214.html 原因是环境只安装到.net Framework 4.5 的版本(.net版本向下兼容 ) 解决方 ...

  2. CogniViewPDF2XL——将PDF表格转化为Excell表的软件

    1. 下载官网地址:http://www.cogniview.com/download 2. 安装完后的样子

  3. WEB服务动静结合

    基本介绍 1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件 2)常见的应用服务软件有:PHP.Java.Python等 3)问题:WEB服务如何与外部 ...

  4. 如何启用Nginx的status功能,查看服务器状态信息?

    如何查看服务器状态信息? 我们可以通过安装Nginx的功能模块,并修改Nginx的主配置文件来实现. 1.编译安装时使用--with-http_stub_status_module开启状态页面模块 [ ...

  5. 08Servlet

    1.Servlet概念 1.1 servlet的特点 1)sevlet是一个普通的java类,继承HttpServlet类. 2)其实实现了Servlet接口的java类,才是一个Servlet类. ...

  6. python的list拷贝

    有三种情况 第一种:赋值(不是拷贝) a=[1,2,3] b=a 这种不是拷贝,a和b是一个变量,内存是一个 第二种:浅拷贝 a=[1,2,3,[4,5,6]] b=a b的第一层是独立的,第二层会更 ...

  7. a[b]和b[a]区别

    #include <stdio.h> main() { char a[5] = "abcd"; int b = 3; printf("%c\n",a ...

  8. Python操作cx_Oracle笔记

    参考文章: http://cx-oracle.readthedocs.io/en/latest/cursor.html # 创建数据库连接 ordb = Oracle.connect("{0 ...

  9. 对webpack的初步研究6

    Plugins 插件是webpack 的支柱.webpack本身构建在您在webpack配置中使用的相同插件系统上! 它们也是这样做的目的别的,一个装载机无法做到的. Anatomy webpack  ...

  10. LeetCode--054--区螺旋矩阵(java)

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ...