JavaWeb學習筆記13--MVC&EL&JSTL

上一篇:JavaWeb學習筆記12–JSP
下一篇:JavaWeb學習筆記14–Filter&Listener

MVC:開發模式

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用戶交互的同時,不需要重新編寫業務邏輯。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語句
		* 屬性: begin:開始值
                end:結束值
                var:臨時變量
                step:步長
                varStatus:循環狀態對象
                index:容器中元素的索引,從0開始
                count:循環次數,從1開始
        <!--重複操作-->       
        <c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
        ${i} ${s.index} ${s.count} <br>
        </c:forEach>
        <!--遍歷集合-->
        <c:forEach items="${list}" var="str" varStatus="s">
        ${s.index} ${s.count} ${str}<br>
        </c:forEach>

5. 練習:
* 需求:在request域中有一個存有User對象的List集合。
* 需要使用jstl+el將list集合數據展示到jsp頁面的表格table中。

<%@ page import="cn.itcast.domain.User" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
<head>
    <title>test</title>
</head>
<body>
<%
    List list = new ArrayList();
    list.add(new User("張三",23,new Date()));
    list.add(new User("李四",24,new Date()));
    list.add(new User("王五",25,new Date()));
    request.setAttribute("list",list);
%>
<table border="1" width="500" align="center">
    <tr>
        <th>編號</th>
        <th>姓名</th>
        <th>年齡</th>
        <th>生日</th>
    </tr>
    <%--數據行--%>
    <c:forEach items="${list}" var="user" varStatus="s">
        <c:if test="${s.count % 2 != 0}">
            <tr bgcolor="red">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>
        <c:if test="${s.count % 2 == 0}">
            <tr  bgcolor="green">
                <td>${s.count}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
                <td>${user.birStr}</td>
            </tr>
        </c:if>
    </c:forEach>
</table>
</body>
</html>

三層架構:軟件設計架構

    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. 部署運維

上一篇:JavaWeb學習筆記12–JSP
下一篇:JavaWeb學習筆記14–Filter&Listener

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