java web路径和spring读取配置文件

此篇博客缘起:部署java web系统到阿里云服务器(ubuntu14.04)的时候,有以下两个问题

  • 找不到自定义的property配置文件
  • 上传图片的时候找不到路径

开发的时候是在windows上的,运行正常,部署的时候就出问题了,肯定是windows和linux路径区别导致的(一个小问题来回鼓捣了几个小时,因为有自己对windows下和linux下的区别还不是特别了解,还有就是每次在windows下修改完成以后都要重新上传到阿里云,项目较大来回也需要较多时间。。。),遂决定好好看看java web路径的问题。

普通java程序获取路径

Thread.currentThread().getContextClassLoader().getResource("/").toURI().getPath()
null

Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath()
/D:/workspace/EPEducationManager/build/classes/

UserResource.class.getClassLoader().getResource("/").toURI().getPath()
null

UserResource.class.getClassLoader().getResource("").toURI().getPath()
/D:/workspace/EPEducationManager/build/classes/

UserResource.class.getResource("").toURI().getPath()
/D:/workspace/EPEducationManager/build/classes/com/phy/em/user/rest/

UserResource.class.getResource("/").toURI().getPath()
/D:/workspace/EPEducationManager/build/classes/

System.getProperty("user.dir")
D:\workspace\EPEducationManager

在java web中获取路径

Thread.currentThread().getContextClassLoader().getResource("/").toURI().getPath()
/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/

Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath()
/C:/tomcat7/lib/

UserResource.class.getClassLoader().getResource("/").toURI().getPath()
/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/

UserResource.class.getClassLoader().getResource("").toURI().getPath()
/C:/tomcat7/lib/

UserResource.class.getResource("").toURI().getPath()
/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/EPEducationManager/WEB-INF/classes/com/phy/em/user/rest/

UserResource.class.getResource("/").toURI().getPath()
/C:/tomcat7/lib/

System.getProperty("user.dir")
C:\Program Files (x86)\eclipse

根据上面的输出选择对应的获取路径的方法,特别注意获取得到的path前面有"/",不要手贱删除"/",对,我就是那个手贱的人,删除了"/",因为看到前面有斜杠在windows资源管理器中是打不开的,我就删除了,结果在windows上运行是正确的,但是部署在linux上的时候把"/"删除了就成了"var/share/lib",明显这个录警示不正确的,本来是根目录下var...成了当前目录下var...

获取路径就可以读取制定目录下的配置文件了

使用spring读取配置文件

在xml中读取

<bean id=”propertyConfigurer” class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
  <property name=”location”>
    <value>/WEB-INF/configInfo.properties</value>
  </property>
  <property name=”fileEncoding” value=”utf-8″ />
</bean>

在xml中使用

<property name=”host”>
  <value>${email.host}</value>
</property>
<property name=”port”>
  <value>${email.port}</value>
</property>

通过以上两步就可以完成在读取property配置文件并注入到对应的bean中,但是有时候我们并不需要为了读取配置而创建一个bean,我们只想代码中直接读取配置文件,可以使用如下的方式

ResourceUtils.getFile("classpath:config.properties").getPath()
D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\EPEducationManager\WEB-INF\classes\

可以直接在代码中使用"classpath"来定位配置文件,获取得到的是一个File对象,当然了获取路径肯定没问题



通过这次的填坑经历又一次坚定了使用linux的信心和决心,以前多次使用linux的尝试都失败了,本着不pass(怕死)的心态又一次安装了kali和linux mint双系统(原来是windows和mint,把windows格了,把心爱的linux安装在了心爱的SSD上),坚持着一个月来,感觉越来越得心应手

时间: 2024-10-07 05:12:17

java web路径和spring读取配置文件的相关文章

Spring读取配置文件,地址问题,绝对路径,相对路径

Spring在读取配置文件时,是相对于bin,或者WEB-INF的: “applicationContext.xml”就是找bin或WEB-INF及子文件夹下的文件: “/res/applicationContext.xml”就是必须bin或WEB-INF文件夹下的res文件夹的文件://res可以换掉: 下面是找的一些关于相对路径和绝对路径的资料: 转自:http://www.cnblogs.com/mabaishui/archive/2011/03/17/1987226.html 1.基本概

SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean

分类: [java]2013-12-09 16:29 1020人阅读 评论(0) 收藏 举报 1.简介 在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路径下,Spring的配置文件也是src/applicationContext.xml路径下,那么我们可以借助Spring的property-placeholder读取配置文件,然后注入Bean中.我们在程序中,可以根据Bean的Id,获取注入的值.这样我们就可以借助Spring来读取配置文件. 2.

Java Web系列:Spring依赖注入基础

一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是可以专注业务逻辑.因此学习Spring Framework在架构和模式方面的结构和原理,对我们在架构和模块级别的理解帮助极大.Spring Framework(参考1)的宗旨是简化Java开发,主要的手段如下: (1)在架构上解耦:通过DI(依赖注入)管理类型依赖,通过AOP分离关注点,减少重复代码

Spring读取配置文件

说明: 通常情况下,项目将有读取配置文件的需求,可以用于property文件.xml文件等.这里使用spring该对象特征可被读取,写读属性样本. demo两个属性表明经常使用的物品首先,key .value关系的map对象(类似property文件).列表对象list java对象 package eway.flight.utils; import java.util.List; import java.util.Map; import org.springframework.stereoty

spring读取配置文件PropertyPlaceholderConfigurer类的使用

这里主要介绍PropertyPlaceholderConfigurer这个类的使用,spring中的该类主要用来读取配置文件并将配置文件中的变量设置到上下文环境中,并进行赋值. 一.此处使用list标签将多properties文件信息读取到PropertyPlaceholderConfigurer类中 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.Propert

Java Web系列:Spring MVC 基础

1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层面上给我们帮助,无法在思考和过程上帮助我们,而我们很多人都不喜欢思考和尝试. 2.实现Web MVC的基础 实现Web MVC基础可以概括为1个前段控制器和2个映射. (1)前端控制器FrontController ASP.NET和JSP都是以Page路径和URL一一对应,Web MVC要通过URL

Java Web系列:Spring Security 基础

Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷.这里演示登录.注销.记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上自定义提供程序消除从缓存加载角色信息造成的角色变更无效副作用. 1.基于java config的Spring Security基础配置 (1)使用AbstractSecurityWebApplicationInitializer集成到Spring MVC 1 public class Securit

使用java系统属性user.dir读取配置文件

适用于windows和linux服务器读取配置文件 import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Properties; import org.apache.log4j.Logger; public final class PropertyUtil {private static Logger LOG = Logger.getLogger(Propert

java web工程中logback换配置文件的路径

本人小网站:   http://51kxd.com/  欢迎大家不开心的时候访问访问,调节一下心情 web.xml中配置: <!-- windows  logback.xml文件跟web容器(比如tomcat)在同一个目录中.linux随意  --> <context-param> <param-name>logbackConfigLocation</param-name> <param-value>file:/datum/Data/conf/c