工程环境: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

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

  1. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  2. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  3. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  4. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  5. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  6. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  7. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  8. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  9. MongoDB增 删 改 查

    增 增加单篇文档 > db.stu.insert({sn:'001', name:'lisi'}) WriteResult({ "nInserted" : 1 }) > ...

随机推荐

  1. 教你50招提升ASP.NET性能(三):使用Microsoft的PDBs调试和分析外部的程序集和库

    (3)Use Microsoft’s PDBs to debug or profile external assemblies or libraries 招数3: 使用Microsoft的PDBs调试 ...

  2. git 回退和删除操作

    今天不小心把分支的commit提交到master上了.衰 主要通过下面几个命令解决了,很简单记录一下. git reset –hard  回退到某一个版本git push origin :xxxx  ...

  3. 插头dp的几个模板

    /* ural1519 求经过全部可行点的哈密顿回路的个数 括号匹配法,转移有点复杂,可是时间空间比較小 */ #include<cstdio> #include<cstring&g ...

  4. linux netlink套接字学习资料

    理论: http://blog.csdn.net/unbutun/article/details/3394061 进一步深入: http://edsionte.com/techblog/archive ...

  5. Centos部署nagios+apache实现服务器监控

    1.Nagios介绍 nagios是 一款功能强大的网络监视工具,它可以有效的监控windows.linux.unix主机状态以及路由器交换机的网络设置,打印机工作状态等,并将状态出 现异常的服务及时 ...

  6. jquery美化滚动条插件jscrollpane应用(转)

    原文地址:http://www.jqcool.net/jquery-jscrollpane.html jScrollPane是一个设计非常灵活的跨浏览器的jQuery ,它将浏览器的默认滚动条或是元素 ...

  7. string中find函数的使用

    9.47 编写程序,首先查找string"ab2c3d7R4E6"中的每个数字字符,然后查找其中每个字母字符.编写两个版本的程序,第一个要使用find_first_of,第二个要使 ...

  8. 应聘.net开发工程师常见的面试题(五)

    1.描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:不是.可以用任意类型. 2.在C#中,string str = null 与 string str = ” ” 请尽量使用文字或图象 ...

  9. C# 之 用NPOI类库操作Excel

    1.需引用以下命名空间: using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.HPSF; using NPOI.HSSF.Ut ...

  10. Android 框架修炼-自己封装双缓存管理框架库

    一.概述 Android开发中,网络请求是很重要的一部分,而缓存网络请求来的图片或者响应结果字符串或者结果流,既可以省流量,同时也可以帮助我们 解决无网或弱网情况下加载情况,当然也可以提升程序性能效率 ...