前几天公司要求做个演示,用jfinal简单搭了个小东东,但是部署到tomcat下的时候出现了诸多问题。
在Myeclipse中引入的jfinal项目不能导出war包
这个问题不是jfinal的问题,是myeclipse和eclipse之间项目互转的问题,可以参考这个地址http://blog.sina.com.cn/s/blog_6ba3371b01014ygh.html
2.项目的war包直接放到tomcat的webapps下会有项目被加载两次的问题
这个可以参考https://my.oschina.net/jfinal/blog/353062 , 当时我也是按照这个方法做的,可是就是没有作用,今天自己在家又试了一次,结果正常了,明天还要在公司的环境上试一试
3.静态文件的路径问题
开发环境中,用的是jetty-server,直接运行就行,路径全用的相对路径,当部署到tomcat时,相对路径都找不到...悲了个催了。
1:假定你的资源路径使用的是相对路径,也就是说没有以 "/" 打头,或者是没有以 "http://" 打头的路径
2:根据 java web 规范,资源的最终路径会跟着地址栏当前路径去变化,例如,你的某个资源是 <img src="abc.jpg">
3:假定你当前地址栏里面是 "localhost/xxx" 那么资源的最终路径会变成: "locahost/xxx/abc.jpg",而当地址栏里面的路径是 "localhost/yyy" 的时候,你的资源最终路径会立即变成 "/localhost/yyy/abc.jpg"
4:这个问题与 jfinal 毫无关系,无论你用的什么 java 开发框架都是这个行为,是需要自己先有个认知
解决办法无非就是两个:
1:资源使用绝对路径,以 "/" 打头,或者以 "http://" 打头,并且将 contextpath 设置为 "" 值
2:否则就需要在资源路径前面使用一个变量,例如: <img src="${CONTEXT_PATH}abc.jpg"> 然后将这个 CONTEXT_PATH 始终赋上正确的值即可
很显然方法一最省事,不折腾