課程設(shè)計(jì)(論文)-基于SSH架構(gòu)的班級(jí)人員信息展示畢業(yè)論文_第1頁(yè)
課程設(shè)計(jì)(論文)-基于SSH架構(gòu)的班級(jí)人員信息展示畢業(yè)論文_第2頁(yè)
課程設(shè)計(jì)(論文)-基于SSH架構(gòu)的班級(jí)人員信息展示畢業(yè)論文_第3頁(yè)
課程設(shè)計(jì)(論文)-基于SSH架構(gòu)的班級(jí)人員信息展示畢業(yè)論文_第4頁(yè)
課程設(shè)計(jì)(論文)-基于SSH架構(gòu)的班級(jí)人員信息展示畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

題目:基于SSH架構(gòu)的班級(jí)人員信息展示系統(tǒng)設(shè)計(jì)專業(yè):J計(jì)算機(jī)1302學(xué)號(hào):姓名:

目的隨著計(jì)算機(jī)技術(shù)普及應(yīng)用及學(xué)校信息化的飛速發(fā)展,以人工方式對(duì)信息進(jìn)行管理己不再適用,使用計(jì)算機(jī)化管理系統(tǒng)已經(jīng)成為學(xué)校管理中不可或缺的一部分。如何在社會(huì)高速發(fā)展的現(xiàn)在,提高學(xué)校工作效率以及管理效率是各校發(fā)展必須考慮的問(wèn)題。傳統(tǒng)的管理方式往往采用人工的方式對(duì)班級(jí)人員文檔進(jìn)行管理,這種粗放的管理模式效率很低,且不利于班級(jí)人員檔案的升級(jí)和維護(hù)。為了解決傳統(tǒng)管理模式中存在的矛盾和突出問(wèn)題,保證人員管理中數(shù)據(jù)的可靠性、安全性,操作的正確性、高效性,就需要充分運(yùn)用計(jì)算機(jī)資源將公式的人事信息充分的統(tǒng)一起來(lái)管理。目前,基于SSH構(gòu)建的員工管理系統(tǒng)已經(jīng)成為社會(huì)進(jìn)步與發(fā)展的又一關(guān)鍵因素。使用基于SSH構(gòu)建的員工管理體系不但能夠有效地減少銀行日常工作流程,優(yōu)化人力資源成本,而且也能夠?yàn)殂y行職員搭載一個(gè)不受地域限制的溝通橋梁。利用此管理系統(tǒng)有著工作便捷,提高效率,規(guī)范程序,智能辦公,方便實(shí)用,成本低廉等優(yōu)點(diǎn)。此系統(tǒng)具備大范圍使用的客觀條件,能夠保證管理系統(tǒng)的信息化水平提高。因此我們此次設(shè)計(jì)的該系統(tǒng)主要功能是先登入一個(gè)用戶登錄系統(tǒng),登錄成功進(jìn)入到班級(jí)信息展示頁(yè)面,里面有每個(gè)人的信息,點(diǎn)擊照片或者學(xué)號(hào)跳入到另外一個(gè)界面顯示學(xué)生的個(gè)人詳細(xì)信息,如果登錄不成功,則兩個(gè)頁(yè)面都不能進(jìn)入。相關(guān)技術(shù)簡(jiǎn)介Ssh為

struts+spring+hibernate的一個(gè)集成框架,是目前較流行的一種Web應(yīng)用程序開源框架。集成SSH框架的系統(tǒng)從職責(zé)上分為四層:表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和域模塊層,以幫助開發(fā)人員在短期內(nèi)搭建結(jié)構(gòu)清晰、可復(fù)用性好、維護(hù)方便的Web應(yīng)用程序。其中使用Struts作為系統(tǒng)的整體基礎(chǔ)架構(gòu),負(fù)責(zé)MVC的分離,在Struts框架的模型部分,控制業(yè)務(wù)跳轉(zhuǎn),利用Hibernate框架對(duì)持久層提供支持,Spring做管理,管理struts和hibernate。具體做法是:用面向?qū)ο蟮姆治龇椒ǜ鶕?jù)需求提出一些模型,將這些模型實(shí)現(xiàn)為基本的Java對(duì)象,然后編寫基本的DAO(DataAccessObjects)接口,并給出Hibernate的DAO實(shí)現(xiàn),采用Hibernate架構(gòu)實(shí)現(xiàn)的DAO類來(lái)實(shí)現(xiàn)Java類與數(shù)據(jù)庫(kù)之間的轉(zhuǎn)換和訪問(wèn),最后由Spring做管理,管理struts和hibernate。1、 strutsstruts是開源框架。使用Struts的目的是為了幫助我們減少在運(yùn)用MVC設(shè)計(jì)模型來(lái)開發(fā)Web應(yīng)用的時(shí)間。如果我們想混合使用Servlets和JSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,struts是一個(gè)不錯(cuò)的選擇。Struts是Apache軟件基金會(huì)(ASF)贊助的一個(gè)開源項(xiàng)目。它最初是Jakarta項(xiàng)目中的一個(gè)子項(xiàng)目,并在2004年3月成為ASF的頂級(jí)項(xiàng)目。它通過(guò)采用JavaServlet/JSP技術(shù),實(shí)現(xiàn)了基于JavaEEWeb應(yīng)用的MVC設(shè)計(jì)模式的應(yīng)用框架,是MVC經(jīng)典設(shè)計(jì)模式中的一個(gè)經(jīng)典產(chǎn)品。Struts是Apache基金會(huì)Jakarta項(xiàng)目組的一個(gè)OpenSource項(xiàng)目,它采用MVC模式,能夠很好地幫助java開發(fā)者利用J2EE開發(fā)Web應(yīng)用。和其他的java架構(gòu)一樣,Struts也是面向?qū)ο笤O(shè)計(jì),將MVC模式"分離顯示邏輯和業(yè)務(wù)邏輯"的能力發(fā)揮得淋漓盡致。Struts框架的核心是一個(gè)彈性的控制層,基于如JavaServlets,JavaBeans,ResourceBundles與XML等標(biāo)準(zhǔn)技術(shù),以及JakartaCommons的一些類庫(kù)。Struts由一組相互協(xié)作的類(組件)、Servlet以及jsptaglib組成。基于struts構(gòu)架的web應(yīng)用程序基本上符合JSPModel2的設(shè)計(jì)標(biāo)準(zhǔn),可以說(shuō)是一個(gè)傳統(tǒng)MVC設(shè)計(jì)模式的一種變化類型。2、 hibernateHibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,它將POJO與數(shù)據(jù)庫(kù)表建立映射關(guān)系,是一個(gè)全自動(dòng)的orm框架,hibernate可以自動(dòng)生成SQL語(yǔ)句,自動(dòng)執(zhí)行,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)。Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。3、 springSpring是一個(gè)開源框架,Spring是于2003年興起的一個(gè)輕量級(jí)的Java開發(fā)框架,由RodJohnson創(chuàng)建。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)分層的JavaSE/EEfull-stack(一站式)輕量級(jí)開源框架。傳統(tǒng)J2EE應(yīng)用的開發(fā)效率低,應(yīng)用服務(wù)器廠商對(duì)各種技術(shù)的支持并沒(méi)有真正統(tǒng)一,導(dǎo)致J2EE的應(yīng)用沒(méi)有真正實(shí)現(xiàn)WriteOnce及RunAnywhere的承諾。Spring作為開源的中間件,獨(dú)立于各種應(yīng)用服務(wù)器,甚至無(wú)須應(yīng)用服務(wù)器的支持,也能提供應(yīng)用服務(wù)器的功能,如聲明式事務(wù)、事務(wù)處理等。Spring致力于J2EE應(yīng)用的各層的解決方案,而不是僅僅專注于某一層的方案。可以說(shuō)Spring是企業(yè)應(yīng)用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務(wù)層及持久層。然而,Spring并不想取代那些已有的框架,而是與它們無(wú)縫地整合。三、 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)1、 頁(yè)面文件介紹1.1.Login.jsp該頁(yè)?為登陸頁(yè)?,受LoginAction控制,頁(yè)?內(nèi)主要含有?個(gè)表單,提交到login.action。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>學(xué)生信息管理系統(tǒng)</title></head><body><h2>學(xué)生登陸</h2><s:actionerror/><s:formaction="login.action"method="post"><s:textfieldname="user.username"label="學(xué)號(hào)"size="20"/><s:passwordname="user.password"label="密碼"size="20"/><s:submitmethod="execute"label="登陸"align="center"/></s:form></body></html>1.2List.jsp該頁(yè)?為登陸后展?學(xué)?列表的頁(yè)?,受ListAction控制。頁(yè)?內(nèi)通過(guò)s:iterator?成表格,將List<Student>的學(xué)?數(shù)據(jù)展?出來(lái)。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>學(xué)生信息管理系統(tǒng)</title></head><body><h2>學(xué)生列表</h2><p><s:propertyvalue=""/>,你好。</p><table><thead><tr><th>學(xué)號(hào)</th><th>照片</th><th>姓名</th><th>班級(jí)</th></tr></thead><tfoot><tr><th>學(xué)號(hào)</th><th>照片</th><th>姓名</th><th>班級(jí)</th></tr></tfoot><tbody><s:iteratorvalue="students"><tr><td><ahref="detail?id=<s:propertyvalue="id"/>"><s:propertyvalue="id"/></a></td><td><ahref="detail?id=<s:propertyvalue="id"/>"><imgsrc="photos/<s:propertyvalue="photoFileName"/>"width="24"height="24"></img></a></td><td><s:propertyvalue="lastName"/><s:propertyvalue="firstName"/></td><td><s:propertyvalue="className"/></td></tr></s:iterator></tbody></table><hr/><address><ahref="logout">登出</a></address></body></html>3.Detail.jsp該頁(yè)?為學(xué)?信息查看頁(yè),受DetailAction控制。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>學(xué)生信息管理系統(tǒng)</title></head><body><h2><s:propertyvalue="student.lastName"/><s:propertyvalue="student.firstName"/></h2><table><tbody><tr><th>姓名</th><td><s:propertyvalue="student.lastName"/><s:propertyvalue="student.firstName"/></td></tr><tr><th>學(xué)號(hào)</th><td><s:propertyvalue="student.id"/></td></tr><tr><th>照片</th><td><imgsrc="photos/<s:propertyvalue="student.photoFileName"/>"></img></td></tr><tr><th>班級(jí)</th><td><s:propertyvalue="student.className"/></td></tr><tr><th>身份證</th><td><s:propertyvalue="student.idNumber"/></td></tr><tr><th>性別</th><td><s:propertyvalue="student.gender"/></td></tr><tr><th>省份</th><td><s:propertyvalue="vince"/></td></tr><tr><th>生日</th><td><s:propertyvalue="student.year"/>-<s:propertyvalue="student.month"/>-<s:propertyvalue="student.day"/></td></tr><tr><th>年齡</th><td><s:propertyvalue="student.age"/></td></tr></tbody></table><hr/><address><ahref="logout">登出</a></address></body></html>核心類介紹2.1model層Modle層就是對(duì)應(yīng)的數(shù)據(jù)庫(kù)表的實(shí)體類。2.1.1User這是對(duì)應(yīng)數(shù)據(jù)庫(kù)表users的持久化類,代表?戶對(duì)象。packagecom.orzfly.StudentBook.model;importjava.util.List;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.Table;importorg.hibernate.Session;importorg.hibernate.query.Query;importcom.orzfly.StudentBook.helper.HibernateSessionFactory;@Entity@Table(name="users")publicclassUserimplementsjava.io.Serializable{ privatestaticfinallongserialVersionUID=5539065061159701472L; privateIntegerid; privateStringname; privateStringpassword; publicUser(){ } publicUser(Stringname,Stringpassword){ =name; this.password=password; } @Id @GeneratedValue @Column(name="id",unique=true,nullable=false) publicIntegergetId(){ returnthis.id; } publicvoidsetId(Integerid){ this.id=id; } @Column(name="name") publicStringgetName(){ return; } publicvoidsetName(Stringname){ =name; } @Column(name="password") publicStringgetPassword(){ returnthis.password; } publicvoidsetPassword(Stringpassword){ this.password=password; }}2.1.2Student這是對(duì)應(yīng)數(shù)據(jù)庫(kù)表students的持久化類,代表學(xué)?對(duì)象。packagecom.orzfly.StudentBook.model;importjava.util.List;importjavax.persistence.Column;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.Table;importjavax.persistence.Transient;importorg.hibernate.Session;importorg.hibernate.query.Query;importcom.orzfly.StudentBook.helper.HibernateSessionFactory;importcom.orzfly.StudentBook.helper.IdcardInfoExtractor;@Entity@Table(name="students")publicclassStudentimplementsjava.io.Serializable{ privatestaticfinallongserialVersionUID=2224561345678905434L; privateIntegerid; privateStringfirstName; privateStringlastName; privateStringclassName; privateStringphotoFileName; privateStringidNumber; privateIdcardInfoExtractoridcardInfo; publicStudent(){ } publicStudent(StringfirstName,StringlastName,StringclassName, StringphotoFileName,StringidNumber){ this.firstName=firstName; this.lastName=lastName; this.className=className; this.photoFileName=photoFileName; this.idNumber=idNumber; } @Id @GeneratedValue @Column(name="id",unique=true,nullable=false) publicIntegergetId(){ returnthis.id; } publicvoidsetId(Integerid){ this.id=id; } @Column(name="firstName") publicStringgetFirstName(){ returnfirstName; } publicvoidsetFirstName(StringfirstName){ this.firstName=firstName; } @Column(name="lastName") publicStringgetLastName(){ returnlastName; } publicvoidsetLastName(StringlastName){ this.lastName=lastName; } @Column(name="className") publicStringgetClassName(){ returnclassName; } publicvoidsetClassName(StringclassName){ this.className=className; } @Column(name="photoFileName") publicStringgetPhotoFileName(){ returnphotoFileName; } publicvoidsetPhotoFileName(StringphotoFileName){ this.photoFileName=photoFileName; } @Column(name="idNumber") publicStringgetIdNumber(){ returnidNumber; } publicvoidsetIdNumber(StringidNumber){ this.idNumber=idNumber; } @Transient privateIdcardInfoExtractorgetIdcardInfo(){ if(this.idcardInfo==null){ this.idcardInfo=newIdcardInfoExtractor(this.idNumber); } returnthis.idcardInfo; } @Transient publicStringgetGender(){ returngetIdcardInfo().getGender(); } @Transient publicStringgetProvince(){ returngetIdcardInfo().getProvince(); } @TransientpublicintgetYear(){returngetIdcardInfo().getYear();} @TransientpublicintgetMonth(){returngetIdcardInfo().getMonth();} @TransientpublicintgetDay(){returngetIdcardInfo().getDay();} @TransientpublicintgetAge(){returngetIdcardInfo().getAge();}}2.2Dao層Dao層是使?了Hibernate連接數(shù)據(jù)庫(kù)、操作數(shù)據(jù)庫(kù)(增刪改查)。2.2.1UserDao這是持久層的?戶。packagecom.orzfly.StudentBook.dao;importjava.util.List;importcom.orzfly.StudentBook.model.User;publicinterfaceUserDao{ publicUserfindByUsername(Stringusername); publicList<User>findAll();}2.2.2StudentDao這是持久層的學(xué)?。packagecom.orzfly.StudentBook.dao;importjava.util.List;importcom.orzfly.StudentBook.model.Student;publicinterfaceStudentDao{ publicStudentfindById(Integerid); publicList<Student>findAll();}2.3Daolmap層2.3.1UserDaolmap這是相應(yīng)的具體實(shí)現(xiàn)。packagecom.orzfly.StudentBook.dao.impl;importjava.util.List;importorg.springframework.orm.hibernate5.HibernateTemplate;importcom.orzfly.StudentBook.dao.UserDao;importcom.orzfly.StudentBook.model.User;publicclassUserDaoImplimplementsUserDao{ privateHibernateTemplatehibernateTemplate; publicHibernateTemplategetHibernateTemplate(){ returnhibernateTemplate; } publicvoidsetHibernateTemplate(HibernateTemplatehibernateTemplate){ this.hibernateTemplate=hibernateTemplate; } @Override publicUserfindByUsername(Stringusername){ return(User)this.hibernateTemplate.find("fromUseruwhere=?",username).get(0); } @Override publicList<User>findAll(){ return(List<User>)this.hibernateTemplate.find("fromUser"); }}2.3.2StudentDaoImpl這是相應(yīng)的具體實(shí)現(xiàn)。packagecom.orzfly.StudentBook.dao.impl;importjava.util.List;importorg.springframework.orm.hibernate5.HibernateTemplate;importcom.orzfly.StudentBook.dao.StudentDao;importcom.orzfly.StudentBook.model.Student;publicclassStudentDaoImplimplementsStudentDao{ privateHibernateTemplatehibernateTemplate; publicHibernateTemplategetHibernateTemplate(){ returnhibernateTemplate; } publicvoidsetHibernateTemplate(HibernateTemplatehibernateTemplate){ this.hibernateTemplate=hibernateTemplate; } @Override publicStudentfindById(Integerid){ return(Student)this.hibernateTemplate.get(Student.class,id); } @Override publicList<Student>findAll(){ return(List<Student>)this.hibernateTemplate.find("fromStudent"); }}2.4ServiceService層引?對(duì)應(yīng)的Dao數(shù)據(jù)庫(kù)操作,在這?可以編寫??需要的代碼(?如簡(jiǎn)單的判斷)。2.4.1Userservice這是業(yè)務(wù)邏輯層的?戶接?。packagecom.orzfly.StudentBook.service;importjava.util.List;importcom.orzfly.StudentBook.model.User;publicinterfaceUserService{ publicUserfindByUsername(Stringusername); publicList<User>findAll();}2.4.2Studentservice這是業(yè)務(wù)邏輯層的學(xué)?接?。packagecom.orzfly.StudentBook.service;importjava.util.List;importcom.orzfly.StudentBook.model.Student;publicinterfaceStudentService{ publicStudentfindById(Integerid); publicList<Student>findAll();}2.5servicelmpl2.5.1Userservicelmpl這是業(yè)務(wù)邏輯層的?戶接?的具體實(shí)現(xiàn)。packagecom.orzfly.StudentBook.service.impl;importjava.util.List;importcom.orzfly.StudentBook.dao.UserDao;importcom.orzfly.StudentBook.model.User;importcom.orzfly.StudentBook.service.UserService;publicclassUserServiceImplimplementsUserService{ privateUserDaouserDao; publicUserDaogetUserDao(){ returnuserDao; } publicvoidsetUserDao(UserDaouserDao){ this.userDao=userDao; } @Override publicUserfindByUsername(Stringusername){ returnuserDao.findByUsername(username); } @Override publicList<User>findAll(){ returnuserDao.findAll(); }}2.5.2Studentservicelmpl這是業(yè)務(wù)邏輯層的學(xué)?接?的具體實(shí)現(xiàn)。packagecom.orzfly.StudentBook.service.impl;importjava.util.List;importcom.orzfly.StudentBook.dao.StudentDao;importcom.orzfly.StudentBook.model.Student;importcom.orzfly.StudentBook.service.StudentService;publicclassStudentServiceImplimplementsStudentService{ privateStudentDaostudentDao; publicStudentDaogetStudentDao(){ returnstudentDao; } publicvoidsetStudentDao(StudentDaostudentDao){ this.studentDao=studentDao; } @Override publicList<Student>findAll(){ returnstudentDao.findAll(); } @Override publicStudentfindById(Integerid){ returnstudentDao.findById(id); }}2.6Interceptor2.6.1PrivilegeInterceptor這是?個(gè)校驗(yàn)?戶是否登陸的Struts2攔截器。如果沒(méi)有登陸會(huì)返回login結(jié)果要求跳到登陸頁(yè)去。packagecom.orzfly.StudentBerceptor;importcom.opensymphony.xwork2.Action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importerceptor.AbstractInterceptor;publicclassPrivilegeInterceptorextendsAbstractInterceptor{ @Override publicStringintercept(ActionInvocationinvocation)throwsException{ ActionContextactionContext=invocation.getInvocationContext(); Objectuser=actionContext.getSession().get("user"); if(user!=null){ returninvocation.invoke(); }else{ returnAction.LOGIN; } }}2.7Domain2.7.1User這是登陸頁(yè)(LoginAction)中?到的數(shù)據(jù)類。packagecom.orzfly.StudentBook.domain;publicclassUser{ privateStringusername; privateStringpassword; publicStringgetUsername(){ if(username==null)return""; returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ if(password==null)return""; returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; }}2.8Action引?對(duì)應(yīng)的Service層,在這?結(jié)合Struts的配置?件,跳轉(zhuǎn)到指定的頁(yè)?,當(dāng)然也能接受頁(yè)?傳遞的請(qǐng)求數(shù)據(jù),也可以做些計(jì)算處理。2.8.1LoginAction登陸頁(yè)的?為類,校驗(yàn)?戶名和密碼并跳轉(zhuǎn)?列表頁(yè)或是報(bào)錯(cuò)。packagecom.orzfly.StudentBook.action;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;importcom.opensymphony.xwork2.Action;importcom.orzfly.StudentBook.model.User;importcom.orzfly.StudentBook.service.UserService;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.ActionContext;publicclassLoginActionextendsActionSupport{ privatecom.orzfly.StudentBook.domain.Useruser; publiccom.orzfly.StudentBook.domain.UsergetUser(){ returnuser; } publicvoidsetUser(com.orzfly.StudentBook.domain.Useruser){ this.user=user; } publicStringexecute(){ if(this.user!=null){ ApplicationContextapplicationContext=newClassPathXmlApplicationContext("classpath:applicationContext.xml"); UserServiceuserService=applicationContext.getBean("userService",UserService.class); Usermodel=userService.findByUsername(this.user.getUsername()); if(model!=null&&model.getPassword().equals(this.user.getPassword())){ ActionContextcontext=ActionContext.getContext(); context.getSession().put("user",model.getName()); returnAction.SUCCESS; } } addActionError("鐧婚檰澶辮觸錛岃媯?煡浣犵殑瀛﹀彿鍜屽瘑鐮佹槸鍚︽紜?"); returnAction.ERROR; }}2.8.2ListAction列表頁(yè)的?為類,列出所有學(xué)?的信息。packagecom.orzfly.StudentBook.action;importcom.opensymphony.xwork2.Action;importcom.orzfly.StudentBook.model.Student;importcom.orzfly.StudentBook.model.User;importcom.orzfly.StudentBook.service.StudentService;importcom.orzfly.StudentBook.service.UserService;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.ActionContext;importjava.util.List;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassListActionextendsActionSupport{ privateList<Student>students; privateUserself; publicList<Student>getStudents(){ returnstudents; } publicvoidsetUsers(List<Student>students){ this.students=students; } publicUsergetSelf(){ returnself; } publicvoidsetSelf(Userself){ this.self=self; } publicStringexecute(){ ActionContextcontext=ActionContext.getContext(); ApplicationContextapplicationContext=newClassPathXmlApplicationContext("classpath:applicationContext.xml"); StudentServicestudentService=applicationContext.getBean("studentService",StudentService.class); UserServiceuserService=applicationContext.getBean("userService",UserService.class); Userself=userService.findByUsername((String)context.getSession().get("user")); this.self=self; this.students=studentService.findAll(); returnAction.SUCCESS; }}2.8.3DetailAction詳情頁(yè)的?為類,列出單個(gè)學(xué)?的具體信息。packagecom.orzfly.StudentBook.action;importcom.opensymphony.xwork2.Action;importcom.orzfly.StudentBook.model.Student;importcom.orzfly.StudentBook.service.StudentService;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.ActionContext;importjava.util.List;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;publicclassDetailActionextendsActionSupport{ privateIntegerid; privateStudentstudent; publicIntegergetId(){ returnid; } publicvoidsetId(Integerid){ this.id=id; } publicStudentgetStudent(){ returnstudent; } publicvoidsetStudent(Studentstudent){ this.student=student; } publicStringexecute(){ ActionContextcontext=ActionContext.getContext(); ApplicationContextapplicationContext=newClassPathXmlApplicationContext("classpath:applicationContext.xml"); StudentServicestudentService=applicationContext.getBean("studentService",StudentService.class); this.student=studentService.findById(id); returnAction.SUCCESS; }}配置文件介紹3.1web.xml在Java?程中,web.xml?來(lái)初始化?程配置信息,?如說(shuō)歡迎頁(yè)?、過(guò)濾器、監(jiān)聽器、?服務(wù)程序、?服務(wù)程序映射、啟動(dòng)加載級(jí)別等等。<?xmlversion="1.0"encoding="UTF-8"?><web-appid="StudentBook"version="2.4" xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts2Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>Login.jsp</welcome-file> </welcome-file-list></web-app>3.2struts.xmlstruts.xml是我們?cè)陂_發(fā)中利?率最?的?件,也是Struts2中最重要的配置?件。Struts2框架通過(guò)Action對(duì)象來(lái)處理HTTP請(qǐng)求,該請(qǐng)求的URL地址對(duì)應(yīng)的Action即配置在action元素中。當(dāng)調(diào)?Action?法處理結(jié)束返回后,下?步就是使?result元素來(lái)設(shè)置返回給瀏覽器的視圖。配置result元素時(shí)常需要指定name和type兩個(gè)屬性。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN""/dtds/struts-2.0.dtd"><struts> <constantname="struts.enable.DynamicMethodInvocation" value="false"/> <constantname="struts.devMode"value="false"/> <constantname="struts.custom.i18n.resources" value="ApplicationResources"/> <packagename="default"extends="struts-default"namespace="/"> <interceptors> <interceptorname="privilege"class="com.orzfly.StudentBerceptor.PrivilegeInterceptor"/> <interceptor-stackname="myStack"> <interceptor-refname="defaultStack"/> <interceptor-refname="privilege"/> </interceptor-stack> </interceptors> <actionname="login" class="com.orzfly.StudentBook.action.LoginAction"> <resultname="success"type="redirect">list</result> <resultname="error">Login.jsp</result> </action> <actionname="logout" class="com.orzfly.StudentBook.action.LogoutAction"> <resultname="success">Login.jsp</result> <resultname="error">Login.jsp</result> </action> <actionname="list" class="com.orzfly.StudentBook.action.ListAction"> <interceptor-refname="myStack"/> <resultname="success">List.jsp</result> <resultname="login"type="redirect">Login.jsp</result> </action> <actionname="detail" class="com.orzfly.StudentBook.action.DetailAction"> <interceptor-refname="myStack"/> <resultname="success">Detail.jsp</result> <resultname="login"type="redirect">Login.jsp</result> </action> </package></struts>3.3hibernate.cfg.xmlHibernate中配置主要是Hibernate與數(shù)據(jù)庫(kù)的基本連接信息,在Hibernate?作的初始階段,這些信息被先后加載到Con?guration和SessionFactory實(shí)例。還有Hibernate的基本映射信息,即系統(tǒng)中每?個(gè)類與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)信息,在Hibernate?作的初始階段,這些信息通過(guò)hibernate.cfg.xml的mapping節(jié)點(diǎn)被加載到Con?guration和SessionFactory實(shí)例。這兩種?件信息包含了Hibernate的所有運(yùn)?期參數(shù)。<?xmlversion="1.0"encoding="UTF-8"?><hibernate-configuration><session-factory><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">root</property><propertyname="hibernate.connection.url">jdbc:mysql://:3306/StudentBook</property><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><propertyname="javax.persistence.validation.mode">none</property><propertyname="show_sql">true</property> <propertyname="hbm2ddl.auto">update</property> <propertyname="vider_class">ernal.C3P0ConnectionProvider</property><mappingclass="com.orzfly.StudentBook.model.User"></mapping><mappingclass="com.orzfly.StudentBook.model.Student"></mapping></session-factory></hibernate-configuration>3.4applicationContext.xmlSpring是?種輕量級(jí)的Java開發(fā)框架,是?種JavaEE的容器管理?具,Spring的核?就是IoC容器,Spring利?IoC容器來(lái)注冊(cè)Bean,對(duì)Bean的管理能夠?qū)崿F(xiàn)Java對(duì)象之間的依賴關(guān)系,從?成為完成其他復(fù)雜任務(wù)的基礎(chǔ)。Spring建?在IoC容器核?功能之上的其他重要功能有:AOP(?向切?編程),事務(wù)管理,SpringMVC,ORM等,這些功能都在Spring的核?配置?檔applicationContext.xml中得以體現(xiàn)。<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><beansxmlns="/schema/beans"xmlns:aop="/schema/aop"xmlns:context="/schema/context"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/aop/schema/aop/spring-aop.xsd/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/jee/schema/jee/spring-jee.xsd/schema/tx/schema/tx/spring-tx.xsd"> <beanid="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <propertyname="configLocation"value="classpath:hibernate.cfg.xml"></property> </bean> <beanid="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <beanid="userDao"class="com.orzfly.StudentBook.dao.impl.UserDaoImpl"> <propertyname="hibernateTemplate"ref="hibernateTemplate"></property> </bean> <beanid="userService"class="com.orzfly.StudentBook.service.impl.UserServiceImpl"> <propertyname="userDao"ref="userDao"></property> </bean> <beanid="studentDao"class="com.orzfly.StudentBook.dao.impl.StudentDaoImpl"> <propertyname="hibernateTemplate"ref="hibernateTemplate"></property> </bean> <beanid="studentService"class="com.orzfly.StudentBook.service.impl.StudentServiceImpl"> <propertyname="studentDao"ref="studentDao"></property> </bean> <beanid="txManager"class="org.springframework.orm.hibernate5.HibernateTransactionManager"> <propertyname="sessionFactory"ref="sessionFactory"></property> </bean> <tx:adviceid="txAdvice"transaction-manager="txManager"> <tx:attributes> <tx:methodname="save*"/> <tx:methodname="update*"/> <tx:methodname="delete*"/> <tx:methodname="find*"read-only="true"/> </tx:attributes> </tx:advice> <aop:config> <aop:advisoradvice-ref="txAdvice" pointcut="execution(*com.orzfly.StudentBook.service..*.*(..))"></aop:advisor> </aop:config></beans>運(yùn)行界面展示圖1:登錄界面,用戶名為,密碼為123。圖2:學(xué)生列表界面,點(diǎn)擊相應(yīng)照片可查看學(xué)生詳細(xì)信息。圖3:學(xué)生詳細(xì)信息列表,點(diǎn)擊返回可返回上一層??偨Y(jié)此項(xiàng)目的基本框架構(gòu)建已經(jīng)完成,達(dá)到了構(gòu)建目標(biāo)。在此次設(shè)計(jì)中,我掌握了很多書上沒(méi)有的知識(shí)。在沒(méi)有學(xué)習(xí)SSH框架前,我們一般采用Jsp+javabean+servlet開發(fā),這里就是MVC架構(gòu)。而Struts其實(shí)就是替代了Servlet,我們知道Servlet在一般的開發(fā)中做控制頁(yè)面跳轉(zhuǎn),同時(shí)調(diào)用系統(tǒng)的業(yè)務(wù)邏輯層?,F(xiàn)在想想Struts是不是做一樣的是?只是它能夠更加的提高開發(fā)速度。我們Servlet開發(fā)時(shí),是要?jiǎng)?chuàng)建一個(gè)Servlet其實(shí)就是繼承了HttpServlet這個(gè)類。而現(xiàn)在Struts里面的Action也要集成一個(gè)ActionSupport類。這里可以看到其實(shí)Struts基本上和Servlet差不多,但是其中也各有不同。在MVC結(jié)構(gòu)里,我們使用Struts來(lái)實(shí)現(xiàn)里面的‘C’,也就是用之層。而Hibernate是實(shí)現(xiàn)‘M’層,Jsp則實(shí)現(xiàn)‘V’。當(dāng)用戶訪問(wèn)時(shí),提交給Struts,然后Struts通Service(Manage)層,然后Service(Manage)層訪問(wèn)DAO層,DAO層通過(guò)Hibernate訪問(wèn)數(shù)據(jù)庫(kù)。到現(xiàn)在一直沒(méi)用到Spring,Spring是干什么的呢?Spring就是控制業(yè)務(wù)邏輯層。例如:給Struts的action注入Service(Manage)層的對(duì)象,向Service(Manage)層注入DAO層的對(duì)象。通過(guò)Spring的AOP來(lái)控制Hibernate訪問(wèn)數(shù)據(jù)庫(kù)的事務(wù),來(lái)管理數(shù)據(jù)庫(kù)訪問(wèn)事務(wù)。這就是SSH整合的基本思想。了解了這些基本思想再加上和同學(xué)之間的交流,于是大體有了這份報(bào)告。在此架構(gòu)上可完成其余功能,欠妥之處還請(qǐng)老師批評(píng)指正。基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測(cè)儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測(cè)量?jī)x的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用HYPERLINK"/detail

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論