JavaWeb之得到web应用中的资源文件

本文介绍了一种在Web项目中读取资源文件的方法。通过Servlet获取ServletContext,并利用getRealPath()和getResourceAsStream()方法来定位和读取位于WEB-INF/classes下的db.properties文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建一个web项目,在src下建一个db.properties文件,文件中有一些配置信息,如:

username=root
password=abc

创建一个servlet类ResourceDemo.java,在这个类中读取db.properties中的配置信息.整个ResourceDemo.java代码如下:

package com.bighuan.path;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 读取项目中的资源文件
 * @author bighuan
 *
 */
public class ResourceDemo extends HttpServlet {


	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * .代表java命令运行目录,java命令在哪里呢?在tomcat服务器的bin目录下:tomcat/bin
		 * 结论:在web项目中,.代表在tomcat/bin目录下开始,所以不能使用这种相对路径,在web项目中不能
		 * 通过这种方式拿资源文件
		 */
		/*File file=new File("./src/db.properties");
		InputStream is=new FileInputStream(file);*/
		
		/**
		 * 正确方法:
		 * 使用web应用下加载资源文件的用法
		 */
		//得到上下文
		ServletContext context = getServletContext();
		 /**
		 * 方式一:
		 * context.getRealPath(String path):返回资源文件的绝对路径
		 *斜杠(/)表示当前web应用发布到服务器中那个根目录,当前web应用名称是day11_cookie,所以斜杠(/)
		 *表示tomcat/webapps/day11_cookie目录
		 */
		/*String path = context.getRealPath("/WEB-INF/classes/db.properties");
		System.out.println("path:"+path);
		InputStream is=new FileInputStream(new File(path));*/
		/**
		 * 结果:
		 * path:D:\develop\tomcat\apache-tomcat-7.0.40\webapps\day11_cookie\WEB-INF\classes\db.properties
		 */
		
		/**
		 * 方式二:
		 * context.getResourceAsStream(String path):得到资源文件,返回输入流
		 * 路径写法和方式一一样
		 */
		InputStream is = context.getResourceAsStream("/WEB-INF/classes/db.properties");
		Properties proper=new Properties();
		//读取资源文件
		proper.load(is);
		System.out.println("方式二读取资源文件");
		String username = proper.getProperty("username");
		String password=proper.getProperty("password");
		System.out.println("username="+username+",password="+password);
		System.out.println("读取数据成功");
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);
	}

}

得到web应用中的资源文件就两种写法,前者返回一个String,代表自己所要访问资源的路径,后者就返回所要访问资源的InputStream.

context.getRealPath("路径")
context.getResourceAsStream("路径");

方式一时打印出来的结果:

path:D:\develop\tomcat\apache-tomcat-7.0.40\webapps\day11_cookie\WEB-INF\classes\db.properties
username=root,password=abc
读取数据成功
从结果也可以看出,"/"就代表了"D:\develop\tomcat\apache-tomcat-7.0.40\webapps\day11_cookie"路径,这和自己tomcat位置有关.

具体写法都在上面的servlet类中有注释了,各取所需吧!

我以后肯定会忘记,所以又记了一篇博客!那么,Good Luck!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值