天天看点

Servlet访问Web资源的几种方式方式一方式二方式三方式四

项目结构如下:

Servlet访问Web资源的几种方式方式一方式二方式三方式四

src

目录下有个

config.properties

文件,

src目录

下的文件最终会被打包进

WEB-INF/classes/

目录下。在

web

目录下有个

config

目录,该目录下也有个

config.properties

文件。这些文件与目录最终在tomcat中的结构如下:

webapps
	Servlet
		config
			config.properties
		WEB-INF
			classes
				x.y.servlet
				config.properties			
			web.xml
		index.jsp
           

方式一

InputStream is=new FileInputStream("src/config.properties");
           

通过该种方式访问不到,因为这里的路径是相对路径,

FileInputStream

的相对路径是根据

jre

来确定的,因为这里是

web

项目,

jre

最后会交给

tomcat

来管理,所以这里相对的路径是

tomcat

bin

目录。如果想访问到,需要在

bin

目录下新建

src

目录,并把

config.properties

拷入。

方式二

ServletContext context=getServletContext();
InputStream is=new FileInputStream(context.getRealPath("config/config.properties"));
           

getRealPath

方法获取的是绝对路径,

context.getRealPath("")

获取的路径是

tomcat安装目录/webapps/Servlet/

context.getRealPath("config/config.properties")

获取的路径是

tomcat安装目录/webapps/Servlet/config/properties

。通过这种方式可以访问到。

方式三

ServletContext context=getServletContext();
InputStream is=context.getResourceAsStream("config/config.properties");
           

ServletContext

getResourceAsStream

方法相对的目录是

tomcat安装目录/webapps/Servet/

,通过这种方式可以访问到。

方式四

InputStream is=this.getClass().getClassLoader().getResourceAsStream("../../config/config.properties");
           

通过

getClassLoader

方法获得类加载器,再调用类加载器的

getResourceAsStream

方法。类加载器的

getResourceAsStream

方法相对的目录是

tomcat安装目录/webapps/Servet/WEB-INF/classes/

目录。所以需要使用

../../

回到上上层目录才能访问到。