JavaEE中Struts2 Hibernate简单的信息管理系统实现.docx
- 文档编号:29009757
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:29
- 大小:736.21KB
JavaEE中Struts2 Hibernate简单的信息管理系统实现.docx
《JavaEE中Struts2 Hibernate简单的信息管理系统实现.docx》由会员分享,可在线阅读,更多相关《JavaEE中Struts2 Hibernate简单的信息管理系统实现.docx(29页珍藏版)》请在冰豆网上搜索。
JavaEE中Struts2Hibernate简单的信息管理系统实现
1.引言
随着JavaEE课程结束,我逐步了解的Struts2和Hibernate的大致原理及执行过程。
虽然经过了老师的授课,但是对这些框架技术还是不是很熟悉,单独开发还是具有一定的难度。
本次的课程论文是我结合慕课网的一段学习视频来实现了简单的信息管理系统。
该学生信息管理系统涉及到学生、教师、系统管理员。
设置一个系统管理员对系统进行管理。
所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师信息进行增删改查等操作的信息管理系统。
2.基础理论
2.1.Struts2框架的基础理论
2.1.1.Struts2概述
Struts1现在已经发展成为一个高度成熟的框架,不管是稳定性还是可靠性,都得到了广泛的证明。
但由于Struts1存在一些设计上的缺陷,于是催生了Struts2框架。
Struts2与Struts1相比,确实有很多革命性的改进,但它并不是一个全新的框架,而是在WebWork基础上发展起来。
从某种意义上讲,Struts2没有继承Struts1,而是继承了WebWork框架,或者说,WebWork衍生出了Struts2,而不是Struts1衍生了Struts2。
因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性和性能各方面都有很好的保证,而且吸收了Struts1和WebWork两者的优势,因此,Struts2是一个非常完善的MVC实现框架。
Struts2是轻量级MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。
所谓轻量级,低侵入性,与业务代码的耦合度很低。
即业务代码中基本不需要import它的包。
struts2实现了MVC,并提供了一些列API,采用模式化方式简化业务开发过程。
MVC:
M(modle)模型,它的职责是业务逻辑,包含两层:
业务数据和业务处理逻辑。
比如实体类,DAO,service都属于模型层。
V(view)视图,它的职责是负责显示界面和用户交互(收集用户信息)。
属于视图的组件是不包含业务逻辑和控制逻辑的jsp
C(controller)控制器,它是模型层M和视图层V之间的桥梁,用于控制流程。
比如:
在servlet项目中的单一控制器,ActionServlet.
2.1.2Struts运行原理
图1、Struts运行原理图
2.1.3.Struts2体系结构
我们说struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。
下图2显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。
图2、Struts2体系结构图
1.从视图角度(View)
主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。
目前包括:
BeanTags,HTMLTags,LogicTags,NestedTags,TemplateTags 这几个Taglib。
有关它们的详细资料请参考struts用户手册
2.从模型角度(Model)
模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。
在Struts中,系统的状态主要有ActiomFormBean体现,一般情况下,这些状态是非持久性的。
如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作
3.从控制器角度(Controller)
在Strutsframework中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。
其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。
2.1.3.Struts2基本组件包
整个struts大约有15包,近200个类所组成,而且数量还在不断的扩展。
图片3则显现了这几个组件包之间的关系。
其中action是整个strutsframework的核心
图3、Struts的基本组件关系图
图4、Struts2核心jar包
2.1.4.Struts2配置
1.Web.xml的配置
xmlversion="1.0"encoding="UTF-8"?
>
xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns="xsi: schemaLocation="id="WebApp_ID"version="3.0"> 2.struts.xml的配置 xmlversion="1.0"encoding="UTF-8"? > DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN" "http: //struts.apache.org/dtds/struts-2.3.dtd"> 2.2.Hibernate框架的基础理论 2.2.1.Hibernate概述 Hibernate是一个基于元数据的轻量级的ORM框架: 1、元数据(MetaData): dataaboutdata(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。 2、轻量级: 占用资源少,没有侵入性。 (其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。 3、ORM: (ObjectRelationMapping)对象关系数据库的映射。 这是Hibernate框架的重点,也就是说将我们程序中的实体(bean,这里也叫POJO)和数据库中的表进行映射。 java类型和sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是sql数据库方面。 4、POJO: (Plain OrdinaryjavaObject),无格式的普通java对象,也就是上边说的实体,和数据库做映射的简单类。 只是在这里提出了一个新的名词而已。 2.2.2.Hibernate环境搭建 1.和Struts2几个框架的大概流程一样,首先需要我们拷入必备的jar包。 jar包的拷入奔着一个够用即可的原则,用什么拷贝什么,当然有些日志输出,单元测试是为了更好的观察框架而拷入的不是必备的。 这里连接MySQL,所以使用了mysql的驱动jar包: 图5、Hibernate核心jar包 2.核心配置文件hibernate.cfg.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""> com.mysql.jdbc.Driver jdbc: mysql: //localhost: 3306/test? useUnicode=true&characterEncoding=UTF-8 org.hibernate.dialect.MySQLDialect 3.功能设计 3.1.系统功能 3.1.1.系统功能概述 (1)该系统实现的管理员的系统登录; (2)系统记录学生的姓名、性别,出生日期,地址,教师的姓名、性别、、出生日期、电话等信息; (3)系统可查询查询每个学生及教师的信息; (4)管理员通过系统可对学生教师信息的进行查询,修改,添加,删除; 3.1.2.系统功能结构 图6、系统功能结构图 3.2.系统数据库设计 3.2.1.数据库设计概述 (1)数据库存在学生、教师、管理员三个实体 (2)管理员表含有uids,adminname.adminpwd三个属性 (3)学生表含有sid,sname,gender,birthday,address五个属性 (4)教师表含有tid,tname,gender,birthday,phone五个属性 3.2.2.数据库逻辑E-R图 图7、系统功能结构E-R图 4.系统实现 4.1.管理员实体实现 4.1.1.管理员实体类 1.uers.java packagecn.gym.entity; publicclassUsers{ privateIntegeruids; privateStringusername; privateStringpassword; publicUsers(){ } publicUsers(Integeruids,Stringusername,Stringpassword){ this.uids=uids; this.username=username; this.password=password; } publicIntegergetUids(){ returnuids; } publicvoidsetUids(Integeruids){ this.uids=uids; } publicStringgetUsername(){ returnusername; } publicvoidsetUsername(Stringusername){ this.username=username; } publicStringgetPassword(){ returnpassword; } publicvoidsetPassword(Stringpassword){ this.password=password; } @Override publicStringtoString(){ return"Users[uids="+uids+",username="+username+",password=" +password+"]"; } } 2.users.hbm.xml xmlversion="1.0"encoding="UTF-8"? > DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""> 4.1.2.管理员实体控制器 uersAction.java packagecn.gym.action; importorg.apache.struts2.interceptor.validation.SkipValidation; importcn.gym.entity.Users; importcn.gym.service.UserDao; importcn.gym.serviceimpl.UserDaoImpl; importcom.opensymphony.xwork2.ModelDriven; publicclassUsersActionextendsSuperActionimplementsModelDriven privateUsersuser=newUsers(); privateUserDaoudao=newUserDaoImpl(); publicStringlogin(){ if(udao.usersLogin(user)){ session.setAttribute("loginUserName",user.getUsername()); return"login_success"; }else{ return"login_failure"; } } publicStringlogout(){ if(session.getAttribute("loginUserName")! =null){ session.removeAttribute("loginUserName"); } return"logout_success"; } @Override publicUsersgetModel(){ //TODOAuto-generatedmethodstub returnuser; } } 4.1.3.管理员实体数据库访问 UersDaoImpl.java packagecn.gym.serviceimpl; importorg.hibernate.Query; importorg.hibernate.Session; importorg.hibernate.Transaction; importcn.gym.dao.MyHibernateSessionFactory; importcn.gym.entity.Users; importcn.gym.service.UserDao; publicclassUserDaoImplimplementsUserDao{ MyHibernateSessionFactorymsf=newMyHibernateSessionFactory(); @Override publicbooleanusersLogin(Usersuser){ user.setUids (1); Transactiontx=null; Stringhql=""; try{ Sessionsession=msf.getSession(); tx=session.beginTransaction(); hql="fromUserswhereusername=? andpassword=? "; Queryq=session.createQuery(hql).setParameter(0,user.getUsername()) .setParameter(1,user.getPassword()); Usersusers=(Users)q.uniqueResult(); mit(); if(users==null){ returnfalse; }else{ returntrue; } }catch(Exceptionex){ ex.printStackTrace(); returnfalse; } } } 4.1.4.管理员实体类登陆实现 图8、登陆 4.2.学生实体实现 4.2.1.学生实体类 Students.java packagecn.gym.entity; importjava.util.Date; publicclassStudents{ privateStringsid; privateStringsname; privateStringgender; privateDatebirthday; privateStringaddress; publicStudents(){} publicStudents(Stringsid,Stringsname,Stringgender,Date
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaEE中Struts2 Hibernate简单的信息管理系统实现 JavaEE Struts2 Hibernate 简单 信息管理 系统 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)