工做(job)的CRUD
一. 之後開發要注意,一個domain的屬性(一張表中的列)在開發的時候必定要先把它搞清楚
1.這個屬性的意思(含義)
2.研究這個屬性的類型
3.這個屬性的值從哪裏來???
private Integer id;
//職位標題(Java高級工程師,會計,育兒嫂)
private String title;
//工做地址(北京,上海,工龍村)
private String address;
//工做地址對應的id
private Integer address_id;
//招聘人數
private Integer jobnum;
//待遇(工資)
private Integer treatment;
//職位描述(相關專業,長得帥)
private String describes;
//職位要求(會CSS,JS,Java,Spring等技術)
private String requires;
//靜態網站的地址(靜態化的效果,明天再講)
private String htmlurl;
//職位類型(1->全職,0->兼職)
private Integer positiontype;
//是否啓用
private Boolean isenabled;javascript
二.完成後端的CRUD【和前面作的是同樣的】
三.回顯功能
<select id="address" name="address_id" class="form-control">
<c:forEach items="${addressList}" var="address">
<option value="${address.id}"
<c:if test="${address.id==job.address_id}">
selected
</c:if>
>${address.name}</option>
</c:forEach>
</select>
四.建立視圖
至關因而一個假表
create view 視圖名稱 as select....
能夠直接查詢視圖
select * from 視圖名稱
五.模板技術
動態網頁(數據可變)與靜態網頁(訪問快,SEO排名高)
動態網頁靜態代(僞靜態[只改後綴],真靜態)
用到模板技術:數據+模板=輸入文本
freemarker【ftl】,velocity【vm】html
F12->看js有沒有錯,再看網絡傳參有沒有問題
若是前端沒有問題,問題就在後端(有沒有接收參數,若是接收到了,有沒有調用方法,SQL有沒有寫對,數據有沒有返回)
沒有找到 -> 比較法,打印法,刪除法前端
freemarker:是比較流行的一個模板技術【ftl】
使用freemarker的步驟(之後只須要百度查找便可)
1.導包(freemarker是一個小框架)
2.建立一個配置對象Configuration(加個版本)
3.設置加載路徑
4.設置字符集(默認)
5.建立模板(準備一個ftl模板)
6.準備數據(Map,對象)
7.數據+模板=輸出文件(Writer)
案例一:代碼生成器(半成品) -> 下一個項目會有一個插件
案例二:動態網頁靜態化(添加,修改)
修改的時候須要把原生的那個靜態化頁面刪除
刪除數據的時候也要把靜態化頁面刪除
須要把路徑記錄下來,纔可能去找到這個靜態化頁面java
一.高級查詢
1.1 拼接where條件的字符串(第一個條件前面加where,其它的條件前面加and)
a. 先加一個 where 1=1 -> 影響查詢性能
b. 準備一個標籤 flag=true -> true就是where,false就加and
默認是true,每一次就加where,加完後把它改回成false(第n次就改加使用and)
代碼量比較大
c. 準備一個List<String>,裝的就是每個條件(前面沒有where與and)
遍歷這個集合的時候,第一次加where,其它的狀況加and
在理解上,使用就仍是有點麻煩
d. 把第一個and替換成where -> 比較簡單,不影響性能
whereSql.replaceFirst("and", "where");
1.2 dao中須要加上where條件
查詢總條數與查詢當前頁的數據 -> where條件是同樣的
二.高級查詢+分頁
以前的分頁是直接一個超鏈接,發送請求就能夠成功了。可是當咱們有了高級查詢條件後,這個分頁會致使高級查詢的條件丟失!
解決方案:點擊分頁的時候提交表單(表單中就有我們的分頁以及查詢數據)
2.1 在form中加上了一個隱藏域 (當前頁)
注意:這裏必需給一個初始頁數
<input type="hidden" name="currentPage" id="currentPage" value="1" />
2.2 修改我們的a標籤(訪問咱們的一個js方法)
<a href="javascript:goPage(傳的頁數);">上一頁/下一頁/..</a>
2.3 完成goPage方法
function goPage(page){
//1.把當前頁傳到隱藏域中
document.getElementById("currentPage").value= page;
//2.提交表單
document.getElementById("表單id").submit();
}
三.登陸功能(Spring的攔截器)
select * from t_user where username=? and password=?
3.1 登陸的功能:
1.獲取前臺傳過來的用戶名與密碼
2.根據用戶名與密碼到數據庫中查詢當前登陸用戶
3.若是查詢到了用戶 -> 把用戶存在sessoin中,跳轉到主頁面
若是沒有查詢到用戶 -> 跳轉到登陸頁面
3.2 登陸的攔截
1.準備一個Spring的攔截器
class LoginInterceptor 實現 HandlerInterceptor
preHandle:在執行方法以前進行的攔截
返回false表明不放行
返回true表明放行
2.對攔截器進行相應的配置(applicationContext-mvc.xml)
<mvc:interceptors>
<mvc:interceptor>
<!--你要攔截的是哪些請求 -->
<mvc:mapping path="/**"/>
<!--配置你不攔截的請求 -->
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/assets/**"/>
<!-- 全部請求都會通過這個攔截器 -->
<bean class="cn.itsource.cms.web.interceptor.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
3.在攔截器中實現功能
到session中拿當前登陸用戶
若是沒有拿到 -> 跳回登陸頁面
若是拿到,直接放行web