版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Hibernate框架第一章 數(shù)據(jù)結(jié)構(gòu)1.1認(rèn)識(shí)數(shù)據(jù)結(jié)構(gòu)Ø 數(shù)據(jù):是信息的載體,是能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)、計(jì)算的符號(hào)集合是計(jì)算機(jī)處理的對(duì)象的總稱;Ø 數(shù)據(jù)元素:也稱為結(jié)點(diǎn),是組成數(shù)據(jù)的基本單位;Ø 數(shù)據(jù)項(xiàng):是數(shù)據(jù)的最小單位;Ø 數(shù)據(jù)對(duì)象:是具有相同特征的數(shù)據(jù)元素的集合,它是數(shù)據(jù)的子集;Ø 數(shù)據(jù)結(jié)構(gòu):計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式;l 邏輯結(jié)構(gòu):指從邏輯關(guān)系上描述數(shù)據(jù),與數(shù)據(jù)的存儲(chǔ)無關(guān),且獨(dú)立于語言;n 線性結(jié)構(gòu):有且僅有一個(gè)開始結(jié)點(diǎn)和一個(gè)終端結(jié)點(diǎn),所有結(jié)點(diǎn)最多只有一個(gè)前驅(qū)結(jié)點(diǎn)和一個(gè)直接后繼結(jié)點(diǎn);n 非線性結(jié)構(gòu):指一個(gè)結(jié)點(diǎn)可能有多個(gè)直接前驅(qū)和直接后繼
2、結(jié)點(diǎn)。l 存儲(chǔ)結(jié)構(gòu):指數(shù)據(jù)元素及其關(guān)系在計(jì)算機(jī)存儲(chǔ)時(shí)如何表示,依賴于語言;l 數(shù)據(jù)運(yùn)算:通茶昂貴定義在數(shù)據(jù)的邏輯結(jié)構(gòu)上。1.2算法Ø 是為求解一個(gè)問題需要遵循的,被清晰的制定的簡(jiǎn)單指令的集合;正確的算法有如下特點(diǎn):l 用待處理問題的相關(guān)信息作為輸入數(shù)據(jù)l 對(duì)一個(gè)既定的合法輸入,多次執(zhí)行同一算法,總返回同一個(gè)結(jié)果(隨機(jī)算法除外)l 算法中的指令是可行的,即每個(gè)指令都可以實(shí)現(xiàn)l 算法中指令的數(shù)量是有限的l 算法執(zhí)行完畢后,能夠輸出正確的數(shù)據(jù)集合1.3算法分析Ø 目的在于選擇合適的算法,算法分析是從復(fù)雜度來考慮的。復(fù)雜度:衡量一個(gè)算法好壞的重要手段;l 時(shí)間復(fù)雜度:以算法執(zhí)行時(shí)間
3、長(zhǎng)短來衡量l 空間復(fù)雜度:以算法執(zhí)行占用的存儲(chǔ)空間來衡量第二章 算法第三章 設(shè)計(jì)模式3.1面向?qū)ο笤O(shè)計(jì)原則Ø 單一職責(zé)原則:要求每個(gè)對(duì)象應(yīng)該只有一種責(zé)任;Ø 開閉原則:設(shè)計(jì)程序時(shí)對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉;Ø 里氏替換原則:任何情況下,子類替換父類,不會(huì)影響程序運(yùn)行;Ø 依賴倒置原則:提倡高層不依賴底層,二者都依賴抽象;Ø 接口隔離原則:把多個(gè)功能分開聲明,不強(qiáng)迫客戶實(shí)現(xiàn)不需要的功能;Ø 迪米特原則:最少只是原則盡可能的降低訪問級(jí)別;Ø 組合/聚合復(fù)用原則:盡量不用繼承達(dá)到復(fù)用類的目的,而是使用組合和聚合。3.2設(shè)計(jì)模式分類
4、216; 創(chuàng)建型模式:如何創(chuàng)建對(duì)象以及何時(shí)創(chuàng)建對(duì)象,工廠模式,單例模式Ø 結(jié)構(gòu)型模式:對(duì)象該如何組織以及采用什么樣的結(jié)構(gòu)更合理Ø 行為型模式:規(guī)定了各個(gè)對(duì)象應(yīng)該具備的職責(zé)以及對(duì)象間的通信模式3.3什么是框架Ø 應(yīng)用程序骨架;框架技術(shù)的優(yōu)勢(shì)在于:l 不用再考慮公共問題,框架已經(jīng)幫我們做好了l 可以專心在業(yè)務(wù)邏輯上,保證核心業(yè)務(wù)邏輯的開發(fā)質(zhì)量l 結(jié)構(gòu)統(tǒng)一,便于學(xué)習(xí)、維護(hù)l 框架集成的前人的經(jīng)驗(yàn)有助于寫出穩(wěn)健、性能優(yōu)良并且結(jié)構(gòu)優(yōu)良的高質(zhì)量程序3.4主流框架3.4.1 Struts框架Ø 最早的Java開源框架之一,定義了通用的Controller(控制器),通
5、過配置文件(一般是struts-config.xml)隔離了Model(模型)和View(視圖),以Action的概念對(duì)用戶請(qǐng)求進(jìn)行了封裝,是代碼更清晰易讀。3.4.2 Struts2框架Ø 新的框架特性:l 從邏輯中分離出橫切關(guān)注點(diǎn)的攔截器l 減少或者消除配置文件l 貫穿整個(gè)框架的強(qiáng)大表達(dá)式語言l 支持可變更和可重用的基于MVC模式的標(biāo)簽API3.4.3 Hibernate框架Ø 對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,可以應(yīng)用在任何使用JDBC的場(chǎng)合3.4.5 Spring框架Ø 輕量級(jí)框架,主要作為依賴注入容器和AOP實(shí)現(xiàn)存在,還提供了聲明式事務(wù)、對(duì)DAO層的
6、支持等簡(jiǎn)化開發(fā)功能。其優(yōu)點(diǎn)有:l 低侵入式設(shè)計(jì),代碼污染極低l 獨(dú)立于何種應(yīng)用服務(wù)器,可以真正實(shí)現(xiàn)“Write Once,Run Anywhere”l Spring的DI機(jī)制降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性l Spring開發(fā)并不完全依賴于Spring的所有組件,開發(fā)者可以自由選擇使用Spring框架的部分或全部組件。 第四章Hibernate實(shí)現(xiàn)數(shù)據(jù)操作4.1 Hibernate概述一個(gè)優(yōu)秀的Java持久化層解決方案,是當(dāng)今主流的對(duì)象-關(guān)系映射(ORM)工具4.1.1 理解持久化l 瞬時(shí)狀態(tài):程序退出,數(shù)據(jù)就不存在了l 持久狀態(tài):在程序退出后,以文件的形式保存在硬盤中。l 持久化:將程序中的數(shù)據(jù)在
7、瞬時(shí)狀態(tài)和持久之間轉(zhuǎn)換的機(jī)制4.1.2 對(duì)象-關(guān)系映射:能在對(duì)象和關(guān)系型數(shù)據(jù)庫(kù)兩者之間進(jìn)行數(shù)據(jù)轉(zhuǎn)換的機(jī)制4.2 搭建Hibernate項(xiàng)目環(huán)境l 加載Hibernate驅(qū)動(dòng)包;l 創(chuàng)建Hibernate.cfg.xml文件,指定數(shù)據(jù)庫(kù)連接信息及其映射文件路徑l 創(chuàng)建持久化類和映射文件,并在Hibernate.cfg.xml中指定映射文件路徑l 創(chuàng)建Hibernate連接工具類4.3 在Hibernate中執(zhí)行持久化操作的步驟1) 讀取并解析配置文件,讀取并解析映射文件,創(chuàng)建SessionFactory,打開sessionSession session=new Configuration().c
8、onfigure().buildSessionFactory().openSession();2) 開啟事務(wù)(增刪改必須)Transaction tx=session.beginTransaction();3) 持久化操作session.save(emp);4) 提交事務(wù)mit();5) 關(guān)閉sessionsession.close();4.4 實(shí)體對(duì)象的生命周期Ø 由產(chǎn)生到被GC回收的一段過程1) 自由狀態(tài)(Transient)2) 持久狀態(tài)(Persistent)3) 游離狀態(tài)(Detached) 第五章 Hibernate關(guān)聯(lián)映射及高級(jí)查詢5.1 配置對(duì)象關(guān)聯(lián)屬性5.1.1對(duì)象
9、關(guān)聯(lián)關(guān)系種類Ø 一對(duì)多(多對(duì)一)關(guān)聯(lián)Ø 一對(duì)一關(guān)聯(lián)Ø 多對(duì)多關(guān)聯(lián)5.1.2 一對(duì)多(多對(duì)一)配置1) 刪除外鍵2) 持久化類添加關(guān)聯(lián)類的相關(guān)屬性及getter/setter方法3) 映射文件中建立該屬性和數(shù)據(jù)庫(kù)表字段的映射信息<set name="emps" cascade="all" lazy="false"><key column="DNO"></key><one-to-many class="cn.wang.entity.Emp
10、" /></set><many-to-one name="dept" class="cn.wang.entity.Dept"column="DNO" lazy="false" />5.1.3 一對(duì)一配置<many-to-one name="resume" class="cn.wang.entity.Resume" unique="true" column="rid" lazy="f
11、alse"></many-to-one><one-to-one name="userInfo" class="cn.wang.entity.UserInfo"property-ref="resume" ></one-to-one>5.1.3 多對(duì)多配置Ø 創(chuàng)建中間表、兩端數(shù)據(jù)庫(kù)表的持久化類,針對(duì)中間表的持久化類分別和兩端的數(shù)據(jù)庫(kù)表的持久化類創(chuàng)建一對(duì)多的關(guān)聯(lián)<set name="teas" table="tea_stu_temp"
12、 lazy="false" inverse="true"><key column="SNO"></key><many-to-many column="TNO" class="cn.wang.entity.Teacher" /></set><set name="stus" table="tea_stu_temp" cascade="all" lazy="false&qu
13、ot;inverse="false"><key column="TNO"></key><many-to-many column="SNO" class="cn.wang.entity.Student" /></set>5.2 HQL查詢Ø 步驟:得到Session編寫HQL語句創(chuàng)建Query對(duì)象執(zhí)行查詢,得到結(jié)果Ø 屬性查詢:直接指定屬性:select eno,ename from Emp通過構(gòu)造方法:select new Emp(eno,e
14、name) from EmpØ 實(shí)體更新:update Emp set ename=xxxwhere eno=10001Ø 實(shí)體刪除:delete from Emp where eno=10001Ø 占位符:from Emp where eno=?Ø 命名參數(shù):from Emp where eno=:enoØ 查詢排序:默認(rèn)升序:from Emp order by eno 指定降序:from Emp order by eno desc 升序 :ascØ 分頁(yè):Query接口提供的方法:setFirstResult(); setMaxR
15、esult();第六章 Criteria查詢及命名查詢6.1 Criteria查詢概述Ø Criteria查詢又稱對(duì)象查詢,采用對(duì)象的方式封裝查詢條件,并提供Restrictions等類型做輔助,是傳統(tǒng)SQL的對(duì)象化表示:Criteria c=sesson.createCriteria(Emp.class);c.list();獲取所有數(shù)據(jù);Ø Restrictions限制結(jié)果集:按薪資降序:c.addOrder(Order.desc("salary");按編號(hào)查詢:c.add(Restrictions.eq("dept.dno", d
16、no);按薪資區(qū)間查詢c.add(Restrictions.between("salary", minSalary, maxSalary);查詢指定屬性:ProjectionList p = PjectionList();p.add(Property.forName("eno");p.add(Property.forName("ename");p.add(Property.forName("salary");c.setProjection(p);查詢最高工資:c.setProjectio
17、n(Projections.max("salary");分頁(yè)并排序:c.setFirstResult(pageIndex - 1) * pageSize); c.setMaxResults(pageSize); c.addOrder(Order.desc("salary");6.2 命名HQL查詢Ø 修改相應(yīng)的映射文件(與class標(biāo)簽并列):<query name=”aaa”><!CDATAHQL語句></query>Ø 在程序中使用session對(duì)象的getNamedQuery()方法獲取在映射
18、配置文件中添加的HQL插敘語句Query query=session.getNamedQuery(“aaa”);6.3 本地sql查詢String sql=”select e.* from Emp where e.ename=ccc”SQLQuery query=session.createSQLQuery(sql).addEntity(“e”,Emp.class)6.4 命名sql查詢<sql-query name=”aaa”><!CDATASelect e.* from Emp e where e.ename=”nn”><return alias=”e” cl
19、ass=”cn.wang.entity.Emp”></sql-query>Query query=session.getNamedQuery(“aaa”);6.5 定制SQLclass節(jié)點(diǎn)下:<sql-insert>sql語句</sql-insert><sql-update>sql語句</sql-update>第七章 緩存與注解7.1 緩存簡(jiǎn)介7.1.1 緩存分類:l 一級(jí)緩存:Sessionl 二級(jí)緩存:SessionFactoryl 查詢緩存:依賴于二級(jí)緩存7.1.2 緩存作用范圍:與三類緩存一一對(duì)應(yīng)l 事務(wù)范圍l 進(jìn)程范圍
20、l 集群范圍7.2 一級(jí)緩存作用:減少訪問數(shù)據(jù)庫(kù)的頻率保證數(shù)據(jù)庫(kù)中的相關(guān)記錄與緩存中的相應(yīng)對(duì)象保持同步7.3 二級(jí)緩存Ø 配置步驟:l 添加JAR包,ehcache-1.2.3.jar和commons-loging-1.1.1.jarl 添加ehcache.xml到src目錄l 在Hibernate.cfg.xml中指定提供商和開啟二級(jí)緩存l 配置實(shí)體類映射文件,class節(jié)點(diǎn)下添加<cache usage=”/>Ø 應(yīng)用場(chǎng)景:l 很少被修改的數(shù)據(jù)l 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)問題l 不會(huì)被并發(fā)訪問的數(shù)據(jù)l 應(yīng)用參考的常量數(shù)據(jù)。極少實(shí)例或從來不會(huì)被修改&
21、#216; 以下數(shù)據(jù)不適合放進(jìn)二級(jí)緩存:l 經(jīng)常被修改的數(shù)據(jù)l 財(cái)務(wù)數(shù)據(jù)l 與其他應(yīng)用共享的數(shù)據(jù)7.4 查詢緩存步驟:l 在Hibernate.cfg.xml中開啟查詢緩存l 在程序中手動(dòng)啟用查詢緩存query.setCacheable(true);7.5 注解簡(jiǎn)介使用Hibernate注解步驟:l 添加jar包l 使用注解配置持久化類以及對(duì)象關(guān)聯(lián)關(guān)系l 使用AnnotationConfiguration建立會(huì)話工廠Session session=new AnnotationConfiguration().configure().builSessionFactory().openSession
22、();l 在Hibernate配置文件中聲明持久化類<mapping class=”cn.wang.entity.Emp”>7.6 命名查詢NamedQuery(name = "getGradeByGno", query = "from Grade where gno>:gno")Query query=session.getNamedQuery(“getGradeByGno”);7.7 本地查詢NamedNativeQuery(name = "getGrades", query = "select g.*
23、 from grade g where g.gno>:gno", resultSetMapping = "all")SqlResultSetMapping(name = "all", entities = EntityResult(entityClass = cn.wang.entity.Grade.class) )Query query = session.getNamedQuery("getGrades");Struts2框架第一章 Web前端與MVC1.1 初識(shí)jQueryØ jQuery是一個(gè)優(yōu)秀的J
24、avaScript框架。它是輕量級(jí)的JavaScript庫(kù)。Ø 宗旨:”Write Less, Do More”。Ø jQuery能滿足如下需求:n 取得頁(yè)面中的元素。n 修改頁(yè)面的外觀。n 改變頁(yè)面內(nèi)容。n 響應(yīng)用戶的頁(yè)面操作。n 為頁(yè)面添加動(dòng)態(tài)效果。n 不需刷新頁(yè)面即可從服務(wù)器獲取信息。n 簡(jiǎn)化常見的JavaScript任務(wù)。Ø 常見JavaScript庫(kù):n prototype。n YUI。n ExtJS。n jQuery。Ø jQuery特色:n 利用css優(yōu)勢(shì)n 支持?jǐn)U展n 抽象瀏覽器不一致性n 總算面向集合n 將多行操作集于一行1.2 jQu
25、ery基本語法1.2.1 準(zhǔn)備工作Ø 下載jQuery庫(kù)(jQ).Ø 在頁(yè)面<head>元素中引入jQuery庫(kù)<script type=”text/javascript” src=”js/jquery-xxx.min.js”/>1.2.2 jQuery對(duì)象及基本語法Ø $(this).hide():隱藏當(dāng)前元素。Ø $(“p”).hide:隱藏所有<p>標(biāo)簽。Ø $(“p.test”).hide:隱藏所有class=”test”的<p>標(biāo)簽。Ø $(“#test”).hide:隱藏所有
26、id=”test”的元素。1.2.3 jQuery對(duì)象與DOM對(duì)象的區(qū)別與轉(zhuǎn)換Ø $(“#test”);相當(dāng)于document.getElementById(“test”);Ø $(“#test”).html(“新內(nèi)容”);相當(dāng)于document.getElementById(“test”).innerHTML=”新內(nèi)容”;Ø DOM對(duì)象轉(zhuǎn)為jQuery對(duì)象:$( document.getElementById(“test”);Ø jQuery對(duì)象轉(zhuǎn)為DOM對(duì)象:$(“#test”).get(0);1.3 jQuery選擇器及篩選1.3.1 元素選擇器&
27、#216; $(“p”):選取頁(yè)面中的<p>元素。Ø $(“#demo”):選取頁(yè)面中id=”demo”的元素。Ø $(“.intro”):選取頁(yè)面中class=”intro”的元素。1.3.2 屬性選擇器Ø 語法:attribute = value 。Ø 例1:$(“inputname=userName”):選取頁(yè)面中name=”userName”的input元素。Ø 例2:$(“formname=regForm>inputname=userName”):選取name=”regForm”的<form>標(biāo)簽中,na
28、me=”userName”的input元素。1.3.3 jQuery篩選Ø $(“#demo”).children(exp):匹配ID為demo的元素的子元素集合。Ø $(“#demo”).find(exp):匹配ID為demo的元素的后代元素集合。Ø $(“#demo”).parent(exp):匹配ID為demo的元素的父元素集合。Ø $(“#demo”).parents(exp):匹配ID為demo的元素的上級(jí)元素集合。Ø $(“#demo”).siblings(exp):匹配ID為demo的元素的同輩元素集合。1.4 jQuery屬性操
29、作、CSS操作和內(nèi)容操作1.4.1 屬性操作Ø 獲取屬性值:attr(name);Ø 修改屬性值:attr(key , value);Ø 刪除屬性:removeAttr(name);1.4.2 CSS操作1)操作CSSØ 獲取樣式:css(name);Ø 修改單個(gè)樣式:css(key , value)Ø 修改多個(gè)樣式:css(key1:value1 , key2:value2.);2)操作類樣式Ø 添加類樣式:addClass(className);Ø 移除類樣式:removeClass(className);1.
30、4.3 內(nèi)容操作Ø 獲取或設(shè)置HTML內(nèi)容:html()、html(val)。Ø 獲取或設(shè)置對(duì)象的值:val()、val(val)。Ø 追加內(nèi)容:append(content)。Ø 刪除節(jié)點(diǎn):remove()。1.5 jQuery時(shí)間處理1.5.1 綁定事件Ø 語法:bind(type , fn); type-事件類型;fn-函數(shù)。Ø 例:<input type=”button” id=”btn” value=”提交”/>$(function()$(“#btn”).bind(“click” , function()aler
31、t(“測(cè)試”);););1.5.2 觸發(fā)事件Ø 語法:trgger(type); type-觸發(fā)事件的類型;Ø 例:<form id=”regForm”><input type=”text” name=”userName” /><input type=”button” id=”btnSubmit” value=”提交” /></form>$(function()$(“# btnSubmit”).bind(“click” , function()$(“#regForm”).trigger(“submit”); /可以替換為:$(
32、“#regForm”).submit(); ); );1.5.3 綁定活動(dòng)事件Ø 語法:live(type , fn); type-事件類型;fn-函數(shù)。1.6 jQuery效果1.6.1 顯示隱藏效果 1)顯示效果語法:show(speed , callback);Ø speed:動(dòng)畫時(shí)長(zhǎng)(毫秒),取值有:slow、fast、normal。Ø callback:指定的回調(diào)函數(shù)(動(dòng)畫執(zhí)行完畢,執(zhí)行函數(shù))。2)隱藏效果語法:hide(speed , callback);1.6.2 滑動(dòng)效果原理:改變對(duì)象的高度、透明度及顯示狀態(tài)。1)向上滑動(dòng)效果:slideUp(sp
33、eed , callback);2)向下滑動(dòng)效果:slideDown(speed , callback);1.6.3 淡入淡出效果1)淡入效果語法:fadeIn(speed , callback);2)淡出效果語法:fadeOut(speed , callback);1.6.4 自定義動(dòng)畫語法:animate(params , duration , callback );Ø params:要實(shí)現(xiàn)的最終狀態(tài),指css效果。n Json對(duì)象:font-size:16px , Ø duration:執(zhí)行動(dòng)畫所用的時(shí)間(毫秒)。Ø callback:執(zhí)行完動(dòng)畫之后要執(zhí)行的
34、函數(shù)。1.7 jQuery Ajax請(qǐng)求1.7.1 $.post( )方法語法:$.post(url , data , callback);Ø url:用戶要請(qǐng)求的頁(yè)面地址。Ø data:要發(fā)送的數(shù)據(jù)。Ø 執(zhí)行完Ajax請(qǐng)求后要回調(diào)的函數(shù)。1.7.2 其他方法Ø $.get(url , data , callback);Ø $.load(url , data , callback);Ø $.getJSON(url , data , callback);Ø $.getScript(url , callback);Ø
35、$.ajax(options)。第二章 Struts2基礎(chǔ)2.1 Struts2簡(jiǎn)介Struts2是基于WebWork和Struts 1的MVC框架,優(yōu)點(diǎn):Ø 架構(gòu)清晰,使開發(fā)者只關(guān)注業(yè)務(wù)邏輯實(shí)現(xiàn)即可;Ø 提供了豐富的標(biāo)簽,大大提高了開發(fā)效率;Ø 提供頁(yè)面導(dǎo)航,通過配置文件把握整個(gè)系統(tǒng)各個(gè)部分之間的聯(lián)系,便于后去維護(hù);Ø 不在依賴Servlet API,便于測(cè)試。2.2 搭建Struts2開發(fā)環(huán)境2.2.1 下載Struts2網(wǎng)址:/download.cgi.Ø apps:包含了基于Struts2的
36、事例應(yīng)用。Ø docs:幫組文檔。Ø lib:核心類庫(kù)和第三方插件類庫(kù)(jar包)。Ø src:源代碼2.2.3 搭建Struts2開發(fā)環(huán)境的步驟1)在項(xiàng)目中導(dǎo)入Struts2必須jar包:Ø commons-fileupload-1.2.2.jar:Struts文件的上傳和下載。Ø commons-io-2.0.1.jar:文件讀取。Ø commons-lang3-3.1.jar:為java.lang包提供擴(kuò)展。Ø freemarker-2.3.19.jar:模板引擎。Ø ognl-3.0.5.jar:支持OGN
37、L表達(dá)式。Ø Struts2-core-.jar:Struts2核心包。Ø xwork-core-.jar:xwork核心包。Ø Javassist-3.11.0.GA.jar:分析、編輯和創(chuàng)建Java字節(jié)碼的類庫(kù)。2)修改web.xml配置文件。(<web-app>節(jié)點(diǎn)下)<!Struts2核心控制器 -><filter><filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.disp
38、atcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>Struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>3)添加struts.xml配置文件到src目錄下<?xml version="1.0" encoding="UTF-8"?&
39、gt;<!DOCTYPE struts PUBLIC"-/Apache Software Foundation/DTD Struts Configuration 2.3/EN""/dtds/struts-2.3.dtd"><struts></struts>2.3 Action類的實(shí)現(xiàn)方法1)使用普通的Java類,編寫public String execute()方法。2)實(shí)現(xiàn)Action接口,實(shí)現(xiàn)execute()方法。3)繼承ActionSupport類,重寫execut
40、e()方法。有點(diǎn):Ø 不需要強(qiáng)制實(shí)現(xiàn)execute()方法。Ø 自帶驗(yàn)證方法validate().2.4 Action接收參數(shù)的三種實(shí)現(xiàn)方式1)屬性方式接收參數(shù)。Ø 在Action中定義屬性來接收客戶端上傳的參數(shù),并提供getter和setter方法,jsp頁(yè)面中用屬性名表示2)JavaBean方式接收參數(shù)Ø 用java實(shí)體類封裝屬性信息,在Action中定義實(shí)體類對(duì)象為屬性,并提供gtter和setter方法,jsp頁(yè)面用 對(duì)象.屬性名。3)ModelDriven方式接收參數(shù)Ø 用java實(shí)體類封裝屬性信息,在Action中實(shí)現(xiàn)ModelDr
41、iven接口,實(shí)例化實(shí)體類,調(diào)用getModel()方法,返回實(shí)體類對(duì)象,jsp頁(yè)面直接用屬性名。2.5 <result>的配置1)result的name屬性Ø SUCCESS:Action執(zhí)行成功,顯示結(jié)果視圖給用戶。Ø NONE:Action執(zhí)行成功,不顯示結(jié)果視圖給用戶。Ø ERROR:Action執(zhí)行失敗,顯示錯(cuò)誤頁(yè)面給用戶。Ø INPUT:執(zhí)行Action需要更多的輸入信息,回到INPUT對(duì)應(yīng)的頁(yè)面。Ø LOGIN:因用戶沒有正確登錄而沒有正確執(zhí)行,將返回改登錄試圖。2)result的type屬性Ø dispat
42、cher:請(qǐng)求轉(zhuǎn)發(fā)到指定的URL。Ø redirect:請(qǐng)求重定向到指定的URL。Ø redirectAction:請(qǐng)求重定向到指定的Action。Ø chain:Action鏈?zhǔn)教幚?,?qǐng)求轉(zhuǎn)發(fā)到指定的Action。Ø json:實(shí)現(xiàn)Ajax時(shí),返回JSON對(duì)象。2.6 全局結(jié)果配置<global-results><result name="error" type="redirect">/login.jsp</result></global-results>第三章OG
43、NL和Struts2標(biāo)簽3.1 訪問session作用域的三種方法3.1.1 使用ActionContext訪問Servlet APIMap<String,Object> session=ActionContext.getContext().getSession();3.1.2 以IoC方式訪問Servlet API3.1.3 以耦合方式訪問Servlet APIHttpSession session=ServletActionContext.getRequest().getSession();3.2 OGNL表達(dá)式Ø 導(dǎo)入taglib指令:<%taglib uri
44、=”/struts-tags” prefix=”s” %>Ø 在頁(yè)面中獲取并輸入Action屬性:<s:property value=”userName” />Ø 在頁(yè)面中獲取并輸出session中保存的數(shù)據(jù):<s:property value=”#session.userName” />Ø OGNL表達(dá)式具有以下功能和特點(diǎn):l 能存取對(duì)象的屬性,也能調(diào)用對(duì)象的方法。l 能訪問靜態(tài)方法、靜態(tài)屬性。l 能訪問值棧及Stack Context。l 能操作集合對(duì)象。l 支持賦值、運(yùn)算操作、字段類型轉(zhuǎn)化。3.3 Struts2標(biāo)簽3.1.1數(shù)
45、據(jù)標(biāo)簽Ø 添加taglib指令:<%taglib uri=”/struts-tags” prefix=”s” %>Ø 主要作用是對(duì)各種數(shù)據(jù)訪問的相關(guān)功能1)<s:property>:用來輸出值棧和Stack Context中所有能訪問的值。Ø value:用來獲取值的OGNL表達(dá)式。(輸出字符串<s:property value=”Hello”/>)Ø defualt:默認(rèn)輸出內(nèi)容。Ø escapeHtml:是否轉(zhuǎn)義HTML,默認(rèn)取值為true。2)<s:debug>會(huì)在頁(yè)面生成一個(gè)鏈接,單擊這個(gè)
46、鏈接可以查看值棧和Stack Context中所能訪問的值,常用于程序排錯(cuò)。3)<s:date>:用于格式化輸出一個(gè)日期。Ø name:被格式化的值,必須設(shè)置,本身是一個(gè)OGNL表達(dá)式。Ø format:用于指定日期顯示的格式,如:yyyy-MM-dd HH:mm:ss。Ø <s:date name=”house.addDate” format=”yyyy-MM-dd” />4)<:set>:可以對(duì)設(shè)置的表達(dá)式求值,并將結(jié)果賦值給特定作用域的某個(gè)變量,簡(jiǎn)單的說,就是定義一個(gè)變量,并賦值。Ø var:變量名。Ø
47、 value:設(shè)置給變量的值,可以是常量和OGNL表達(dá)式。Ø scope:變量的生存周期。Ø <s:set var=”streetName” value=”street.streetName” scope=”session” />5)<:url>:用來生成一個(gè)URLØ var:該URL的引用名稱,如果指定這個(gè)屬性,則不會(huì)再頁(yè)面生成字符串。Ø action:要訪問的Action的名稱。Ø value:要訪問的目標(biāo),不過不提供action,就用value作為URL的地址值。6)<s:a>:用來生成HTML的<
48、;a>標(biāo)簽。<s:a href=”>百度</s:a>Ø href可以是字符串常量,也可以是OGNL表達(dá)式。7)<s:param>:用來為其他標(biāo)簽添加參數(shù)化設(shè)置。8)<s:include>:可以把其他頁(yè)面包含到當(dāng)前頁(yè)面上<s:include value=”include.jsp”/>3.1.2 控制標(biāo)簽Ø 主要用來完成流程控制1)<s:if>、<s:elseif>和<s:else>Ø <s:set name=”score” value=”80” />
49、216; <s:if test=”#score>=90” >尖子生</s:if>Ø <s:elseif test=”score>=60” />普通學(xué)生</s:elseif>Ø <s:else>差生</s:else>2)<s:iterator>:主要用于對(duì)集合實(shí)現(xiàn)循環(huán)訪問功能。Ø value:被循環(huán)訪問的集合,OGNL表達(dá)式。Ø var:變量名稱,用來引用當(dāng)前循環(huán)訪問的集合元素。Ø status:返回當(dāng)前循環(huán)的各種信息。u count:集合含有多少個(gè)對(duì)
50、象。u index:正在循環(huán)的這一項(xiàng)的索引。u even:當(dāng)前遍歷到的對(duì)象是否處于列表的偶數(shù)索引位置。u odd:當(dāng)前遍歷到的對(duì)象是否處于列表的奇數(shù)索引位置。3.1.3 UI標(biāo)簽Ø 用來生成UI界面,或者為Web提供某些功能支持?;谀0搴椭黝}。1)<s:form>:對(duì)應(yīng)HTML的<form>,用于向服務(wù)器端提交數(shù)據(jù)。Ø name:表單的名稱。Ø action:處理改表單數(shù)據(jù)的URL。Ø method:提交方式。2)<s:textfield>:?jiǎn)涡形谋究颉?#216; name:文本框名稱。Ø value:文
51、本框中顯示的文字。Ø maxlength:文本框中的最大字符數(shù)。Ø readonly:是否為只讀。3)<s:textarea>:多行文本域。Ø name:文本域名稱。Ø value:文本域中顯示的文字。Ø cols:文本域的寬度,以字符數(shù)表示。Ø rows:文本域的高度,以字符行數(shù)表示。Ø readonly:是否為只讀。4)<s:submit>:提交表單按鈕。Ø value:按鈕上顯示的文字。5)<s:select>:用于生成一個(gè)下拉框。Ø name:下拉框名稱。
52、16; list:生成下拉框的集合。Ø listKey:生成下拉框的value屬性。Ø listValue:生成下拉項(xiàng)顯示的文字。Ø <s:select name=”houseType” list=”typeList” listKey=”typeId” listName=”typeName”/>6)<s:doubleselect>:生成兩個(gè)聯(lián)動(dòng)的下拉框。Ø name/doubleName:第一個(gè)/第二個(gè)下拉框的名稱。Ø list/doubleList:生成第一個(gè)/第二個(gè)下拉框集合。Ø listKey/doubl
53、eListKey:生成第一個(gè)/第二個(gè)下拉框的選項(xiàng)的value屬性。Ø listValue/doubleListValue:生成第一個(gè)/第二個(gè)下拉框的選項(xiàng)顯示的文字。3.1.4 Ajax標(biāo)簽datetimepicker是一個(gè)日歷控件,使用步驟如下:1) 在項(xiàng)目中引入struts2-dojo-plugin-.jar。2) 導(dǎo)入<% taglib uri=”/struts-dojo-tags” prefix=”sx” %>3) 在<head>中添加<sx:head parseContent=”true” />。4) 添加標(biāo)簽<sx:
54、datetimepicker name=”timer” label=”發(fā)表時(shí)間” />3.4 使用ActionSupport編碼實(shí)現(xiàn)驗(yàn)證3.4.1 在Action類的業(yè)務(wù)方法中直接驗(yàn)證。Action類的execute方法中:/ 驗(yàn)證用戶名if(null=user.getUserName()this.addFieldError(“user.userName”,”用戶名不能為空”);3.4.2 重寫validate()方法實(shí)現(xiàn)驗(yàn)證。Overridepublic void validate()/ 驗(yàn)證用戶名if(null=user.getUserName()this.addFieldError
55、(“user.userName”,”用戶名不能為空”);3.4.3 使用validateXxx()方法實(shí)現(xiàn)驗(yàn)證。/ 驗(yàn)證注冊(cè)方法public void validateRegister()/ 驗(yàn)證用戶名if(null=user.getUserName()this.addFieldError(“user.userName”,”用戶名不能為空”);3.5 使用驗(yàn)證框架實(shí)現(xiàn)驗(yàn)證1)編寫jsp數(shù)據(jù)輸入頁(yè)面。2)編寫Action類及其配置文件。3)在與Action同級(jí)目錄下創(chuàng)建文件ActionName-validation.xml,其中ActionName與要驗(yàn)證的Action類名相同。5) 編寫驗(yàn)證規(guī)
56、則。第四章 攔截器和文件上傳4.1 使用Java實(shí)現(xiàn)國(guó)際化Ø 國(guó)際化是指應(yīng)用程序運(yùn)行時(shí),可以根據(jù)客戶端中設(shè)置的國(guó)家/地區(qū)、語言的不同,而在界面上顯示不同的語言4.1.1 Java中內(nèi)置的國(guó)際化支持Ø 獲取Java所支持的地區(qū)/語言的代碼:Locale locales=Locale.getAvailableLocales ( );for(Locale locale : locales)for(Locale l : locales)/返回該語言環(huán)境的國(guó)家或地區(qū)名及代碼System.out.print(l.getDisplayCountry()+” ”+l.getCountry(
57、);/返回該語言環(huán)境的語言名稱及代碼System.out.println(l.getDisplayLanguage+” ”+l.getLanguage();4.1.2 JSP頁(yè)面的國(guó)際化1)添加語言資源文件。2) 配置資源文件的引用(兩種方式)。a) 在struts.xml中配置:<constant name=”struts.custom.i18n.resources” value=”wdz” />b) 在perties中配置:struts.custom.i18n.resource=wdz。3)在JSP頁(yè)面輸出資源文件中的內(nèi)容。<s:text name=”
58、key”/>4.1.3 Action類的國(guó)際化1)繼承ActionSupport。2)使用getText(String key)方法獲取資源文件內(nèi)容。public String execute()addActionMessage(getText(“userName”);return SUCCESS;4.2 攔截器簡(jiǎn)介以Action接收參數(shù)和實(shí)現(xiàn)數(shù)據(jù)效驗(yàn)為例,簡(jiǎn)單說明攔截器的工作原理:Ø Struts2接收到請(qǐng)求后,創(chuàng)建Action的實(shí)例,此時(shí)Action中還沒有接收上傳的參數(shù),也沒有對(duì)參數(shù)進(jìn)行驗(yàn)證。Ø Struts2運(yùn)行名稱為params的攔截器,把請(qǐng)求中附帶的參數(shù)轉(zhuǎn)存到Action的屬性中。Ø Struts2再運(yùn)行名稱為va
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五年級(jí)數(shù)學(xué)第二學(xué)期滬教版-期末試卷(滬版)
- 一年級(jí)數(shù)學(xué)第一學(xué)期滬教版- 期末試卷 3
- 生活安全 課件
- 2024年湖北省中考數(shù)學(xué)真題卷及答案解析
- 課件 頁(yè)面大小
- 西京學(xué)院《網(wǎng)絡(luò)數(shù)據(jù)庫(kù)》2022-2023學(xué)年期末試卷
- 西京學(xué)院《建筑信息模型》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《機(jī)械原理》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《高等混凝土結(jié)構(gòu)學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《單片機(jī)原理及應(yīng)用實(shí)驗(yàn)》2021-2022學(xué)年期末試卷
- 2024年安全生產(chǎn)知識(shí)競(jìng)賽考試題庫(kù)及答案(共五套)
- 22《鳥的天堂》課件
- 農(nóng)業(yè)灌溉裝置市場(chǎng)環(huán)境與對(duì)策分析
- 新疆烏魯木齊市第十一中學(xué)2024-2025學(xué)年八年級(jí)上學(xué)期期中道德與法治試卷
- 2024年江西省高考地理真題(原卷版)
- 部編版小學(xué)五年級(jí)上冊(cè)道法課程綱要(知識(shí)清單)
- 經(jīng)濟(jì)法學(xué)-計(jì)分作業(yè)一(第1-4章權(quán)重25%)-國(guó)開-參考資料
- 山東省臨沂市(2024年-2025年小學(xué)四年級(jí)語文)人教版期中考試(上學(xué)期)試卷及答案
- 護(hù)士2024思想?yún)R報(bào)5篇
- Unit+10+Lesson+1+How+Closely+Connected+Are+We 高中英語北師大版(2019)選擇性必修第四冊(cè)
- ω-3脂肪酸處方藥物在老年疾病中的應(yīng)用專家共識(shí)(2024版)解讀
評(píng)論
0/150
提交評(píng)論