xsi="http:
//www.w3.org/2001/XMLSchema-instance"xmlns="xsi:
schemaLocation="id="WebApp_ID"version="3.0">
myWork
index.jsp
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
2.struts.xml的配置
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http:
//struts.apache.org/dtds/struts-2.3.dtd">
/users/Users_login_success.jsp
/users/Users_login.jsp
/users/Users_login.jsp
/students/Students_query_success.jsp
/students/Students_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.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"">
root
guo941102
com.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.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