假设 Web 工程的目录结构如下图所示,并且 HelloServlet 配置为 @WebServlet(name = "helloServlet", urlPatterns = {"/hello"})

访问类路径下的资源

对于类路径下的文件,如 jms.properties 和 100.jpg,使用类加载器获取资源路径。

properties = new Properties();
try {
InputStream inStream = PropertiesUtils.class.getResourceAsStream("/config/jms.properties");
properties.load(inStream);
} catch (Exception e) {
e.printStackTrace();
} InputStream inStream = this.getClass().getResourceAsStream("/images/100.jpg");
if (inStream != null) {
resp.getOutputStream().write(IOUtils.toByteArray(inStream));
resp.setContentType("image/jpeg");
}

访问上下文路径下的资源

对于上下文环境的文件,如 webapp/images/101.jpg 文件。在浏览器地址栏上可以使用 http://localhost:8080/hello-mvn-web/images/101.jpg 访问。在 servlet 中可以通过 ServletContext 访问资源。

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
InputStream inStream = context.getResourceAsStream("/images/100.jpg");
if (inStream != null) {
resp.getOutputStream().write(IOUtils.toByteArray(inStream));
resp.setContentType("image/jpeg");
} else {
resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
}
}

获取各种路径

1. 获取上下文的路径。
  req.getContextPath()

2. 获取相对于上下文的 servlet 路径。
  req.getServletPath()

3. 获取请求 URL 的路径部分。
  req.getRequestURI()

4. 获取完整的请求 URL,除了查询字符串参数部分。
  req.getRequestURL()

5. 获取相对上下文路径对应于服务器文件系统上的绝对文件路径。
  context.getRealPath("/")

对于 http://localhost:8080/hello-mvn-web/hello?q=hello 请求,上述几种方法返回的结果:

C:\Users\huey> curl http://localhost:8080/hello-mvn-web/hello?q=hello
req.getContextPath(): /hello-mvn-web
req.getServletPath(): /hello
req.getRequestURI(): /hello-mvn-web/hello
req.getRequestURL(): http://localhost:8080/hello-mvn-web/hello
context.getRealPath("/"): E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\hello-mvn-web\

Servlet & JSP - Java Web 访问资源的路径问题的更多相关文章

  1. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  2. servlet+jsp+java实现Web 应用

    servlet+jsp+java实现Web 应用 用java来构建一个web应用是特别容易的事情,jsp和php很像,可以嵌套在html中.程序的结构很简单,也很清楚,本文主要记录下大概的开发过程和环 ...

  3. servlet+jsp+java实现Web应用

    servlet+jsp+java实现Web应用 环境: 1,eclipse 2,tomcat3,eclipse tomcat 插件 开发过程: 1,建立一个Dynamic Web Project 2, ...

  4. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  5. 基于Servlet+jsp的web计算器

    基于Servlet+jsp的web计算器 这次老大为了让我们自己复习web中页面的跳转给布置得任务 天下代码一大抄,关键看你怎么抄 首先我想到的计算算法不是什么堆栈,是简单的(其实很复杂,但是我就只需 ...

  6. Java Web 前端资源文件的路径问题

    WEB-INF是Java Web应用的安全目录,在部署时用于存放class文件.项目用到的库(jar包).Java Web应用的配置文件web.xml. 浏览器不能访问此目录下的资源,比如在WEB-I ...

  7. 理解java Web项目中的路径问题

    本文以项目部署在tomcat服务器为例,其他相信也是一样的. 先说明请求页面的写法,在web中,页面路径主要写的有以下几种 1.请求重定向 2.浏览器的请求被服务器请求到新页面(我称为“转发”) 3. ...

  8. java web项目获取各种路径

    1.可以在servlet的init方法里 String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径 例如 ...

  9. [原创]java WEB学习笔记35:java WEB 中关于绝对路径 和相对路径问题

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. 从工程中删除Cocoapods

    从工程中删除Cocoapods 分类: Xcode iOS 2013-08-24 01:11 5512人阅读 评论(2) 收藏 举报 CocoapodsiOSXcode 1. 删除工程文件夹下的Pod ...

  2. MSSQL导入数据时,出现“无法截断表 因为表正由Foreign key引用”错误

    * 错误 0xc002f210: 准备 SQL 任务: 执行查询“TRUNCATE TABLE [dsc100552_db].[dbo].[ALV_SalesBigClass] ”失败,错误如下:“无 ...

  3. C语言简单实现sizeof功能代码

    sizeof不是函数,而是运算符,C/C++语言编译器在预编译阶段的时候就已经处理完了sizeof的问题,也就是说sizeof类似于宏定义. 下面给出一个sizeof的一个宏定义实现版本 #defin ...

  4. Activator.CreateInstance 方法 (Type) 的用法

    转自:http://www.cnblogs.com/lmfeng/archive/2012/01/30/2331666.html Activator.CreateInstance 方法 (Type) ...

  5. Spring Hibernate4 整合配置文档

    1 applicationContext.xml配置文档 <?xml version="1.0" encoding="UTF-8"?><bea ...

  6. 数据库MySQL常用命令复习

    -- 查看数据库 show databases; -- 创建数据库 create database '数据库名'; -- 删除数据库 drop database '数据库名'; -- 选库 use ' ...

  7. Squid代理服务器&&搭建透明代理网关服务器

    案例需求 ——公司选用RHEL5服务器作为网关,为了有效节省网络带宽.提高局域网访问Internet的速度,需要在网关服务器上搭建代理服务,并结合防火墙策略实现透明代理,以减少客户端的重复设置工作 需 ...

  8. skyline TerraBuilder 制作MPT方法与技巧(2)

    制作MPT的方法可以看这里<skyline TerraBuilder 制作MPT方法与技巧(1)>http://www.cnblogs.com/cannel/p/3622447.html ...

  9. CDOJ 486 Good Morning 傻逼题

    Good Morning Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/486 ...

  10. [Canvas] Make Canvas Responsive to Pixel Ratio

    Canvas is great for high performance graphics rendering but by default the results look blocky on ph ...