# 總結
~~~
1. MVC開發模式
2. EL表達式
3. JSTL標簽
4. 三層架構
~~~
## JSP:
~~~
1. 指令
* 作用:用于配置JSP頁面,導入資源文件
* 格式:
<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>
* 分類:
1. page : 配置JSP頁面的
* contentType:等同于response.setContentType()
1. 設置響應體的mime類型以及字符集
2. 設置當前jsp頁面的編碼(只能是高級的IDE才能生效,如果使用低級工具,則需要設置pageEncoding屬性設置當前頁面的字符集)
* import:導包
* errorPage:當前頁面發生異常后,會自動跳轉到指定的錯誤頁面
* isErrorPage:標識當前也是是否是錯誤頁面。
* true:是,可以使用內置對象exception
* false:否。默認值。不可以使用內置對象exception
~~~
~~~
2. include : 頁面包含的。導入頁面的資源文件
* <%@include file="top.jsp"%>
3. taglib : 導入資源
* <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
* prefix:前綴,自定義的
2. 注釋:
1. html注釋:
<!-- -->:只能注釋html代碼片段
2. jsp注釋:推薦使用
<%-- --%>:可以注釋所有
~~~
~~~
3. 內置對象
* 在jsp頁面中不需要創建,直接使用的對象
* 一共有9個:
變量名 真實類型 作用
* pageContext PageContext 當前頁面共享數據,還可以獲取其他八個內置對象
* request HttpServletRequest 一次請求訪問的多個資源(轉發)
* session HttpSession 一次會話的多個請求間
* application ServletContext 所有用戶間共享數據
* response HttpServletResponse 響應對象
* page Object 當前頁面(Servlet)的對象 this
* out JspWriter 輸出對象,數據輸出到頁面上
* config ServletConfig Servlet的配置對象
* exception Throwable 異常對象
~~~
## MVC:開發模式
~~~
1. jsp演變歷史
1. 早期只有servlet,只能使用response輸出標簽數據,非常麻煩
2. 后來又jsp,簡化了Servlet的開發,如果過度使用jsp,在jsp中即寫大量的java代碼,有寫html表,造成難于維護,難于分工協作
3. 再后來,java的web開發,借鑒mvc開發模式,使得程序的設計更加合理性
?
2. MVC:
1. M:Model,模型。JavaBean
* 完成具體的業務操作,如:查詢數據庫,封裝對象
2. V:View,視圖。JSP
* 展示數據
3. C:Controller,控制器。Servlet
* 獲取用戶的輸入
* 調用模型
* 將數據交給視圖進行展示
~~~
~~~
* 優缺點:
1. 優點:
1. 耦合性低,方便維護,可以利于分工協作
2. 重用性高
?
2. 缺點:
1. 使得項目架構變得復雜,對開發人員要求高
~~~
## EL表達式
~~~
1. 概念:Expression Language 表達式語言
2. 作用:替換和簡化jsp頁面中java代碼的編寫
3. 語法:${表達式}
4. 注意:
* jsp默認支持el表達式的。如果要忽略el表達式
1. 設置jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表達式
2. \${表達式} :忽略當前這個el表達式
~~~
~~~
5. 使用:
1. 運算:
* 運算符:
1. 算數運算符: + - * /(div) %(mod)
2. 比較運算符: > < >= <= == !=
3. 邏輯運算符: &&(and) ||(or) !(not)
4. 空運算符: empty
* 功能:用于判斷字符串、集合、數組對象是否為null或者長度是否為0
* ${empty list}:判斷字符串、集合、數組對象是否為null或者長度為0
* ${not empty str}:表示判斷字符串、集合、數組對象是否不為null 并且 長度>0
2. 獲取值
1. el表達式只能從域對象中獲取值
2. 語法:
1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值
* 域名稱:
1. pageScope --> pageContext
2. requestScope --> request
3. sessionScope --> session
4. applicationScope --> application(ServletContext)
* 舉例:在request域中存儲了name=張三
* 獲取:${requestScope.name}
?
2. ${鍵名}:表示依次從最小的域中查找是否有該鍵對應的值,直到找到為止。
~~~
~~~
3. 獲取對象、List集合、Map集合的值
1. 對象:${域名稱.鍵名.屬性名}
* 本質上會去調用對象的getter方法
?
2. List集合:${域名稱.鍵名[索引]}
?
3. Map集合:
* ${域名稱.鍵名.key名稱}
* ${域名稱.鍵名["key名稱"]}
~~~
~~~
3. 隱式對象:
* el表達式中有11個隱式對象
* pageContext:
* 獲取jsp其他八個內置對象
* ${pageContext.request.contextPath}:動態獲取虛擬目錄
~~~
## JSTL
~~~
1. 概念:JavaServer Pages Tag Library JSP標準標簽庫
* 是由Apache組織提供的開源的免費的jsp標簽 <標簽>
?
2. 作用:用于簡化和替換jsp頁面上的java代碼
?
3. 使用步驟:
1. 導入jstl相關jar包
2. 引入標簽庫:taglib指令: <%@ taglib %>
3. 使用標簽
?
4. 常用的JSTL標簽
1. if:相當于java代碼的if語句
1. 屬性:
? ? ? ? ? * test 必須屬性,接受boolean表達式
? ? ? ? ? ? ? * 如果表達式為true,則顯示if標簽體內容,如果為false,則不顯示標簽體內容
? ? ? ? ? ? ? * 一般情況下,test屬性值會結合el表達式一起使用
? 2. 注意:
? ? ? * c:if標簽沒有else情況,想要else情況,則可以在定義一個c:if標簽
2. choose:相當于java代碼的switch語句
1. 使用choose標簽聲明 ? ? ? ? 相當于switch聲明
? ? ? 2. 使用when標簽做判斷 ? ? ? ? 相當于case
? ? ? 3. 使用otherwise標簽做其他情況的聲明 ? 相當于default
?
3. foreach:相當于java代碼的for語句
?
5. 練習:
* 需求:在request域中有一個存有User對象的List集合。需要使用jstl+el將list集合數據展示到jsp頁面的表格table中
~~~
## 三層架構:軟件設計架構
~~~
1. 界面層(表示層):用戶看的得界面。用戶可以通過界面上的組件和服務器進行交互
2. 業務邏輯層:處理業務邏輯的。
3. 數據訪問層:操作數據存儲文件。
~~~
## 案例:用戶信息列表展示
~~~
1. 需求:用戶信息的增刪改查操作
2. 設計:
1. 技術選型:Servlet+JSP+MySQL+JDBCTempleat+Duird+BeanUtilS+tomcat
2. 數據庫設計:
create database day17; -- 創建數據庫
use day17; ? -- 使用數據庫
create table user( ? -- 創建表
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(5),
age int,
address varchar(32),
qq varchar(20),
email varchar(50)
);
?
3. 開發:
1. 環境搭建
1. 創建數據庫環境
2. 創建項目,導入需要的jar包
?
2. 編碼
~~~
~~~
4. 測試
5. 部署運維
~~~
學生出現問題匯總:
1.jstl.jar和standard.jar放錯位置。
2.引用核心標簽庫的uri寫錯。
3.導航菜單類有參構造方法,參數有類型,有順序。
4.記得隨時保存代碼。
5.使用forEach的時候items里面沒有使用EL獲取集合數據,會導致菜單屬性找不到異常。
#### 1.列表查詢用戶數據過程分析圖

#### 2.MVC三層架構圖

#### 3.MVC開發模式

- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器