你的位置:首页 > Java教程

[Java教程]使用struts2+hibernate的增、删、改、查构架简单的学生管理系统


工程环境:MyEclipse8.5

其他配置:Hibernate框架+jtds链接数据库驱动+Sql2008数据库+MyEclipse serevr+JDK1.7

开发环境:Win7x64

这个项目用到的jtds数据库链接驱动需要导入jdts-1.2.jar包

 

1.先创建数据库:

两张表cls(班级班)、stu(学生表)

create database student --创建学生数据库use studentcreate table cls (cls_id char(10) primary key,--主键cls_name char(15)); create table stu (stu_id int primary key,--主键stu_name char(15),stu_age int,id char(10) foreign key(id) references class (id)--外键); 

 

2.student工程

2.1创建web工程项目student

2.2加载struts2

项目名右键>MyEclipse>Add struts

2.2加载hibernate3.3

项目名右键>MyEclipse>Add hibernate

2.3映射数据库

打开数据库DB Browser>new...>...>打开数据库>选择两张表>映射>OK

2.4写增删改查方法

2.41查询(主界面就是一个查询,点击班级标签显示这个班级的所有学生也是查询,详细 是根据学生ID进行查询输出学生信息,所以不一一举出)

主界面ok_n.jsp,由于主界面的数据在数据库中取出,所以要先访问fianall.action的test方法在数据库中取出数据,再在页面遍历出来

index.jsp跳转临时网页

<script language="javascript">	window.location.href="fianall.action";</script>

  到test.java中查询数据,返回到ok_n.jsp主页面中

<action name="fianall" >	<result name="0">/ok.jsp</result>	<result name="1">/ok_n.jsp</result></action>

  test.java

package work;import java.util.ArrayList;import java.util.List;import com.Stu;import com.StuDAO;public class test {	public List<Stu> i = new ArrayList<Stu>();		public String execute() 	{ 		//System.out.println("1");				StuDAO In=new StuDAO();	  i=In.findAll();  	return "1"; 	}}

  ok_n.jsp

<table > 		<tr> 				<td><a href="add_news.action">增加学生</a></td> 				<td></td> 				<td></td> 				<td></td> 				<td><a href="fianall.action">刷新</a></td>	 		</tr> 		<tr> 				<th>学生编号</th> 				<th>学生姓名</th> 				<th>学生年级</th> 				<th>学生班级</th> 				<th>操作</th> 		</tr> 		<s:iterator value="i"> 			<tr>				<td><s:property value="stuId"/></td>				<td><s:property value="stuName"/></td>				<td><s:property value="age"/></td>				<td><a href="only.action?cls_id=${cls.clsId }"><s:property value="cls.clsName"/></a></td>				<td>					<a href="del.action?stu_id=${stuId }&age=${age}&stu_name=${stuName}&cls_id=${cls.clsId }">删除</a>					<a href="up.action?stu_id=${stuId }">修改</a>					<a href="news.action?stu_id=${stuId }">详细</a>				</td>			</tr>		</s:iterator>	</table>

3个查询效果,主页、班级所有学生、学生信息

2.42增加学生

<td><a href="add_news.action">增加学生</a></td>

点击 增加学生 页面标签到add_news.action,在add_news.java中取出班级数据,在add.jsp页面遍历出班级

<action name="add_news" >	<result name="1">/add.jsp</result></action>

add_news.java

package work;import java.util.ArrayList;import java.util.List;import com.Cls;import com.ClsDAO;public class add_news {	public List<Cls> i = new ArrayList<Cls>();		public String execute() 	{ 		//System.out.println("1");				ClsDAO In=new ClsDAO();	  i=In.findAll();  	return "1"; 	}}

  add.jsp

<form action="add.action" method="post"> 	<table > 		<tr>			<th><p>增加学生<s:property value="news"/></p></th>		</tr>		<tr>			<td><p>输入学生姓名:<input type="text" name="name"></p></td>		</tr>		<tr>			<td><p>输入学生年龄:<input type="text" name="age"></p></td>		</tr>		<tr>			<td><p>选择所属班级:				<select name="cls_name">
<s:iterator value="i"> <option value="${clsId }">${clsName }</option> </s:iterator>
</select> <input type="submit" value="增加"> </p></td> </tr> <tr> <td><a href="fianall.action">返回</a></td> </tr> </table> </form>

 

 点击增加按钮提交表单到add.action,在add.java中save数据,返回到增加学生页面

<action name="add" >	<result name="1">/add.jsp</result></action>

 add.java

package work;import com.Cls;import com.Stu;import com.StuDAO;	public class add {		public String name;//姓名		public Integer age;//年龄		public String cls_name;//班级号		//public String news;			public String execute ()	  {						try{				//System.out.println(name);				//System.out.println(age);				//System.out.println(cls_name);							  Cls s=new Cls();			  s.setClsId(cls_name);			  			  Stu Stu_add = new Stu(s,name,age);			  				StuDAO add = new StuDAO();				add.save(Stu_add);//调用dao里面自带的seve方法(修改后),下面是修改后的				//System.out.println(s.getClsId());			}						catch(Exception e)			{				System.out.println(e.getMessage());			}		//news="添加成功";		return "1"; 	  }}

  hibernate DAO里面的save增加了事务

	public void save(Stu transientInstance) {		log.debug("saving PersonInf instance");		try {						Session s=getSession();//事务			Transaction t=s.beginTransaction();						getSession().save(transientInstance);						t.commit();						log.debug("save successful");		} catch (RuntimeException re) {			log.error("save failed", re);			throw re;		}	}

2.43删除学生

<a href="del.action?stu_id=${stuId }&age=${age}&stu_name=${stuName}&cls_id=${cls.clsId }">删除</a>

  点击 删除 标签到del.action,在del.java中删除数据

<action name="del" >	<result name="1">/index.jsp</result>
</action>

  del.java

package work;import java.util.ArrayList;import java.util.List;import com.Stu;import com.StuDAO;public class del {		public String stu_id;//得到学生编号	public List<Stu> i = new ArrayList<Stu>();		public String execute() 	{ 	  StuDAO In=new StuDAO();	  i=In.findstuid(stu_id);//用学生编号查询出学生信息LIST	  In.delete(i.get(0));//用GET(0)到学生,用DAO里面的Ddelete方法del学生,DAO 里面的 delete方法也要添加事务方可正常执行  	return "1"; 	}}

  hibernate DAO里面的delete增加了事务

public void delete(Stu persistentInstance) {		log.debug("deleting Stu instance");		try {			//----------------事务			Session s=getSession();			Transaction t=s.beginTransaction();						getSession().delete(persistentInstance);						t.commit();			log.debug("delete successful");		} catch (RuntimeException re) {			log.error("delete failed", re);			throw re;		}	}

  2.44修改学生

<a href="up.action?stu_id=${stuId }">修改</a>

点击 修改 标签到up.action,在up.java中查到数据,并在up.jap中遍历出来

<action name="up" >	<result name="1">/up.jsp</result>
</action>

  up.jsp

<s:iterator value="i">	 	<form action="updat.action?stuId=${stuId }&cls_id=${cls.clsId}" method="post">	<table >			<tr><th><P>修改</th></tr>	 		<s:iterator value="i">				<tr><td><P>学生编号:<s:property value="stuId"/></P></td></tr>				<tr><td><P>学生名称:<input type="text" name="stu_name" value="${stuName }"></P></td></tr>				<tr><td><P>学生年龄:<input type="text" name="age" value="${age }"></P></td></tr>				<tr><td><P>学生班级:<s:property value="cls.clsName"/></P></td></tr>			</s:iterator>			<tr><td><input type="submit" value="更新"></td></tr>			<tr><td><a href="fianall.action">返回</a></td></tr>				</table>		</form></s:iterator>

  修改好数据,点击更新按钮提交到updat.action,到updat.java中修改,成功后返回主界面

<action name="updat" >	<result name="1">/index.jsp</result></action>

  updat.java

package work;import java.util.List;import com.Cls;import com.ClsDAO;import com.Stu;import com.StuDAO;public class updat {		public Integer stuId;	public String cls_id;	public String stu_name;	public Integer age;		public String execute() throws Exception	{	  	  Stu students=new Stu();	  StuDAO studentsDAO=new StuDAO();	  students.setStuId(stuId);	  students.setAge(age);	  students.setStuName(stu_name);
Cls classes=new Cls(); classes.setClsId(cls_id); ClsDAO classesDAO=new ClsDAO(); List list= classesDAO.findByExample(classes); for(Object object:list) { classes=(Cls)object; } students.setCls(classes); studentsDAO.merge(students);//更新需要添加事务 return "1"; }}

  hibernate DAO里面的merge增加了事务

	public Stu merge(Stu detachedInstance) {		log.debug("merging Students instance");		try {			//事务			Session session=getSession();			Transaction transaction=session.beginTransaction(); 			Stu result = (Stu) getSession().merge(detachedInstance);			transaction.commit();			log.debug("merge successful");			return result;		} catch (RuntimeException re) {			log.error("merge failed", re);			throw re;		}	}

  最终结构

awei

2015年6月11日11:38:15