1、JavaEE中Struts2 Hibernate简单的信息管理系统实现1.引言随着Java EE课程结束,我逐步了解的Struts2和Hibernate的大致原理及执行过程。虽然经过了老师的授课,但是对这些框架技术还是不是很熟悉,单独开发还是具有一定的难度。本次的课程论文是我结合慕课网的一段学习视频来实现了简单的信息管理系统。该学生信息管理系统涉及到学生、教师、系统管理员。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师信息进行增删改查等操作的信息管理系统。2.基础理论2.1Struts2框架的基础理论2.1.1.Struts2概述Stru
2、ts1现在已经发展成为一个高度成熟的框架,不管是稳定性还是可靠性,都得到了广泛的证明。但由于Struts1存在一些设计上的缺陷,于是催生 了Struts2框架。Struts2与Struts1相比,确实有很多革命性的改进,但它并不是一个全新的框架,而是在WebWork基础上发展起来。 从某种意义上讲,Struts2没有继承Struts1,而是继承了WebWork框架,或者说,WebWork衍生出了Struts2,而不是 Struts1衍生了Struts2。因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性和性能各方面都有很好的保证,而且吸 收了Struts1和WebWor
3、k两者的优势,因此,Struts2是一个非常完善的MVC实现框架。Struts2是轻量级MVC框架,主要解决了请求分发的问题,重心在控制层和表现层。所谓轻量级,低侵入性,与业务代码的耦合度很低。即业务代码中基本不需要import它的包。struts2实现了MVC,并提供了一些列API,采用模式化方式简化业务开发过程。MVC:M(modle)模型,它的职责是业务逻辑,包含两层:业务数据和业务处理逻辑。比如实体类,DAO,service都属于模型层。V(view)视图,它的职责是负责显示界面和用户交互(收集用户信息)。属于视图的组件是不包含业务逻辑和控制逻辑的jspC(controller)控制器
4、,它是模型层M和视图层V之间的桥梁,用于控制流程。比如:在servlet项目中的单一控制器,ActionServlet.2.1.2 Struts运行原理图1、Struts运行原理图2.1.3.Struts2体系结构我们说strutsframework是MVC模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。下图2显示了strutsframework的体系结构响应客户请求时候,各个部分工作的原理。图2、Struts2体系结构图1从视图角度(View) 主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创
5、建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个Taglib。有关它们的详细资料请参考struts用户手册2从模型角度(Model)模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作 3.从控制器角度(Controller) 在Struts framework中
6、, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。2.1.3.Struts2基本组件包整个struts大约有15包,近200个类所组成,而且数量还在不断的扩展。图片3则显现了这几个组件包之间的关系。其中action是整个struts framework的核心图3、 Struts的基
7、本组件关系图图4、Struts2核心jar包2.1.4.Struts2配置1.Web.xml的配置 myWork index.jsp struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 2.struts.xml的配置 /users/Users_login_success.jsp /users/Users_login.jsp /users/Users_login.jsp /students/Students_query_success.jsp /students/Stude
8、nts_add_success.jsp Students_query /students/Students_modify.jsp /students/Students_modify_success.jsp /teachers/Teachers_query_success.jsp /teachers/Teachers_add_success.jsp Teachers_query /teachers/Teachers_modify.jsp /teachers/Teachers_modify_success.jsp 2.2Hibernate框架的基础理论2.2.1.Hibernate概述Hibern
9、ate是一个基于元数据的轻量级的ORM框架:1、元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。2、轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。3、ORM:(Object Relation Mapping)对象关系数据库的映射。这是Hibernate框架的重点,也就是说将我们程序中的实体(bean,这里也叫POJO)和数据库中的表进行映射。java类型和sql类型映射,面向对象设计和关系型数据库设计的映射,从而我们只需要将更多的精力放到业务中,而不是sq
10、l数据库方面。4、POJO:(PlainOrdinary java Object),无格式的普通java对象,也就是上边说的实体,和数据库做映射的简单类。只是在这里提出了一个新的名词而已。2.2.2.Hibernate环境搭建1.和Struts2几个框架的大概流程一样,首先需要我们拷入必备的jar包。jar包的拷入奔着一个够用即可的原则,用什么拷贝什么,当然有些日志输出,单元测试是为了更好的观察框架而拷入的不是必备的。这里连接MySQL,所以使用了mysql的驱动jar包:图5、Hibernate核心jar包2.核心配置文件hibernate.cfg.xml root guo941102 co
11、m.mysql.jdbc.Driver jdbc:mysql:/localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 org.hibernate.dialect.MySQLDialect true true thread update 3.功能设计3.1系统功能 3.1.1.系统功能概述(1)该系统实现的管理员的系统登录;(2)系统记录学生的姓名、性别,出生日期,地址,教师的姓名、性别、出生日期、电话等信息;(3)系统可查询查询每个学生及教师的信息;(4)管理员通过系统可对学生教师信息的进行查询,修改,添加,删除;3.1
12、.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.javapackage cn.gym.entity;public class Users priva
13、te Integer uids; private String username; private String password; public Users() public Users(Integer uids, String username, String password) this.uids = uids; this.username = username; this.password = password; public Integer getUids() return uids; public void setUids(Integer uids) this.uids = uid
14、s; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; Override public String toString() return Users uids= + uids + , username=
15、 + username + , password= + password + ; 2.users.hbm.xml 4.1.2.管理员实体控制器uersAction.javapackage cn.gym.action;import org.apache.struts2.interceptor.validation.SkipValidation;import cn.gym.entity.Users;import cn.gym.service.UserDao;import cn.gym.serviceimpl.UserDaoImpl;import com.opensymphony.xwork2.Mo
16、delDriven;public class UsersAction extends SuperAction implements ModelDriven private Users user=new Users(); private UserDao udao=new UserDaoImpl(); public String login() if(udao.usersLogin(user) session.setAttribute(loginUserName, user.getUsername(); return login_success; else return login_failure
17、; public String logout() if(session.getAttribute(loginUserName)!=null) session.removeAttribute(loginUserName); return logout_success; Override public Users getModel() / TODO Auto-generated method stub return user; 4.1.3.管理员实体数据库访问UersDaoImpl.javapackage cn.gym.serviceimpl;import org.hibernate.Query;
18、import org.hibernate.Session;import org.hibernate.Transaction;import cn.gym.dao.MyHibernateSessionFactory;import cn.gym.entity.Users;import cn.gym.service.UserDao;public class UserDaoImpl implements UserDao MyHibernateSessionFactory msf=new MyHibernateSessionFactory(); Override public boolean usersL
19、ogin(Users user) user.setUids(1); Transaction tx=null; String hql=; try Session session=msf.getSession(); tx=session.beginTransaction(); hql=from Users where username=? and password=?; Query q=session.createQuery(hql).setParameter(0, user.getUsername() .setParameter(1, user.getPassword(); Users user
20、s=(Users)q.uniqueResult(); mit(); if(users=null) return false; else return true; catch(Exception ex) ex.printStackTrace(); return false; 4.1.4.管理员实体类登陆实现图8、登陆4.2学生实体实现4.2.1.学生实体类Students.javapackage cn.gym.entity;import java.util.Date;public class Students private String sid; private String sname; private String gender; private Date birthday; private String address; public Students() public Students(String sid, String sname, String gender, Date
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1