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

    很是感謝
相關文章
相關標籤/搜索