关于Jfinal中ContextPathHandler的作用

关于DEMO怎么?
嗯 置于这个问题么,你有三种方式,第一,你来OSC上找,第二,搜索Jfinal群,不过这两个方式指向同一个位置,JFinal的官方站点。上面有各种版本的源码,因为开源,所以你能够改成你任何想要的样子,这个我就不多说了,免得被误认为打广告!!

关于DEMO的样式丢失问题!
这个问题基本上就是你的资源文件路径加载不正确的原因,因为在这个DEMO里面,他的资源文件路径是没有使用绝对路径的(如果我没有记错的话),也就相当于你在引用资源文件的时候路径写错了,最常见的问题就是项目的名称丢失造成的,举个例子啊:
假如你的项目就叫DEMO,WEB容器是TOMCAT,在正常情况下,你如果要访问这个项目的话,你是不是要按照这样的方式去做:
http://localhost:8080/demo 去访问你的项目???(注意:demo是你的项目名称)
那么现在事情的发展过程是这样的,在这个DEMO里面他所有资源文件都是相对路径,也就是说你访问的地址已经指向了某个页面,但是由于相对路径的存在,他资源文件可能指向的文件不一定是你的项目里的。

具体体现就是“/demo/index.html”(这个页面能够正常访问,http://localhost:8080/demo/index.html),但是他的css或者js指向的文件路径可能是(http://localhost:8080/css/yourstyle.css)这样一来,就资源加载失效了。

已经有N个群友遇到过这个问题,下面详细说说这个解决的方法:
其实只要在你自己的Config中找到以下方法


public void configHandler(Handlers me) {  

    me.add(new ContextPathHandler("contextPath"));//假如这个
} 

然后在你的模版页面里面加入以上这个“contextPath”的变量就行
假如你的模版引擎是FreeMarker,你就加${contextPath}
假如你的模版引擎是JSP,你就加${contextPath}
也就是这样

js也是类似。
基本这样写,能够解决你80%的问题,假如你故意写错这个加载路径不在讨论的范围之类。所以我认为,使用Jfinal的时候,资源文件的加载路径都是建议使用绝对路径而不是相对路径.因为这样很好排错!!!

你可能感兴趣的:(demo,样式丢失)