您的位置:首页 > 编程语言 > Java开发

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

2017-03-27 09:32 309 查看
新建一个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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息