JFinal使用笔记1-部署demo项目到本地tomcat

http://my.oschina.net/u/173975/blog/110261javascript

 

尝试用JFinal开发个开源的社团管理系统,把开发过程当中遇到的问题和解决办法记下来,以供参考。css

部署jfinal_demo_for_jsp到tomcat上java

问题一、css, js文件加载失败。
缘由:路径问题
解决办法:
一、将“/css/manage.css”等相似的路径改成"css/manage.css",去掉最前面的“/”,不在根路径下的要改为形如"../css/manage.css"等相对路径。若是项目是部署在tomcat root目录下就能够不用改。
二、发现使用相对路径仍是不方便,jfinal会在路径中包含子文件夹,仍是抽取个文件出来,写绝对路径吧,其余文件包含这个文件就能够了。 其中jquery换成了最新版的,比demo里的1.4.4版本大了13.6kjquery

?
1
2
3
<%@ page language= "java" pageEncoding= "UTF-8" %>
<link href= "<%=request.getContextPath()%>/css/manage.css" media= "screen" rel= "stylesheet" type= "text/css" />
<script src= "<%=request.getContextPath()%>/js/jquery-1.9.1.min.js" type= "text/javascript" ></script>
?
1
<span></span><jsp:include page= "/inc/inc.jsp" ></jsp:include>
这里要写绝对路径 jsp标签里的绝对路径是带项目名的,静态文件中的绝对路径指的是服务器的根路径,不带项目名 

三、前台问题解决了,后台又出问题。最终采用的解决办法是:将tomcat的根路径指定为项目文件夹
修改/conf/server.xml,在</host>标签以前加入如下内容web

 

?
1
<Context path= "" docBase= "/jfinal_demo" debug= "0" reloadable= "true" crossContext= "true" />

改完以后无论前台仍是后台的路径,直接以"/"开头就能够了

问题二、系统异常
严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application
缘由:缺乏JSTL相关jar包
解决办法:加入jstl.jar和standard.jar加入构建路径,同时删除jetty-server-8.1.8.jar,使用tomcat的时候就不须要这个jar包了

四、经过<base>标签解决路径问题apache

?
1
2
3
4
5
6
7
8
9
10
11
<%
String basePath = request.getScheme()
     + "://"
     + request.getServerName()
     + ":"
     + request.getServerPort()
     + path
     + "/" ;
%>
<base href= "<%=basePath%>" >
<link rel= "stylesheet" type= "text/css" href= "css/common.css" >
在前台直接跳转的时候,也会出现路径问题,解决办法与base相似 
?
1
2
var fromPageName= "<%=basePath%>" + "voucherApprove.jsp" ;
window.location.href= fromPageName;

 

分享到:  3
声明:OSCHINA 博客文章版权属于做者,受法律保护。未经做者赞成不得转载。
 

评论2

  • 1楼:绝望的八皮 发表于 2013-04-29 03:19 回复此评论
    路径问题应该用这个解决
    /**
    * Provide a context path to view if you need.
    * <br>
    * Example:<br>
    * In JFinalFilter: handlers.add(new ContextPathHandler("CONTEXT_PATH"));<br>
    * in freemarker: <img src="${BASE_PATH}/images/logo.png" />
    */
    public class ContextPathHandler extends Handler {
     
  • 2楼:土龙 发表于 2013-04-30 15:00 回复此评论

    引用来自“绝望的八皮”的评论

    路径问题应该用这个解决
    /**
    * Provide a context path to view if you need.
    * <br>
    * Example:<br>
    * In JFinalFilter: handlers.add(new ContextPathHandler("CONTEXT_PATH"));<br>
    * in freemarker: <img src="${BASE_PATH}/images/logo.png" />
    */
    public class ContextPathHandler extends Handler {tomcat

    很是感谢
相关文章
相关标签/搜索