java servlet 输出_JavaWeb中servlet读取配置文件的方式

我们在JavaWeb中常常要涉及到一些文件的操作,比如读取配置文件,下载图片等等操作。那我们能不能采用我们以前在Java工程中读取文件的方式呢?废话不多说我们来看看下我们以前在Java工程中读取文件是怎么读的呢,然后再来看看能不能在JavaWeb工程中采用同样的方式。

一、Java工程:

1.项目的目录结构如下所示

c8d6ad7009c52ceddf98664b7a81bae4.png

2.读取配置文件的代码如下

packagecom.demo;importjava.io.FileInputStream;importjava.util.Properties;importorg.junit.Test;public classFileDemo {

@Testpublic void loadFile1() throwsException {//读取src/jdbc1.properties

FileInputStream fis = new FileInputStream("src/jdbc1.properties");

Properties prop= newProperties();

prop.load(fis);//从控制台列出prop里面的信息

prop.list(System.out);

}

@Testpublic void loadFile2() throwsException {//读取src/com/demo/jdbc2.properties

FileInputStream fis = new FileInputStream("src/com/demo/jdbc2.properties");

Properties prop= newProperties();

prop.load(fis);//从控制台列出prop里面的信息

prop.list(System.out);

fis.close();

}

}

3.输出结果:

-- listing properties --

jdbc.driver_class=oracle.jdbc.driver.OracleDriver

jdbc.connection.username=root

jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.connection.password=root

从上面可以看出,我们在eclipse中读取文件的根目录时从src开始的,然后从src开始写,一直写到我们要读取文件目录即可。

二、JavaWeb工程:

1.项目的目录结构如下所示

49f66773c6e5e8c71a32d01be4de8614.png

2.读取配置文件的代码如下

d0604a0669c2bfcf8eea3f9302719ffe.png

由此,可以看出我们使用Java工程的方式在web工程中读取文件的方式是不行的,那么我们该怎么办呢?

这是因为当我们将项目以war的方式发布到tomcat上的时候,启动tomcat,tamcat会自动解压war包项目,之后我们在src目录下面所有的Java文件会编译成class字节码文件,然后存放到WEB-INF/classes目录,如果有其他文件也会相对于src的目录等级存放到相对于WEB-INF/classes相同目录等级下,如上图中jdbc1.properties相对于src目录为src/jdbc2.properties,将src替换成WEB-INF/classes即可,所以它在tomcat中最终目录为WEB-INF/classes/jdbc2.properties,同理src/com/servlet/jdbc3.properties,它在tomcat中最终目录为WEB-INF/classes/com/servlet/jdbc3.properties。而WebContent目录下文件,则会直接放到项目的根路径下即/jdbc1.properties。说了这么多可能有点难懂,直接上图。

①tomcat\webapps\Web目录

f3470ad1e0c56587c47a553bc1408777.png

②tomcat\webapps\Web\WEB-INF\classes目录

38ae73c1d3a94a08dfc50dfe1765344e.png

②tomcat\webapps\Web\WEB-INF\classes\com\servlet目录

f80755a741c9e496e76094e0be916e72.png

三、正确读取web工程中的文件方式。

1.读取jdbc1.properties

①目录结果如下

74d35fb7477f4706e6479f1a5eb66266.png

②具体读取代码如下:

packagecom.servlet;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;

@WebServlet("/file.do")public class FileOperateServlet extendsHttpServlet {private static final long serialVersionUID = 1L;protected voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//通过ServletContext对象的getRealPath方法获取项目的绝对路径//"/"就i代表项目的根路径即Web/,然后填写你需要读取文件的相对于根的路径//读取jdbc1.properties

String filePath = this.getServletContext().getRealPath("/jdbc1.properties");

FileInputStream fis= newFileInputStream(filePath);

Properties prop= newProperties();

prop.load(fis);//从控制台列出prop里面的信息

prop.list(System.out);

fis.close();

}

}

③运行结果如下:

-- listing properties --

jdbc.driver_class=oracle.jdbc.driver.OracleDriver

jdbc.connection.username=root

jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.connection.password=root

2.读取jdbc2.properties

①目录结果如下

1d533d7478dbcc57a626ef156dbdee24.png

②具体读取代码如下:

packagecom.servlet;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;

@WebServlet("/file.do")public class FileOperateServlet extendsHttpServlet {private static final long serialVersionUID = 1L;protected voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//通过ServletContext对象的getRealPath方法获取项目的绝对路径//"/"就i代表项目的根路径即Web/,然后填写你需要读取文件的相对于根的路径//读取jdbc2.properties

String filePath = this.getServletContext().getRealPath("/WEB-INF/classes/jdbc2.properties");

FileInputStream fis= newFileInputStream(filePath);

Properties prop= newProperties();

prop.load(fis);//从控制台列出prop里面的信息

prop.list(System.out);

fis.close();

}

}

③运行结果如下:

-- listing properties --

jdbc.driver_class=oracle.jdbc.driver.OracleDriver

jdbc.connection.username=root

jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.connection.password=root

3.读取jdbc3.properties

①目录结果如下

fa36533dfc50b7929f8a0e2feb348747.png

②具体读取代码如下:

packagecom.servlet;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;

@WebServlet("/file.do")public class FileOperateServlet extendsHttpServlet {private static final long serialVersionUID = 1L;protected voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {//通过ServletContext对象的getRealPath方法获取项目的绝对路径//"/"就i代表项目的根路径即Web/,然后填写你需要读取文件的相对于根的路径//读取jdbc3.properties

String filePath = this.getServletContext().getRealPath("/WEB-INF/classes/com/servlet/jdbc3.properties");

FileInputStream fis= newFileInputStream(filePath);

Properties prop= newProperties();

prop.load(fis);//从控制台列出prop里面的信息

prop.list(System.out);

fis.close();

}

}

③运行结果如下:

-- listing properties --

jdbc.driver_class=oracle.jdbc.driver.OracleDriver

jdbc.connection.username=root

jdbc.connection.url=jdbc:oracle:thin:@localhost:1521:orcl

jdbc.connection.password=root

至此在web中读取文件的方式已经差不多了,有不足的地方,希望大家多多提意见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值