JavaWeb项目中classpath路径详解
在使用ssh
等框架开发web
程序时配置文件(xml和properties)存放的路径一般为src
下,当部署程序时则必须存在于classes
路径下,具体如下
src
不是classpath
, WEB-INF/classes
,lib
才是classpath
WEB-INF/
是资源目录, 客户端不能直接访问,
这话是没错,不过现在的IDE
编译器在编译时会把src
下的文件(是文件,不是.java
)移到WEB-INF/classes
下。不过值得注意的是,spring
配置文件里这个locations
是uri
表示,也就是说你写的jdbc.properties
是当前相对路径,要访问classpath
记得要这样写:<value>classpath:jdbc.properties</value>
首先 classpath
是指 WEB-INF
文件夹下的classes
目录
解释classes含义:
- 1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml
- 2.存放模板文件 eg.actionerror.ftl
- 3.存放class文件对应的是项目开发时的src目录编译文件
小结:这是一个定位资源的入口
如果你知道开发过程中有这么一句话:惯例大于配置那么也许你会改变你的想法
对于第二个问题
这个涉及的是lib和classes下文件访问优先级的问题: lib
>classes
对于性能的影响应该不在这个范畴
classpath 和 classpath* 区别:
- classpath:只会到你的class路径中查找找文件;
- classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
首先这个是 web.xml
方式定义参数传给Servlet
。
因此,<param-value></param-value>
的解释是接收这个参数的servlet
执行的。
dispatchservlet
的这个参数是定义配置文件的位置的。
而spring
中对资源文件的处理做了抽象化,可以用符合 URI
规范的方式声明文件位置,
具体的实现类会解析这个字符串,(可以看spring
的Resource
相关的文档)
根据里面的声明 来使用合适的方式读取。 classpath:
开头的意思是说从 classpath
中寻找目标文件。
web application
的classpath
包含 WEB-INF/lib
下的所有jar
包和WEB-INF/classes
目录
你的web
项目编译后会有一个classpath
路径,编译后的class
文件,资源文件,依赖文件等都会放在这个路径下。param-value
制定的这个配置文件时spring
的配置文件,classpath
意思就是说这个配置文件在classpath
路径下。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接