OA項目總結(附程序源碼)

項目感知

利用思維導圖概括項目實現過程以及所需要實現的各項功能

在這裏插入圖片描述

項目中重要知識點

MVC分層設計模式

mvc簡介
m:model 模型層service層和dao層和實體類層
v:view 視圖層jsp頁面
c:controller 控制層servlet

好處:
1、各司其職,互不干擾。
2、有利於開發當中的分工
3、有利於組件中代碼的重用

重定向與請求轉發的區別

重定向:
1、客戶端發送請求,服務器響應,待服務器響應後客戶端又發送請求。兩次請求,不共用request,地址改變爲目標地址
2、重定向跳轉的url採用的是絕對路徑

請求轉發:
1、一次請求,前後共用一個request,地址不變仍爲當前地址
2、請求轉發跳轉的url採取的是相對路徑

JSP中的四個作用域

PageContext
1、生命週期:當對JSP的請求時開始,當響應結束時銷燬。
2、作用範圍:整個JSP頁面,是四大作用域中最小的一個,即超過這個頁面就不能夠使用了。

Request
1、生命週期:在service 方法調用前由服務器創建,傳入service方法。整個請求結束,request生命結束。
2、作用範圍:整個請求鏈(請求轉發也存在)。
3、作用: 在整個請求鏈中共享數據。最常用到:在Servlet 中處理好的數據交給Jsp顯示,此時參數就可以放置在Request域中帶過去

Session
1、生命週期:在第一次調用 request.getSession() 方法時,服務器會檢查是否已經有對應的session,如果沒有就在內存 中創建一個session並返回。當一段時間內session沒有被使用(默認爲30分鐘),則服務器會銷燬該session。
如果服務器非正常關閉(強行關閉),沒有到期的session也會跟着銷燬。
如果調用session提供的invalidate(),可以立即銷燬session。
2、作用範圍:一次會話。
3、作用:HttpSession 在服務器中,爲瀏覽器創建獨一無二的內存空間,在其中保存會話相關的信息。

Application
1、生命週期:當Web應用被加載進容器時創建代表整個web應用的application對象,當服務器關閉或Web應用被移除時,application對象跟着銷燬。
2、作用範圍:整個Web應用。

所用插件

前端代碼插件
Junit
各種工具類(Dbutil、驗證碼、ExcelOperate、自定義異常、DateUtil、Constants)
富文本編輯器kindEditor
日曆插件My97DatePicker
數據導出爲xls:POI
圖表顯示數據Echarts

項目中踩過的雷

1、更改項目後,需要重新部署相關項目,不然會出現各種訪問錯誤

2、使用jquery時,一定不要忘記給id 選擇器加 # 如:$("#btn1")

3、分行的時候一定一定要加空格,不加空格會導致產生sql語句未正確結束的錯誤,如下語句
String sql="select dt.*,e.deptno,e.realname,d.deptname from duty dt "
+ "join employee e on dt.empid=e.empid "
+ “join dept d on e.deptno=d.deptno”;

4、接上個錯誤,如果遍歷的時候,取的字段名錯誤,java.sql.SQLException: 列名無效

5、如果servlet發送的日期數據格式爲"五月 20, 2019",則需要gson對其格式化,如下:
Gson gson = new GsonBuilder().setDateFormat(“yyyy-MM-dd HH:mm:ss”).create();
//按照 yyyy-MM-dd HH:mm:ss格式化。勿忘重啓服務器

6、兩種Date
java.util.Date 時間格式: 年-月-日 時:分:秒.毫秒
java.sql.Date 時間格式:年-月-日

java.sql.Date轉爲java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());

7、在寫ajax時,注意單詞拼寫問題,如果發現所有邏輯都一樣但是就是不出結果過,這說明應該是自己的單詞拼寫的問題(datetype/dataType)
/* date:{“empId”:empId,“deptno”:deptno,“dtDate”:dtDate},
datetype:“text”, */
data:{“empId”:empId,“deptno”:deptno,dtDate:dtDate},
dataType:“text”,

8、報非法參數錯誤,一般是由於在jsp頁面中聲明的變量名與下面傳值的變量名不一致導致,注意仔細觀察 如:
var dtDate——>var dtDtate 但在href拼接是變量名殘缺用dtDate

9、String typeArr[]=request.getParameterValues(“type”); 用於接收jsp頁面的數組數據
String empId=request.getParameter(“empId”); 用於接收的單個數據

10、在jsp頁面的書寫中,使用el表達式應注意:
${param.expId} <==> request.getParameter(“expId”)
request.setAttribute(“key”,value)???

11、在新建一個servlet項目時,在繼承baseServleth後需要:
刪註解(@override),改訪問修飾符(propected 爲 pulic,否則會404)

12、在Oracle中插入日期型數據: to_date(‘2014-02-14’,‘yyyy-mm-dd’)
在Oracle將(已存儲的)日期型數據轉換成字符型數據: to_char(dt.dtdate,‘YYYY-MM-DD’)
將數據庫中的數據與jsp頁面中的日期數據比較時,使用

13、Ajax書寫格式
$.ajax({
url:" ",
type:“post”,
data:{“key”,value},
dataType:“text”,
success:function(data){
});
注:第一個:data:{key,value},可省略,用於控制層獲取相關的值,request.getParameter(“key”);
第二個:data:形參,用於表示從控制層傳來的值,一般會alert一下(alert(data);)

14、""" 作用: 輸出雙引號
System.out.println("""+a+""");-----》“a”

項目源碼分享

項目數據庫表以及源碼見百度雲,下載後請根據修改db.properties
鏈接:https://pan.baidu.com/s/1tiNfz9HQNUaZjF_Mjyjkpg
提取碼:83ip
複製這段內容後打開百度網盤手機App,操作更方便哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章