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

工程环境:MyEclipse8.5

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

开发环境:Win7x64

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

1.先创建数据库:

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

create database student --创建学生数据库
use student
create 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" class="work.test">
	<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 class="bordered">
  		<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" class="work.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 class="bordered">
  		<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" class="work.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" class="work.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" class="work.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 class="bordered">
			<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" class="work.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

时间: 2024-08-29 18:12:06

使用struts2+hibernate的增、删、改、查构架简单的学生管理系统的相关文章

数据库基础学习4--表格的 增 删 改 查(简单查询与高级查询)

一.增 C:create 增加,创建,向数据库里面添加数据. insert into Fruit values('K009','苹果',3.0,'高青',90,'') insert into Fruit(Ids,Name,Price,Source,Numbers) values('K010','苹果',3.0,'高青',90) 二.改 U:update修改,从数据库表里面修改数据. update Fruit set Source='烟台' where Ids='K001' 三.删 D:delet

Python---MySQL数据库之四大操作(增 删 改 查)

一.对数据库,表,记录---四大操作(增 删 改 查) 1.操作数据库 (1)对数据库(文件夹):进行增加操作 Create  database  库名; 例:  Create  database  db7 ; 查询库: show  databases; 结果: +-----------------------------+ | Database                   | +----------------------------+ | information_schema | |

ADO.NET 增 删 改 查

ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访问技术的基础 连接数据库基本格式:需要两个类1.数据库连接类 SqlConnection2.数据库操作类 SqlCommand 1.连接数据库写连接字符串,立马就要想到有4点要写完,1.连接哪台服务器,2.连接哪个数据库,3.连接用户名,4.密码string sql = "server=.(服务器i

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

SQL 增/删/改/查 (总结)

1.增 INSERT  INTO  表名  VALUES (" "," ") ; INSERT INTO 表名(字段)  VALUES(" "); 2. 删 DELETE   FROM 表名  WHERE  ... 3.改 UPDATE  表名 SET   ... WHERE  ... 4.查 SELECT × FROM  表名 ORDER BY ...

1-24.list的增,删,改,查

增: 1.append(通过元素增加,默认加在最后print(a.append('hgf'))) 2.extend( 迭代的去增,就是把字符串的字符逐个去给这个列表加上去) 3.insert((按照索引去增加,前为索引,后为增加的字) 删: 1,pop(通过位置索引去删除) 2.del (通过索引,切片删除) 3.clear(清空列表) 4.remove(通过元素去删除) #返回值是什么意思? 改: a[]='i' print() 查: for i in a: print(a) 其他列表 1.s

php基础:数据库的含义和基本操作 增 删 改 查

//数据库是帮我们管理数据的一个软件,我们将数据给他,放进数据库里.他能很稳妥的帮我们管理起来,且效率很高.//php的大部分工作就是  php->连接数据库->写入数据->查出数据->格式化数据->显示出来,//数据库管理数据是以表的形式组成的,多行多列,表头声明好了,一个表创建好了,剩下的就是往里面添加数据 多张表放在一个文件夹里面就形成了库  mysql服务器帮我们管理多个库C:\wamp\bin\mysql\mysql5.6.12\data   数据库中的数据放在这个

Android 增,删,改,查 通讯录中的联系人

一.权限 操作通讯录必须在AndroidManifest.xml中先添加2个权限, <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission> <uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>

js数组的管理[增,删,改,查]

今天在设计表单的时候遇到对数组的一些处理的问题,比如说怎么创建一个数组,然后牵扯到数组的增删改查的方法.请看API FF: Firefox, N: Netscape, IE: Internet Explorer 方法 描述 FF N IE concat() 连接两个或更多的数组,并返回结果. 1 4 4 join() 把数组的所有元素放入一个字符串.元素通过指定的分隔符进行分隔. 1 3 4 pop() 删除并返回数组的最后一个元素 1 4 5.5 push() 向数组的末尾添加一个或更多元素,