版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目:基于SSH架构的班级人员信息展示系统设计专业:J计算机1302学号:姓名:
目的随着计算机技术普及应用及学校信息化的飞速发展,以人工方式对信息进行管理己不再适用,使用计算机化管理系统已经成为学校管理中不可或缺的一部分。如何在社会高速发展的现在,提高学校工作效率以及管理效率是各校发展必须考虑的问题。传统的管理方式往往采用人工的方式对班级人员文档进行管理,这种粗放的管理模式效率很低,且不利于班级人员档案的升级和维护。为了解决传统管理模式中存在的矛盾和突出问题,保证人员管理中数据的可靠性、安全性,操作的正确性、高效性,就需要充分运用计算机资源将公式的人事信息充分的统一起来管理。目前,基于SSH构建的员工管理系统已经成为社会进步与发展的又一关键因素。使用基于SSH构建的员工管理体系不但能够有效地减少银行日常工作流程,优化人力资源成本,而且也能够为银行职员搭载一个不受地域限制的沟通桥梁。利用此管理系统有着工作便捷,提高效率,规范程序,智能办公,方便实用,成本低廉等优点。此系统具备大范围使用的客观条件,能够保证管理系统的信息化水平提高。因此我们此次设计的该系统主要功能是先登入一个用户登录系统,登录成功进入到班级信息展示页面,里面有每个人的信息,点击照片或者学号跳入到另外一个界面显示学生的个人详细信息,如果登录不成功,则两个页面都不能进入。相关技术简介Ssh为
struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(DataAccessObjects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。1、 strutsstruts是开源框架。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。Struts是Apache基金会Jakarta项目组的一个OpenSource项目,它采用MVC模式,能够很好地帮助java开发者利用J2EE开发Web应用。和其他的java架构一样,Struts也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Struts框架的核心是一个弹性的控制层,基于如JavaServlets,JavaBeans,ResourceBundles与XML等标准技术,以及JakartaCommons的一些类库。Struts由一组相互协作的类(组件)、Servlet以及jsptaglib组成。基于struts构架的web应用程序基本上符合JSPModel2的设计标准,可以说是一个传统MVC设计模式的一种变化类型。2、 hibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。3、 springSpring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现WriteOnce及RunAnywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而是与它们无缝地整合。三、 系统设计与实现1、 页面文件介绍1.1.Login.jsp该页⾯为登陆页⾯,受LoginAction控制,页⾯内主要含有⼀个表单,提交到login.action。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>学生信息管理系统</title></head><body><h2>学生登陆</h2><s:actionerror/><s:formaction="login.action"method="post"><s:textfieldname="user.username"label="学号"size="20"/><s:passwordname="user.password"label="密码"size="20"/><s:submitmethod="execute"label="登陆"align="center"/></s:form></body></html>1.2List.jsp该页⾯为登陆后展⽰学⽣列表的页⾯,受ListAction控制。页⾯内通过s:iterator⽣成表格,将List<Student>的学⽣数据展⽰出来。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>学生信息管理系统</title></head><body><h2>学生列表</h2><p><s:propertyvalue=""/>,你好。</p><table><thead><tr><th>学号</th><th>照片</th><th>姓名</th><th>班级</th></tr></thead><tfoot><tr><th>学号</th><th>照片</th><th>姓名</th><th>班级</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该页⾯为学⽣信息查看页,受DetailAction控制。<%@pagecontentType="text/html;charset=UTF-8"%><%@taglibprefix="s"uri="/struts-tags"%><html><head><title>学生信息管理系统</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>学号</th><td><s:propertyvalue="student.id"/></td></tr><tr><th>照片</th><td><imgsrc="photos/<s:propertyvalue="student.photoFileName"/>"></img></td></tr><tr><th>班级</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层就是对应的数据库表的实体类。2.1.1User这是对应数据库表users的持久化类,代表⽤户对象。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这是对应数据库表students的持久化类,代表学⽣对象。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连接数据库、操作数据库(增删改查)。2.2.1UserDao这是持久层的⽤户。packagecom.orzfly.StudentBook.dao;importjava.util.List;importcom.orzfly.StudentBook.model.User;publicinterfaceUserDao{ publicUserfindByUsername(Stringusername); publicList<User>findAll();}2.2.2StudentDao这是持久层的学⽣。packagecom.orzfly.StudentBook.dao;importjava.util.List;importcom.orzfly.StudentBook.model.Student;publicinterfaceStudentDao{ publicStudentfindById(Integerid); publicList<Student>findAll();}2.3Daolmap层2.3.1UserDaolmap这是相应的具体实现。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这是相应的具体实现。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层引⽤对应的Dao数据库操作,在这⾥可以编写⾃⼰需要的代码(⽐如简单的判断)。2.4.1Userservice这是业务逻辑层的⽤户接⼜。packagecom.orzfly.StudentBook.service;importjava.util.List;importcom.orzfly.StudentBook.model.User;publicinterfaceUserService{ publicUserfindByUsername(Stringusername); publicList<User>findAll();}2.4.2Studentservice这是业务逻辑层的学⽣接⼜。packagecom.orzfly.StudentBook.service;importjava.util.List;importcom.orzfly.StudentBook.model.Student;publicinterfaceStudentService{ publicStudentfindById(Integerid); publicList<Student>findAll();}2.5servicelmpl2.5.1Userservicelmpl这是业务逻辑层的⽤户接⼜的具体实现。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这是业务逻辑层的学⽣接⼜的具体实现。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这是⼀个校验⽤户是否登陆的Struts2拦截器。如果没有登陆会返回login结果要求跳到登陆页去。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这是登陆页(LoginAction)中⽤到的数据类。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引⽤对应的Service层,在这⾥结合Struts的配置⽂件,跳转到指定的页⾯,当然也能接受页⾯传递的请求数据,也可以做些计算处理。2.8.1LoginAction登陆页的⾏为类,校验⽤户名和密码并跳转⾄列表页或是报错。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列表页的⾏为类,列出所有学⽣的信息。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详情页的⾏为类,列出单个学⽣的具体信息。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⽤来初始化⼯程配置信息,⽐如说欢迎页⾯、过滤器、监听器、⼩服务程序、⼩服务程序映射、启动加载级别等等。<?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是我们在开发中利⽤率最⾼的⽂件,也是Struts2中最重要的配置⽂件。Struts2框架通过Action对象来处理HTTP请求,该请求的URL地址对应的Action即配置在action元素中。当调⽤Action⽅法处理结束返回后,下⼀步就是使⽤result元素来设置返回给浏览器的视图。配置result元素时常需要指定name和type两个属性。<?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与数据库的基本连接信息,在Hibernate⼯作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例。还有Hibernate的基本映射信息,即系统中每⼀个类与其对应的数据库表之间的关联信息,在Hibernate⼯作的初始阶段,这些信息通过hibernate.cfg.xml的mapping节点被加载到Configuration和SessionFactory实例。这两种⽂件信息包含了Hibernate的所有运⾏期参数。<?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是⼀种轻量级的Java开发框架,是⼀种JavaEE的容器管理⼯具,Spring的核⼼就是IoC容器,Spring利⽤IoC容器来注册Bean,对Bean的管理能够实现Java对象之间的依赖关系,从⽽成为完成其他复杂任务的基础。Spring建⽴在IoC容器核⼼功能之上的其他重要功能有:AOP(⾯向切⾯编程),事务管理,SpringMVC,ORM等,这些功能都在Spring的核⼼配置⽂档applicationContext.xml中得以体现。<?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>运行界面展示图1:登录界面,用户名为,密码为123。图2:学生列表界面,点击相应照片可查看学生详细信息。图3:学生详细信息列表,点击返回可返回上一层。总结此项目的基本框架构建已经完成,达到了构建目标。在此次设计中,我掌握了很多书上没有的知识。在没有学习SSH框架前,我们一般采用Jsp+javabean+servlet开发,这里就是MVC架构。而Struts其实就是替代了Servlet,我们知道Servlet在一般的开发中做控制页面跳转,同时调用系统的业务逻辑层。现在想想Struts是不是做一样的是?只是它能够更加的提高开发速度。我们Servlet开发时,是要创建一个Servlet其实就是继承了HttpServlet这个类。而现在Struts里面的Action也要集成一个ActionSupport类。这里可以看到其实Struts基本上和Servlet差不多,但是其中也各有不同。在MVC结构里,我们使用Struts来实现里面的‘C’,也就是用之层。而Hibernate是实现‘M’层,Jsp则实现‘V’。当用户访问时,提交给Struts,然后Struts通Service(Manage)层,然后Service(Manage)层访问DAO层,DAO层通过Hibernate访问数据库。到现在一直没用到Spring,Spring是干什么的呢?Spring就是控制业务逻辑层。例如:给Struts的action注入Service(Manage)层的对象,向Service(Manage)层注入DAO层的对象。通过Spring的AOP来控制Hibernate访问数据库的事务,来管理数据库访问事务。这就是SSH整合的基本思想。了解了这些基本思想再加上和同学之间的交流,于是大体有了这份报告。在此架构上可完成其余功能,欠妥之处还请老师批评指正。基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用HYPERLINK"/detail
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业计划书中的内部培训与员工发展计划考核试卷
- 林业与农村物联网建设考核试卷
- 炼铁过程中的环境保护措施考核试卷
- 城市轨道交通与生态环境考核试卷
- 2017-2022年中国会展行业运营格局现状及十三五投资战略分析报告(目录)
- 2024-2025学年江西省南丰县某中学高三(上)一轮复习联考物理试卷(一)(含答案)
- DB11∕T 1772-2020 地源热泵系统评价技术规范
- 语文研讨课件教学课件
- 新员工入行培训方案
- 区分左右课件教学课件
- 《会计平衡公式》教案
- 除尘器安装专业监理实施细则
- 八年级黄金矩形(数学活动)ppt课件
- 销售技巧个顶尖电梯销售技巧
- 《幼儿园卫生保健后勤材料资料》幼儿园保健医生每日检查工作记录表
- 葡萄糖生产教程
- 需求价格弹性案例分析
- 企业内部通信系统的设计与实现 计算机论文
- 重大决策合法性审查表.doc
- 信号集中监测系统(完整版)
- 复古风同学聚会邀请函.doc
评论
0/150
提交评论