




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、ssh2+extjs框架搭建本教程完成了ssh2(spring3.0+struts2.2.1+hibernate3.3)整合extjs的框架的搭建并實現(xiàn)了簡單的用戶登錄驗證功能。具體開發(fā)過程如下:1.1 新建數(shù)據(jù)庫和數(shù)據(jù)表1.下載并安裝mysql,新建一個new connection(hostname為localhost,密碼為123)2. 登錄后在左下角右擊創(chuàng)建schema(數(shù)據(jù)庫)名為xscjmanagment,在相應的右側(cè)選擇createtable選項,新建登錄表dlb3.右擊表dlb可以編輯dlb中的列屬性信息。選擇edit table data,進入如下頁面,在其中可輸入表中的數(shù)據(jù)(
2、確保在編輯前已經(jīng)點擊了最下面的edit,否則無法對表格進行編輯),進而完成了dlb數(shù)據(jù)庫的創(chuàng)建。該表中又一個xh為zhangsa,kl為123的用戶1.2 新建web project1.3 添加struts2開發(fā)能力1. 右擊項目buildpathadd external archives選擇如下7個jar包2. 在src目錄下新建struts.xml文件,用于以后配置action,未配置前的文件如下:3.修改webroot的web-inf下的web.xml文件,在其中增加對struts2過濾器的配置ext.htmlstruts2org.apache.struts2.dispatcher.fi
3、lterdispatcherstruts2/*注意, 在配置struts過濾器的時候,如果他的filter-class配置為org.apache.struts2.dispatcher.filterdispatcher,則該struts必須結(jié)合包,才能成功部署運行;另一種struts過濾器的配置方法(用得時候注意與相應的jar包匹配)如下:4. 配置完成后將項目部署到服務器上運行測試,提示無問題后繼續(xù)下面的操作1.4 添加spring開發(fā)能力1. 右擊項目,為項目添加spring開發(fā)能力如下:注意,在選擇下面的包時要引用完全,防止后面出現(xiàn)因為缺少包引起的錯誤,所需要引用的包如下所示:2. 選擇完
4、包以后進行下一步,添加spring配置文件(在選中了applicationcontext.xml的位置后要注意在web.xml文件中修改相應的地址信息)如下:3. 在web.xml中添加對spring監(jiān)聽器的配置和配置文件的配置如下:org.springframework.web.context.contextloaderlistenercontextconfiglocation/web-inf/applicationcontext.xml注意:最后一個中定義的位置要保證和和剛才新建的applicationcontext.xml文件的實際位置保持一致!否則會出現(xiàn)匹配錯誤4. 重新部署項目,提示
5、無誤后表示spring配置完成,接下來要整合hibernate1.5 新建數(shù)據(jù)驅(qū)動1. 整合hibernate之前要先建立數(shù)據(jù)驅(qū)動:將視圖切換到myeclipse database explorer,然后在該視圖下右擊,新建數(shù)據(jù)驅(qū)動2. 新建驅(qū)動名為:xscj,完善所連接數(shù)據(jù)庫的信息,其中xscjmanagment為要連接的數(shù)據(jù)庫(開始已經(jīng)在1.1步中在mysql中建好)注意,add jars需要添加mysql數(shù)據(jù)庫連接包:。點擊下一步完成了對數(shù)據(jù)庫的鏈接操作,此時項目已經(jīng)實現(xiàn)了與數(shù)據(jù)庫的鏈接。1.6 添加hibernate開發(fā)能力1. 選擇為項目添加hibernate開發(fā)能力,選擇一下的開發(fā)
6、包2. 選擇讓spring來管理hibernate中*.hbm.xml映射文件的處理,注意hibernate3.2,保證和spring的3.2進行結(jié)合配置3. 點擊next,選中剛才創(chuàng)建的數(shù)據(jù)驅(qū)動進行鏈接,確保反向工程的實現(xiàn)4. 點擊next,取消對話框中的選中信息,完成對hibernate開發(fā)能力的添加添加完hibernate能力后,完成配置。5.調(diào)錯:若此時spring配置文件applicationcontext.xml出現(xiàn)提示有如下錯誤:這是因為缺少某些包下的配置文件,添加完后錯誤消失myeclipsebuild pathadd external archives,添加。另一個錯誤如下:
7、這是因為添加spring開發(fā)能力的時候,選取的包不全,應該至少包括spring2.0 aop libraries,spring2.0 core libraries ,spring2.0 orm/dao/hibernate3 libraries這三個包,通過右擊項目名稱-buildpath-library-myeclipse libraries將缺少包引入到項目中。添加后錯誤消失)1.7 hibernate反向工程1. 右擊項目,在src文件夾下新建一個package,命名為org.model,用來存放生成的映射文件。進入myeclipse database explorer perspecti
8、ve試圖界面連接數(shù)據(jù),找到要映射的表:完善彈出對話框中的內(nèi)容,選擇存放地址選擇model包,注意要取消generate precise findby methods的復選框和create abstract class選項框注意不選的地方,若多選會生成很多文件,不方便整合和管理。下一步主鍵生成策略為identity 然后點擊next,直至finish即可。架構如下:重啟server,看程序是否能夠正常運行,這時候一般會提示錯誤:錯誤,這是因為導入的spring包和hibernate包又沖突,可以通過 把asm.jar, asm-attrs.jar, cglib-2.1.3.jar三個文件從項目里
9、導出,并刪掉就ok 由于cglib-2.1.3 依賴的asm 跟在外邊的asm版本不一致導致, 把cglib換成 cglib-nodep版本的就可以了。建議用第一種方法! 刪除后重啟server成功:至此,三層架構搭建完畢!下面就是對項目進行分層,完成一個用戶登錄驗證功能!1.8 dao層及其實現(xiàn)和部署1.dao層介紹:dao層用于封裝數(shù)據(jù)庫操作,每一個dao組建包含了數(shù)據(jù)庫的訪問邏輯,可對實現(xiàn)一個數(shù)據(jù)表完成基本的crud操作。spring為hibernate提供的dao支持類是hibernatedaosupport。dao層的操作分為三個步驟:dao接口,dao實現(xiàn),dao部署(1)dao層
10、接口實現(xiàn)dao接口提供了對持久化對象的crud原子操作(在接口類中對包含的各種crud方法進行了聲明,有些組件可以自動生成基本的方法比如myeclipse)。dao中的crud方法會隨著業(yè)務邏輯的需求增加,但有幾個方法是通用的:get(serializable id); save(object entity); update(object entity); delete(object entity); findall(serializable id);并且接口無需給出任何實現(xiàn)。一般每個dao接口都包含了6個基本方法,并在此基礎上增加了很多其他的方法。在src文件下新建包org.dao,在其中d
11、lbdao.java(dao接口)內(nèi)容如下:package org.dao;import org.model.dlb;public interface dlbdao public boolean findandcheck(dlb dlb);(2)dao層實現(xiàn):spring為hibernate提供了dao的基類hibernatedaosupport,通過該類傳入一個sessionfactory引用可以得到一個hibernatetemplate的實例,通過該ht實現(xiàn)對數(shù)據(jù)庫的大部分操作。本配置中的實現(xiàn)dao實現(xiàn)類在hibernate逆向工程中就已經(jīng)自動實現(xiàn)了。對其改名并將其放在org.dao.im
12、p的包下,便于管理。package org.dao.imp;import java.util.list;public class dlbdaoimp extends hibernatedaosupport implements dlbdao private static final log log = logfactory.getlog(dlbdaoimp.class); public boolean findandcheck(dlb dlb) string str=dlb.getusername(),dlb.getpassword(); list l=gethibernatetemplate
13、().find(from dlb where username=? and password=?,str); if(l.size()0) return true; else return false; public static dlbdaoimp getfromapplicationcontext(applicationcontext ctx) return (dlbdaoimp) ctx.getbean(dlbdao);通過save完成保存到數(shù)據(jù)庫的操作,但是卻不與數(shù)據(jù)庫交互,這就dao層(3)dao層的部署實現(xiàn)了dao層的接口和實現(xiàn)了類以后,所有dao層的實現(xiàn)類都需要在spring配置,
14、并且必須獲得一個sessionfactory的引用,然后才能完成持久化訪問。換句話說,dao的實現(xiàn)類都交由spring容器的bean來管理。參考spring的applicationcontext.xml中的配置dao的部分代碼如下(自動形成的):1.9 service層及其實現(xiàn)層業(yè)務邏輯組件能夠?qū)ο到y(tǒng)中的不同角色提供各自的業(yè)務邏輯實現(xiàn),并且每個邏輯組件封裝了所有的dao組件,并可對其進行調(diào)用.service層只關心業(yè)務邏輯的實現(xiàn),service方法全是系統(tǒng)中actor所進行的實際操作的名稱,系統(tǒng)中有多少業(yè)務需求,業(yè)務邏輯組件service就提供多少個對應方法。service主要實現(xiàn)對dao層的
15、調(diào)用,并實現(xiàn)了依賴注入。service的接口層對登錄驗證功能的實現(xiàn)如下:package org.service;import org.model.*;public interface dlbservice public boolean checkin(dlb dlb);依賴注入首先要在需要注入的類中聲明一個變量(對象),同時生成該變量(對象)的setter方法。其次需要在spring配置文件中設置需要注入的對象。package org.service.imp;import org.dao.dlbdao;import org.model.dlb;import org.service.dlbser
16、vice;public class dlbserviceimp implements dlbservice private dlbdao dlbdao;public dlbdao getdlbdao() return dlbdao;public void setdlbdao(dlbdao dlbdao) this.dlbdao = dlbdao;public boolean checkin(dlb dlb) boolean s=dlbdao.findandcheck(dlb);return s;最后,需要在applicationcontext.xml中對service層添加如下配置(其中dlb
17、dao為上述在applicationcontext中對dao層的配置):/在dao.imp中依賴注入的dao對象名稱/調(diào)用bean的id為dlbdao的dao層組件選擇:是否添加事務管理(采用beannameautoproxycreator,根據(jù)bean name自動生成事務代理的方式):propagation_requiredpropagation_requiredxsservicekcservicecjservicezyservicetransactioninterceptor此時重新部署項目,如果出現(xiàn)錯誤為:unable to load configuration ,然后出現(xiàn)c:/.ap
18、ache等問題的時候,是因為spring和struts2還沒有完全結(jié)合起來,這時候需要這是由于缺少包(版本2.1.8不行,我們用得的包為2.1.6)從而導致無法將dao層和service層聯(lián)系到一起。在中導入該包nested exception is org.springframework.beans.typemismatchexception: failed to convert property value of type org.dao.imp.dlbdaoimp to required type org.dao.dlbdao for property dlbdao; nested ex
19、ception is java.lang.illegalargumentexception: cannot convert value of type org.dao.imp.dlbdaoimp to required type org.dao.dlbdao for property dlbdao: no matching editors or conversion strategy found這是dlbdaoimp.java由于是自動生成的,沒有繼承后來新建的接口dlbdao.java,所以修改代碼,添加繼承屬性否則錯誤一致得不到解決。(重要!)2.0 實現(xiàn)層jsp頁面實現(xiàn)及部署新建登陸頁面
20、inpu.jsp如下:用戶名:密 碼:在src下建立包org.action包,并在其中添加文件checkaction.java來獲取jsp傳過來的數(shù)據(jù):package org.action;import javax.servlet.http.httpservletrequest;public class checkaction extends actionsupport private static final long serialversionuid = 1l;private dlbservice dlbservice;private dlb dlb;private boole
21、an success;private string message;public string execute() throws exception boolean s=dlbservice.checkin(dlb);if(s) system.out.println(“成功登錄”);this.success = true;/用于extjs返回成功與否的信息this.message = checkin success; else system.out.println(“登錄失敗”); this.success=false; this.message=no user; return success
22、; /在applicationcontext.xml中添加對action的支持:最后需要在struts.xml中對action進行配置/success.jsp/index.jsp2.1 項目部署和測試注意:若出現(xiàn)unable to load configurationapache%.錯誤的原因是沒有引入spring和struts整合的jar包;出現(xiàn)error creating bean “sessionfactory”。可能是因為jar包沖突(asm)2.2 整合extjs配置完ssh2的框架后,開始對顯示層進行優(yōu)化。通過extjs作為顯示層來實現(xiàn)異步提交。修改顯示頁面為ext.html其內(nèi)容
23、如下(包含生成數(shù)字驗證碼):ruanjianshijianpingtaiprojectext.onready( function() /ext.msg.alert(tips,hello,how are you!);ext.quicktips.init();ext.form.ftotype.msgtarget = side;/提示信息的顯示方式 var form1 = new ext.formpanel( basecls:x-plain,/ items: xtype: textfield, width:90, fieldlabel:username, labelwidth:20,
24、 name:dlb.username, allowblank:false, blanktext:username can not be empty! , xtype: textfield, inputtype:password, width:90, fieldlabel:password, labelwidth:20, name:dlb.password, allowblank:false, blanktext:passerror! ,new ext.panel( basecls:x-plain, layout:column, width:290, height:38, items: layo
25、ut:form, columnwidth: .7, labelwidth:97, items: xtype: textfield, width:90, fieldlabel:codingss, name:code, allowblank:true, /blanktext:驗證碼不能為空! , columnwidth: .3, html: ) , buttons: text:submit, type:submit, handler:function() if(form1.form.isvalid()/ form1.form.submit( waitmsg : logining., url:che
26、ck.action,/ method:post, success:function(form, action) ext.msg.alert(tips,loginsuccess!); document.location=main.html; /ext.msg.alert(?,action.result.message); , failure:function(form, action)ext.msg.alert(tips, action.result.message); ); , text:reset, handler:function()form1.form.reset(); ); var w
27、in=new ext.window( layout:fit, width:300, height:180, closeaction:hide, resizable:true, shadow:true, modal:true, closable:true, bodystyle:padding:5 5 5 5, items:form1); win.show(); );其中指定了參數(shù)的提交方式:異步提交,并且將讀取的數(shù)據(jù)轉(zhuǎn)化成json格式傳給服務器,大大減少了服務器端處理數(shù)據(jù)的壓力,提高了工作效率要實現(xiàn)數(shù)據(jù)類型的轉(zhuǎn)換,需要添加jar包:,然后修改struts.xml來確保能夠獲取json數(shù)據(jù),將其傳
28、到相應的action,并且讀取到action的返回信息 /確保action的返回參數(shù)一定準確讀取 success,message 最后需要修改action的內(nèi)容,添加success和message來返回相應的響應信息public string execute() throws exception system.out.print(hello!);dlbservice.add(dlb);/調(diào)用service層的處理方法this.success = true;this.message = 成功咯;return success;其中對于:html: 表示該信息在圖片不能顯示的時候出現(xiàn) src是圖片的
29、來源,這里通過v.jsp生成了一個四個數(shù)字字符的驗證碼 syyle表示鼠標移動到圖片上時候變?yōu)槭值男螤?onclick是觸發(fā)事件,this.src=v.jsp?+new date()表示這是表示當前圖片鏈接 在當前鏈接值的基礎上添加了一個問號。譬如當前src=check.aspx,點擊后就變成了check.aspx?,繼續(xù)點就會變成check.aspx? 。這個問號是沒有實際意義的,它唯一的作用是向ie表明: 圖片鏈接發(fā)生了變化,圖片需要刷新。不用非得加上?,加什么都一樣,加隨機碼也可以math.random(),防止緩存。例如刷新驗證碼的時候就是document.getelementbyid(pic).src=validate.aspx?+math.random();將this.src原值后加上?,以便向服務器發(fā)送一個新的get方法,從而獲取新的驗證碼 v.jsp頁面內(nèi)容(項目中改為了code.java)如下:255) fc=255; if(bc255) bc=255; int r=fc+random.nextint(bc-fc); int g=fc+random.nextint(bc-fc); int b=fc+random.nextint(bc-fc); return n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山西財經(jīng)大學華商學院《金融數(shù)據(jù)采集》2023-2024學年第二學期期末試卷
- 遼陽職業(yè)技術學院《電視欄目專題與制作》2023-2024學年第二學期期末試卷
- 鄭州大學《產(chǎn)品設計報告書制作》2023-2024學年第二學期期末試卷
- 做賬實操-保險公司理賠支出的賬務處理分錄
- 2025屆上海市寶山區(qū)高三一??荚嚉v史試卷
- 江西外語外貿(mào)職業(yè)學院《文獻查閱與交流》2023-2024學年第二學期期末試卷
- 柳州職業(yè)技術學院《行政倫理學》2023-2024學年第二學期期末試卷
- 長春職業(yè)技術學院《商務談判》2023-2024學年第二學期期末試卷
- 首都師范大學《工程制圖與全專業(yè)三維識圖課程設計》2023-2024學年第二學期期末試卷
- 魯迅美術學院《生物藥物制劑學》2023-2024學年第二學期期末試卷
- 改變學習方式促進學生發(fā)展結(jié)題報告
- 軟件監(jiān)理報告
- 中國常見食物營養(yǎng)成分表
- 09J202-1 坡屋面建筑構造(一)-2
- 光伏電站土建工程施工技術方案
- 2024年上海英語高考卷及答案完整版
- 物業(yè)公司客戶服務課件
- 腦卒中患者的康復護理查房
- 酶工程技術在茶葉深加工中的應用
- 人教版英語八年級下冊全冊教案教學設計及教學反思
- 02J401 鋼梯【含03年修改】圖集
評論
0/150
提交評論