嘗試用JFinal開發個開源的社團管理系統,把開發過程當中遇到的問題和解決辦法記下來,以供參考。 javascript
部署jfinal_demo_for_jsp到tomcat上 css
問題一、css, js文件加載失敗。
緣由:路徑問題
解決辦法:
一、將「/css/manage.css」等相似的路徑改成"css/manage.css",去掉最前面的「/」,不在根路徑下的要改爲形如"../css/manage.css"等相對路徑。若是項目是部署在tomcat root目錄下就能夠不用改。
二、發現使用相對路徑仍是不方便,jfinal會在路徑中包含子文件夾,仍是抽取個文件出來,寫絕對路徑吧,其餘文件包含這個文件就能夠了。 其中jquery換成了最新版的,比demo裏的1.4.4版本大了13.6k java
<%@ 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>
<jsp:include page="/inc/inc.jsp"></jsp:include>這裏要寫絕對路徑 jsp標籤裏的絕對路徑是帶項目名的,靜態文件中的絕對路徑指的是服務器的根路徑,不帶項目名
三、前臺問題解決了,後臺又出問題。最終採用的解決辦法是:將tomcat的根路徑指定爲項目文件夾
修改/conf/server.xml,在</host>標籤以前加入如下內容 jquery
<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>標籤解決路徑問題
web
<% String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <base href="<%=basePath%>"> <link rel="stylesheet" type="text/css" href="css/common.css">在前臺直接跳轉的時候,也會出現路徑問題,解決辦法與base相似
var fromPageName="<%=basePath%>"+"voucherApprove.jsp"; window.location.href= fromPageName;