• Spring MVC 搭建过程中web.xml配置引入文件的路径问题


    为啥要说一下这么low的问题,因为我是一个比较low的人,哈哈。本来我技术有限,没事干自己撘个环境找找乐趣,结果被各种基础问题,弄的一脸蒙蔽。算了不多说,直接说问题。

    1、首先说一下java编译后的文件,正常来说我们编写的文件一般都是java文件,但实际上eclipse会帮我们编译成.class文件(在project下有个自动编译),没有编译的话,Project->Build Project 来编译当前的项目

    2、上面说的都是很简单的事情,但是简单的再延伸,就可能出一点问题了,重申一下,我比较low。在web.xml中会配置一些,需要引入的文件,比如jdbc配置,密码配置。而这些配置文件,需要有web.xml去找到这些文件,然后加载进来。这样,问题就来了,他是怎么找配置文件的。注意,正常项目在运行中是运行的class文件,是编译后的文件,也就是说会在编译后的文件夹下找文件,所以项目的目录结构很容易误导观众。

    3、如果你把需要引入的配置文件,放在了web-info下,那么恭喜你,看到这,你不用往下看了,因为你可能不会遇到路径问题,哈哈。

    4、我最开始放在web-info下,啥事没有,后来想把文件放在src下面,结果,怎么配置也找不到配置文件,我就郁闷了。哎,只能说还是技术不到家。此时用到上面说的项目运行时去编译后的文件夹下找文件,而最开始配置本来就在web-info下,项目运行时,刚好去web-info下和配置的class文件存放目录下找一系列文件,这就不会出错。但是现在移动配置文件位置了,之前默认的class文件存放位置没有改变,会继续使用,但是web-info下没有了自己配的文件,就会导致一直找不到配置文件。

    5、原因都清楚了,就是class文件存储位置,和配置文件位置,没有配置在web-info目录下。

    6、在修改前,把配置文件做一个备份(web.xml和所有导入的jar包)

    7、右键项目——properties——java build path——Source ,此时就看到编译路径了,这是我修改后的myFirstBlood/WebContent/WEB-INF/classes。(新发现的大陆:在web.xml中使用的classpath就是指代的这个路径,两者是相等关系,就这个也快搞死我了)修改后之前的web.xml和jar包会丢失。需要重新来过一次。然后再去web.xml中配置引入文件的路径就可以了。

    8、我说的可能有瑕疵,忘大神指正,勿喷啊。

    参考:

    spring mvc的web.xml中这个地方的classpath是什么意思?

    首先这个是 web.xml方式定义参数传给Servlet。

    因此,<param-value></param-value>的解释是接收这个参数的servlet执行的。
    dispatchservlet的这个参数是定义配置文件的位置的。

    而spring中对资源文件的处理做了抽象化,可以用符合 URI规范的方式声明文件位置,
    具体的实现类会解析这个字符串,(可以看spring的Resource相关的文档)
    根据里面的声明 来使用合适的方式读取。

    1、classpath:开头的意思是说从 classpath中寻找目标文件。

    web application的classpath包含 WEB-INF/lib下的所有jar包和WEB-INF/classes目录

    2、编译后的class路径。/WEB-INF/classes/

  • 相关阅读:
    (转)AS3中实现卡马克卷轴算法
    (转)flash位图缓存cacheAsBitmap
    (转)addFrameScript函数的纠结
    (转)flash安全策略文件
    (转)脏矩形技术学习
    (转)stopImmediatePropagation 和stopPropagation的区别
    (转)flash对象池技术
    揭开嵌入式C面试题背后的玄机
    一次遍历找链表倒数第n个节点
    N!的尾部连续0的个数
  • 原文地址:https://www.cnblogs.com/zxg-blog/p/6478809.html
Copyright © 2020-2023  润新知