eclipse配置server locations及工程发布后文件位置总结

在eclipse上写java web,当你发现你发布一个项目后,并没有在你已经添加的tomcat的webapps上发现该工程的目录,这是你就要检查一下自己的Server Locations了


这个界面,朋友们都是熟悉的,这个添加好的tomcat下现在部署了一个工程,现在我们双击tomcat v7.0

发现Server Locations无法修改,这时只需移除tomcat下的工程(刚刚提到的readFile)

可以修改了,如何修改呢?

按着上图的意思是,使用tomcat的安装目录作为发布的位置,然后下面的webapps就是我发布时的目录。

现在查看tomcat中的webapps


发布一下工程,再次查看,你就会发现工程已经到了你想要的webapps中。


现在来我们进入第二个环节:分析eclipse中的文件位置,与工程发布后文件的位置之间的关系

实验的环境如下:

打开其中一个图,其他是类似内容


可以看出3.properties实在项目根目录下


1.properties是在下图位置上


估计读者根据这两个图,已经可以猜到2与4.properties的位置了吧

规则:

在发布项目后,src下的java文件会被翻译成字节码文件WEB-INF\classes下,所以src下的文件也被发布到了WEB-INF\classes目录下,WebContent下的文件都会被发布到项目的根目录下,而下图中原本就在WEB-INF/file下的4.properties就还是在项目根目录下的WEB-INF/file下。


上面文件的位置的内容,我写的很详细,可能有些读者觉得过于详细,没有必要截图。我是这么想的,这些文件在工程发布后位置相对于项目的位置,我觉得是超级重要的,举几个例子吧,在jdbc中连接数据库的必要参数,驱动、账号、密码、以及一些需要的参数,这些东西都不可能直接写到代码中的,这样会导致很伤的硬编码。所以都是写在配置文件中(主要是.xml与.properties),

所以找文件变得很重要,在web中servlet中很容易就得到文件的绝对路径(这个绝对路径是根据工程发布的位置决定的,不是eclipse中的工作空间下的),所以是可行的。

下面是一段测试代码 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String realPath3 = context.getRealPath("3.properties");
System.out.println(realPath3);
}

控制台输出:

D:\Program Files\heiMaTomcat\apache-tomcat-7.0.52\webapps\readFile\3.properties

其他也是同理,既然位置找的清楚了,那么就可以来加载文件了

在读取src(classes) 下的资源是可以使用类加载器----专门加载classes 下的文件的

规则:

“类名”.class.getClassLoader().getResource("")定位到的绝对路径是WEB-INF\classes目录下。getResource(String filepath)。参数filepath是classes目录下的相对路径。

测试1:

InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("1.properties");
Properties properties = new Properties();
properties.load(inputStream);
System.out.println(properties.getProperty("name"));

控制台:

1.lailai

测试2:

getResourceAsStream("/conf/2.properties");

控制台:

2.lailai


现在我们来说另外一种,加载文件的方式,我们前面说到了,我们都已经知道文件的绝对路径了,那么就可以使用输入流来加载文件

在servlet中很容易的得到ServletContext对象,通过这个对象就可以实现。

测试1

ServletContext context = this.getServletContext();//项目根目录
String path = "3.properties";
InputStream inputStream = context.getResourceAsStream(path);
Properties properties = new Properties();
properties.load(inputStream);
System.out.println(properties.getProperty("name"));

控制台:

3.lailai

测试2:

String path = "WEB-INF/classes/conf/2.properties";
InputStream inputStream = context.getResourceAsStream(path);

控制台:

2.lailai

通过上面的例子,读者估计已经完全掌握了,定位文件,读取配置文件中的内容。

相信我,学会配置文件,对你的普通项目,或者ssh,ssm项目都是有帮助的。

在这,可能有朋友要问了,前面提到配置文件一般是.propertie和.xml 那么问题来了,使用哪个合适呢?

我是这样用的,简单的键值对,像数据库连接的一些必要参数、后面在项目中的一些必要的属性与值,需要配置在文件中,防止硬编码的这些简单键值对就可以使用.properties.然后如果复杂的配置,servlet的配置路径与类的映射,spring的bean配置等等这些,复杂的配置,它都是使用.xml,但是这些配置你可以根据它的相关规则去配,是繁琐,不是难。

还有个需要提及的是,像properties读取属性的值(刚刚的name=1.laiali),那么.xml如何读取相关的信息呢?

这里我提供一个链接,是我之前模拟spring的ioc,也就是自己搞一个bean工厂为我生成管理对象的类,其中,就使用到了xml的解析

http://blog.csdn.net/lys1695227550/article/details/78088532


在这还是希望读者读完这篇文章,对自己在这方面会有更深的认识,有所收获,如果大家喜欢的话,关注我,文章还在编辑ing......





  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值