问题:新建Dynamic Web Project时修改了default output folder,这时候在web.xml中配置DispatcherServlet的时候,如果使用
<param-value>classpath:springmvc.xml</param-value>
,系统启动时将提示springmvc.xml文件找不到的错误,当配置成
<param-value>classpath*:springmvc.xml</param-value>
时,能找到springmvc.xml文件。原因是:
概念解释:
classpath : 即项目中WEB-INF下面的classes目录;
应用:
【01】 src路径下的文件在编译后会放到WEB-INF/classes路径下。默认的classpath是在这里。直接放到WEB-INF下的话,是不在classpath下的。用ClassPathXmlApplicationContext当然获取不到的。
【02】 如果单元测试的话,可以在启动或者运行的选项里指定classpath的路径的。用maven构建项目时候resource目录就是默认的classpath
【03】 classPath即为java文件编译之后的class文件的编译目录一般为web-inf/classes,src下的xml在编译时也会复制到classPath下
(1)ApplicationContext ctx = new ClassPathXmlApplicationContext("xxxx.xml"); //读取classPath下的spring.xml配置文件
(2)ApplicationContext ctx = new FileSystemXmlApplicationContext("WebRoot/WEB-INF/xxxx.xml"); //读取WEB-INF 下的spring.xml文件
区别:
classpath 和 classpath* 区别:
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.