JSP利用Hibernate實現對資料庫的CRUD ——開發環境Myeclipse與SQL Server 2008

来源:http://www.cnblogs.com/langgj/archive/2016/04/17/5402048.html
-Advertisement-
Play Games

一、首先先建立一個Web Project 二、然後在程式根目錄建立文件夾“DataBase”和“Doc”,分別存放資料庫文件和保存SQL語句,建完如下所示: 三、建立資料庫“dbHibernate”,保存到文件夾“DataBase”下 四、書寫SQL語句,創建“student”表 -- 資料庫名稱 ...


一、首先先建立一個Web Project

二、然後在程式根目錄建立文件夾“DataBase”和“Doc”,分別存放資料庫文件和保存SQL語句,建完如下所示:

 

三、建立資料庫“dbHibernate”,保存到文件夾“DataBase”下

四、書寫SQL語句,創建“student”表

-- 資料庫名稱  dbHibernate

-- 版本        SQLServer2008

 

--學生表

create table student(

   ID varchar(10) primary key,

   Name varchar(20) not null,

)

 

--插入數據

insert into student values('101','張三');

insert into student values('102','李四');

insert into student values('103','王五');

五、打開“DB Browser”後,右擊選擇“New...”,Driver template選擇“Microsoft SQL Server”,Driver name為“Hibernate”,Connection URL為“jdbc:sqlserver://localhost:1433; DatabaseName=dbHibernate”,然後就是資料庫的User name以及Password;還要添加“sqljdbc4.jar”驅動包,點擊“Test Driver”,可以看到測試成功

 

六、然後點擊“Next”,選擇“Display the selected schemas”,點擊“Add”添加資料庫“dbHibernate”,最後“Finish”。

 

七、右擊項目“Hibernate”->Myeclipse->Add Hibernate Capabilities...,然後預設點擊“Next

 

八、選擇“Browse”,添加自己建立的包名,然後“Next”後,選擇“DB Driver”下的“Hibernate”,下麵的內容將自動調出。然後“Next”,選擇“Java package”

九、建完後,在包“com.langguojie.Hibernate”下添加了“HibernateSessionFactory.java”以及“hibernate.cfg.xml”兩個文件

 

十、在“DB Browser”下,選擇“Hibernate”->“Open connection”->Connected to Hibernate->dbo->TABLE->student,右擊選擇“Hibernate Reverse Engineering

 

十一、選擇 Java package:“com.langguojie.Hibernate.orm”,然後選擇如下圖所示內容,點擊“Finish”即可。

 

十二、在包“com.langguojie.Hibernate.orm”下添加了“Student.java”和“Student.hbm.xml”兩個文件

 

十三、在index.jsp中添加如下代碼:

 

<%@page import="com.langguojie.Hibernate.orm.Student"%>
<%@page import="org.hibernate.Query"%>
<%@page import="com.langguojie.Hibernate.HibernateSessionFactory"%>
<%@page import="org.hibernate.Session"%>
<center>
          學生管理<br>
          <br>
          <a href="StudentAdd.html">添加</a><br>
          <br>
          <table border="1" cellspacing="0" cellpadding="4">
          <%
		      Session ss = HibernateSessionFactory.getSession();  //建立Session對象ss		
		      ss.beginTransaction();                              //打開Transaction
	
		      Query query=ss.createQuery("from Student");	      //調用函數Query查詢
				
	          List<Student>studentList = new ArrayList<Student>();  //將查詢的結果放到List表中
              studentList = query.list();  
	       	  for(int i = 0 ;i < studentList.size();i++){
		   %>

		  <tr>
			<td><%=studentList.get(i).getId()%></td>      <!--  輸出ID -->
			<td><%=studentList.get(i).getName()%></td>    <!--  輸出姓名 -->
			<td><a href='StudentEdit.jsp?ID=<%=studentList.get(i).getId()%>'>修改</a>
			</td>
			<td><a href='servlet/StudentDelete.do?ID=<%=studentList.get(i).getId()%>'>刪除</a>
			</td>
		 </tr> 

		 <%
	    	}
	     	ss.close();		  //關閉Transaction
  	     %>
  	     </table>
</center>

 

十四、建立添加頁面“StudentAdd.html,代碼如下:

 

 <form id="form1" name="form1" method="post"action="servlet/StudentAdd.do">
      <center>添加<br><br>
      學號:<input type="text" id="ID" name="ID"><br><br>
      姓名:<input type="text" id="Name" name="Name" ><br><br>
      <input type="submit" value="確定"></center>
</form>

 

十五、建立servletStudentAdd.java,使用函數“doPost()”代碼如下:

 

request.setCharacterEncoding("UTF-8");
String strID = "";
String strName = "";
		
strID = request.getParameter("ID");         //獲取ID
strName = request.getParameter("Name");     //獲取Name
		
Session ss = HibernateSessionFactory.getSession();
ss.beginTransaction(); Student s = new Student(); s.setId(strID); s.setName(strName); ss.save(s); //保存數據 ss.getTransaction().commit(); //提交數據 ss.close(); response.sendRedirect("../index.jsp");

 

十六、建立編輯頁面“StudentEdit.jsp”,代碼如下:

<%@page import="com.langguojie.Hibernate.orm.Student"%>
<%@page import="com.langguojie.Hibernate.HibernateSessionFactory"%>
<%@page import="org.hibernate.Session"%>
<%
       request.setCharacterEncoding("UTF-8");
       String strID="";
       
       strID = request.getParameter("ID");
       
       Session ss = HibernateSessionFactory.getSession();
       ss.beginTransaction();
       Student student = (Student)ss.get(Student.class, strID);
             
       ss.getTransaction().commit();
       ss.close();
     %>
  <center>

     <%if(student != null){ %>
	
  	 <br><br>編輯學生信息<br>
     <form name="f1" id="f1" action="servlet/StudentEdit.do" method="post">
      <table border="0">
        <tr>
          <td>學號:</td>
          <td><input type="text" readonly="readonly" name="ID" id="ID" value="<%=student.getId() %>"> 學號不允許編輯</td>
        </tr>
        
        <tr>
          <td>姓名:</td>
          <td><input type="text" name="Name" id="Name" value="<%=student.getName() %>"></td>
        </tr>
         
        <tr>
          <td colspan="2" align="center"><input type="submit" value=" 確定 " ></td>
        </tr>
        
      </table>
     </form>
     <%} else { %>
     <br><br>編輯學生信息<br><br>
     學號為<%=strID %>的學生數據在資料庫中不存在!<br><br>
     <a href="index.jsp">返回</a>
     <%} %>
  </center>

十七、建立servletStudentEdit.java”,使用函數“doPost()”,代碼如下:

 

request.setCharacterEncoding("utf-8");
String strID = "";
String strName = "";
		
strID = request.getParameter("ID");
strName = request.getParameter("Name");
		
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
Student student = (Student)session.load(Student.class, strID);
student.setName(strName);
		
session.update(student);
		
session.getTransaction().commit();
session.close();
		
response.sendRedirect("../index.jsp");

 

十八、建立servleStudentDelete.java”,使用函數“doGet()”,代碼如下:

 

request.setCharacterEncoding("UTF-8");
String strID="";
    
strID = request.getParameter("ID");

Session ss = HibernateSessionFactory.getSession();
ss.beginTransaction();
        
Student student = (Student)ss.load(Student.class, strID);
ss.delete(student);
        
ss.getTransaction().commit();
ss.close();
        
response.sendRedirect("../index.jsp");

 

十九、運行結果截圖:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引入命名空間後 為什麼不用指定文件路徑? ...
  • 一、繼承 1、作用:繼承是復用程式代碼的有力手段。 2、理解繼承:當有多個類之間存在相同的屬性時,我們可以在這些類中抽取一個父類,當子類繼承父類時,子類就能使用父類所有的方法和屬性。(子類就無需定義與父類相同的屬性) 二、繼承的基本語法 1、在java語言中,用關鍵字Extends來表示一個類繼承另 ...
  • 思路: Python的實現 要點: ...
  • 一、選擇伺服器放在哪個區域 對於Google而言,不同的區域,搜索結果的就不同.一些英文關鍵詞, 你在中國用Google搜索,發現你網站的排名非產靠前,但是如果你在國外用Google, 你可能翻十頁都找不到你的網站. 我們做Google排名的排名效果不是讓我們自己看的, 而是讓我們的潛在客戶看的. ...
  • 外觀模式(Facade) 定義 外觀模式(Facade),為子系統中的一組介面提供一個一致的界面,此模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。 類圖 描述 Facade:外觀類,外觀類知道哪些子系統類負責處理請求,將用戶的請求代理給恰當的子系統對象。 Classes:子系統類,實現 ...
  • 數組概念 數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。數組既可以存儲基本數據類型,也可以存儲引用數據類型。 數組的初始化 動態初始化:初始化時只指定數組長度,由系統為數組分配初始值。格式:數據類型[] 數組名 = new 數據類型[數組長度]; 數組長度其實就是數組中元素的個數。舉 ...
  • 一、什麼是nginx 是一個C語言開發的HTTP反向代理伺服器,性能非常高 一個俄羅斯的哥們開發的,官方提供的測試性能能夠達到5W的併發,我的天吶~,實際測試差不多是2W,而淘寶的牛人可以優化到200W 運行效率非常好,占用的資源也非常低,運行穩定 二、Nginx的應用場景 有哪些 1、http服務 ...
  • ![大話設計模式 抽象工廠模式 結構圖][1] 概述 抽象工廠模式(Abstract Factory)是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個介面,使客戶端在不必指定產品的具體的情況下,創建多個產品 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...