javascript
【HM】第11课:JSTL标签+JSP开发模式
<pre>
?
day11
?
昨天內容回顧
?????????(1)jsp
???????? *jsp的三個指令
???????? *jsp里面九個內置對象
?????????????????? request
?????????????????? response
?????????????????? session
?????????????????? config
?????????????????? application
?????????????????? exception
?????????????????? page
?????????????????? out:out輸出機制
?????????????????? pageContext
?
?????????(2)javabean
???????? *jsp的動作標簽
???????? *beanutils框架
?
?????????(3)el表達式
?????????????????? *el表達式獲取域對象里面的值
?????????????????? *el表達式獲取域對象里面數組,集合,對象的屬性的值
?思維導圖
?
1、jstl的簡介
???????? *和指令taglib一起使用,替代頁面中的<%%>
???????? *JavaServerPages Standard Tag Library:jsp標準的標簽庫
????????
???????? *第一步:想要使用jstl,首先需要導入jar包
?
???????? *jstl版本?1.0? 1.1和1.2
???????? **1.0版本出現j2ee1.4時代,jsp里面不支持el表達式
?
???????? *第二步:如果想要在jsp里面使用jstl,需要在頁面上寫指令taglib,在指令里面引入標簽庫
???????????????????= <%@ taglib uri="標簽庫的路徑" prefix="標簽庫的別名" %>
?????????????????? = <%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c" %>
?
???????? *jstl的入門案例
???????? =代碼
???????? ??? <%
?????????????????? inti =5;
?????????????????? if(i== 5) {
???????? ??? %>
?????????????????? <h1>5</h1>
???????? ??? <% ?
?????????????????? }else {
???????? ?? ?%>
?????????????????? <h2>other</h2>
???????? ??? <% ?
?????????????????? }
???????? ???? %>
???????? ????
???????? ???? <hr/>
???????? ???? <!--?使用jstl標簽實現上面的效果-->
???????? ???? <c:set var="m"value="10"></c:set>
???????? ???? <c:if test="${m==10 }">
?????????????????? <h1>10</h1>
???????? ???? </c:if>
???????? ???? <c:if test="${m!=10 } }">
?????????????????? <h1>other</h1>
???????? ???? </c:if>
?
2、jstl的if標簽和choose標簽
???????? *if標簽:條件的判斷
???????? **寫法:?<c:if test="條件"></c:if>
???????? **在jstl里面沒有<c:else>標簽
?
???????? *choose標簽:條件的判斷,類似于java里面switch語句
???????? =代碼
???????? ??? <!-- choose標簽的使用?-->
???????? ??? <!--
?????????????????? switch(m){
??????????????????????????? case2:
???????????????????????????????????? break;
??????????????????????????? case3:
???????????????????????????????????? break;
??????????????????????????? default:
???????????????????????????????????? .....
?????????????????? }
???????? ???? -->
???????? ???? <c:set var="a"value="50"></c:set>
???????? ???? <c:choose>???????????????????? //類似于java里面switch語句
?????????????????? <c:whentest="${a==3 }">??? //類似于java里面?case語句
??????????????????????????? <h1>3</h1>
?????????????????? </c:when>
?????????????????? <c:whentest="${a==5 }">
??????????????????????????? <h1>5</h1>
?????????????????? </c:when>
?????????????????? <c:otherwise>?? ?????????????//類似于java里面default
??????????????????????????? <h1>other</h1>
?????????????????? </c:otherwise>
???????? ???? </c:choose>
?
3、jstl的forEach標簽的使用(*****)
?????????(1)遍歷域對象里面的數組、集合(list、set、map),域對象里面的多個對象的屬性的值
???????? *實現遍歷操作的標簽
???????? *寫法:?<c:forEach var="" items="域對象里面的值"></c:forEach>
?
?????????操作一:遍歷域對象里面的數組的值
???????? =代碼:
???????? ???<!-- forEach標簽的使用?-->
???????? ??? <!--?使用jstl的標簽遍歷域對象里面的數組的值?-->
???????? ??? <%
?????????????????? //定義數組
?????????????????? String[]arr = {"zhangsan","lucy","wangwu"};
?????????????????? //把數組放到域對象里面
?????????????????? request.setAttribute("arr",arr);
???????? ???? %>
???????? ???? <!--?使用el表達式通過下標獲取-->
???????? ???? ${arr[0] }
???????? ???? <hr/>
???????? ???? <%--
???????? ???????? for(String a:arr) {}
???????? ????? --%>
???????? ???? <c:forEach var="a"items="${arr }">
?????????????????? ${a}<br/>
???????? ???? </c:forEach>
?
?????????操作二:遍歷域對象里面list、set集合的值
???????? =代碼一:
???????? ???? <%--
???????????????????類似于java增強for? for(String l : list) {}
???????? ????? --%>
???????? ???? <c:forEach var="l"items="${list }">
?????????????????? ${l}<br/>
???????? ???? </c:forEach>
???????? =代碼二:
???????? ?????? <!--
?????????????????? for(Strings:set) {}
???????? ?????? -->
???????? ?????? <!--?使用jstl的標簽遍歷set里面的值?-->
???????? ?????? <c:forEach var="s"items="${set }">
??????????????????????????? ${s}
???????? ?????? </c:forEach>
????????
?????????操作三:遍歷域對象里面的map集合的值
???????? =代碼
???????? ??? <!--?使用jstl標簽遍歷map集合里面的值?-->
???????? ??? <%
?????????????????? Map<String,String>map = new HashMap<String,String>();
?????????????????? map.put("aaa","AAA");
?????????????????? map.put("bbb","BBB");
?????????????????? map.put("ccc","CCC");
?????????????????? request.setAttribute("map",map);
???????? ???? %>
???????? ???? <!--?類似于遍歷map的一種方式:得到key-value的關系?-->
???????? ???? <c:forEach var="m" items="${map}">
?????????????????? ${m.key},${m.value }<br/>
???????? ???? </c:forEach>
?
?????????操作四:有多個對象stu,把多個對象放到域對象里面,jstl遍歷域對象里面的多個對象
???????? =代碼
???????? ???? <!--?把多個對象放到域對象里面?-->
???????? ???? <%
?????????????????? Useruser1 = new User();
?????????????????? user1.setId("1");
?????????????????? user1.setUsername("zhangsan");
?????????????????? user1.setPassword("123456");
??????????????????
?????????????????? Useruser2 = new User();
?????????????????? user2.setId("2");
?????????????????? user2.setUsername("lisi");
?????????????????? user2.setPassword("3333");
??????????????????
?????????????????? //如何把多個對象放到與對象里面?
?????????????????? //首先創建一個集合,把多個對象放到集合里面
?????????????????? //最終把集合放到域對象里面
?????????????????? List<User>list = new ArrayList<User>();
?????????????????? list.add(user1);
?????????????????? list.add(user2);?? ?
?????????????????? request.setAttribute("list",list);
???????? ????? %>
???????? ????? <!--?使用jstl標簽獲取域對象里面多個對象的值?-->
???????? ????? <!--
?????????????????? ?for(User user : list) {}
???????? ?????? -->
???????? ????? <c:forEach var="l"items="${list }">
?????????????????? ${l.id},${l.username },${l.password }<br/>
???????? ????? </c:forEach>
?
?
4、jsp的開發模式
???????? *jsp的開發模式有兩種
???????? *模型一和模型二
?
?????????(1)模型一:使用技術jsp+javabean
?
?????????(2)模型二:使用技術jsp+servlet+javabean
?????????????????? *mvc:
?????????????????? **m:模型,使用javabean技術,封裝數據
?????????????????? **v:視圖,使用技術jsp,顯示數據
?????????????????? **c:控制器:使用servlet技術,控制哪個javabean里面的數據顯示到哪個jsp里面
??????????????????????????? ***處理數據:寫service類處理數據
?
?
5、使用mvc的模式實現登錄的功能
?????????(1)準備工作:
???????? *劃分包結構
???????? **cn.itcast.bean: javabean的包
???????? **cn.itcast.servlet:?放servlet類
???????? **cn.itcast.service:?處理數據
???????? **cn.itcast.utils:?操作的工具類(比如操作數據庫的工具類)
?
???????? *創建登錄頁面
???????? **創建在webroot下面?mvc/login.jsp
????????
???????? *導入jar包
???????? **操作數據庫的jar包
???????? **封裝數據到javabean框架jar包
???????? **jstl的jar包
????????
???????? *創建數據庫,創建表
?
???????? *?復制操作數據庫的工具類和配置文件
?
?????????(2)開始開發
???????? *在login.jsp頁面中創建表單提交到servlet里面
???????? *實現servlet:
?????????????????? servlet里面進行的操作
?????????????????? **得到提交的數據
?????????????????? **把數據封裝到javabean
?????????????????? **調用service里面的方法實現判斷用戶名和密碼
????????
???????? =代碼片段:
???????? **在servlet里面代碼
???????? ==//調用service里面的方法實現判斷用戶名和密碼
?????????????????? UserServiceservice = new UserService();
?????????????????? booleanflag = service.checkUser(user);
?
=====================================================================
?????????上午內容的總結
?????????(1)jstl標簽(if、choose、forEach)
?
?????????(2)jsp開發模式
?????????????????? *模型二(mvc模式)
????????
?????????(3)使用mvc模式開發系統
?????????????????? *mvc模式開發登錄功能(mvc的代碼的結構)
????????
6、javaee三層架構介紹
???????? *畫圖分析結構
???????? *javaee三層結構:web層,業務邏輯層,持久化層
???????? *dao模式:數據訪問對象,專注于對數據庫進行操作的模式
???????? *dao的實現:
?????????第一步:創建一個操作數據庫表的接口
?????????第二步:創建這個接口的實現類,實現接口的里面的放
???????? *在業務邏輯層通過dao的接口調用里面的方法,實現功能
?
???????? *要求:在dao里面傳遞數據的時候,一般都是使用對象形式進行傳遞
?
???????? *mvc和dao模式
???????? **不同的時期由不同的人提出兩種模式;mvc是開發人員提出的,dao是sun公司提出的。
???????? ***dao只是用在持久化層,mvc是系統整體的架構
?
7、練習二:使用mvc+dao模式實現登錄功能
?????????(1)準備工作
???????? *劃分包結構
???????? **cn.itcast.bean: javabean的包
???????? **cn.itcast.servlet:?放servlet類
???????? **cn.itcast.service:?處理數據
???????? **cn.itcast.dao:?寫dao接口和實現類
???????? **cn.itcast.utils:?操作的工具類(比如操作數據庫的工具類)
?
???????? *導入jar包
?
???????? *創建數據庫,創建表
?
???????? *復制操作數據庫的工具類和配置文件
?
?????????(2)在service里面需要調用dao里面的方法實現功能
?????????????????? =代碼
?????????????????? UserDAOdao = new UserDAOImpl();
?????????????????? booleanflag = dao.checkUserName(user);
????????
?????????(3)在dao包里面定義一個接口,創建一個實現類
?
?
8、練習三:使用dao+mvc模式實現注冊的功能
?????????(1)實現思路:
???????? **首先創建一個注冊頁面
???????? **在注冊頁面中寫表單,提交到servlet里面
???????? **在servlet里面獲取提交的數據,封裝到javabean里面,調用service里面的方法實現功能
???????? **在service里面調用dao里面的方法實現
?
???????? **注冊功能最終目的:向數據庫表里面添加一條記錄
?
?????????(2)注冊時候有id值,想要id值每次都不相同(每次都是唯一的一個值)
???????? *有兩種解決方法
?????????第一種:創建表時候,把id字段設置成主鍵,讓主鍵自動增長
?????????????????? *create table t1(
??????????????????????????? idint primay key auto_increment
?????????????????? )
?????????????????? **如果想要某個字段字段增長,類型必須是int類型
?????????????????? *sql語句:?insert into table values(null,'','');
?????????第二種:?手動生成一個唯一隨機的字符串,把字符串封裝到javabean里面,完成添加
?????????????????? *毫秒數
?????????????????? *使用工具類生成唯一的字符串:?UUID是一個工具類,
?????????????????? ***這個工具類里面有一個方法randomUUID()?可以生成唯一的字符串
?????????????????? Stringuuid = UUID.randomUUID().toString();
?????????????????? //去掉-
?????????????????? uuid= uuid.replaceAll("-", "");
?????????第三種:如果輸入id值,可以到數據庫去查看,如果有相同的id,不進行添加
?
9、練習四:使用dao+mvc模式實現顯示所有的用戶功能
?????????(1)實現思路:
???????? *首先查詢表里面的所有的記錄
?????????????????? **表里面的每條記錄都是一個user對象,有多個user對象
?????????????????? **把多個user對象放到list集合里面
?????????????????? **把list集合放到域對象里面
???????? *創建一個頁面,在頁面中獲取域對象里面list集合的值,顯示到頁面上
?
?????????(2)封裝數據到list集合的代碼
?????????????????? List<User>list = new ArrayList<User>();
?????????????????? while(rs.next()){
??????????????????????????? //創建user對象
??????????????????????????? Useruser = new User();
??????????????????????????? Stringid = rs.getString("id");
??????????????????????????? Stringusername = rs.getString("username");
??????????????????????????? Stringpassword = rs.getString("password");
??????????????????????????? //設置值到user對象里面
??????????????????????????? user.setId(id);
??????????????????????????? user.setUsername(username);
??????????????????????????? user.setPassword(password);
??????????????????????????? //把每次封裝的對象放到list里面
??????????????????????????? list.add(user);
?????????????????? }
????????
?????????(3)在頁面中獲取域對象里面list集合的值
?????????????????? ?<c:forEach var="user"items="${list }">
??????????????????????????? <tr>
???????????????????????????????????? <td>${user.id}</td>
???????????????????????????????????? <td>${user.username}</td>
???????????????????????????????????? <td>${user.password}</td>
??????????????????????????? </tr>
?????????????????? </c:forEach>
?
10、使用json數據進行顯示所有的用戶
?????????(1)如何生成json格式。json插件可以生成json的數據格式
???????? *json插件如果想要使用,首先導入jar包()
?
?????????(2)轉換成json格式的代碼
???????? JSONArrayjson = JSONArray.fromObject(list);
?????????(3)在jsp里面使用js顯示json的數據
???????? ?var user = ${json};
? ???? ?
? ???? ?vartab = "<table border='1'>";
? ???? ?//遍歷數組
? ???? ?for(var i=0;i<user.length;i++) {
? ???? ??????? var u1 = user[i];
? ???? ??????? var id = u1.id;
? ???? ??????? var username = u1.username;
? ???? ??????? var password = u1.password;
? ???? ??????? tab += "<tr><td>"+id+"</td><td>"+username+"</td><td>"+password+"</td></tr>"
? ???? ?}
? ???? ?
? ???? ?tab+= "</table>";
? ???? ?//把表格寫到div里面
? ???? ?vardiv1 = document.getElementById("div1");
? ???? ?div1.innerHTML = tab;
?
?
===========================================================
?????????今天內容的總結
?????????(1)jstl里面三個標簽
?????????????????? *重點掌握forEach
?????????(2)掌握mvc的開發模式
?????????(3)dao的模式
?????????(4)掌握使用dao+mvc模式實現登錄、注冊、顯示所有用戶
?????????(5)掌握list集合如何轉換成json格式,js里面獲取json的數據
?
?????????完成的任務
?????????(1)使用dao+mvc模式實現登錄、注冊、顯示所有用戶代碼至少寫兩遍
?????????(2)使用daom+mvc模式實現刪除記錄的功能
</pre>
? ? ? 本文轉自屠夫章哥 ?51CTO博客,原文鏈接:http://blog.51cto.com/4259297/1671860,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的【HM】第11课:JSTL标签+JSP开发模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2008
- 下一篇: (六)构建Docker私有仓库、Gitl