使用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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM