Java實(shí)現(xiàn)JSP在Servelt中連接Oracle數(shù)據(jù)庫(kù)的方法
本文實(shí)例講述了Java實(shí)現(xiàn)JSP使用Servelt連接Oracle數(shù)據(jù)庫(kù)的方法。為了實(shí)現(xiàn)在Servlet 中連接數(shù)據(jù)庫(kù),必須編寫Servlet 的類程序。將Servlet 類程序放到WEB 服務(wù)器的servlets 或者classes 目錄下面,為調(diào)用Servlet,需要?jiǎng)?chuàng)建發(fā)送Servlet 請(qǐng)求的HTML 文檔。本例通過(guò)(Driver)Class.forName(driverName).newInstance()方法來(lái)實(shí)現(xiàn)加載驅(qū)動(dòng)程序,建立與數(shù)據(jù)庫(kù)連接。
具體程序代碼為:
1.Database 類繼承了HttpServlet 類,共有兩個(gè)方法:doGet()和displayResult(),代碼如下:
public class Database extends HttpServlet { public void doGet(); public void displayResult(ResultSet results,PrintWriter out); }
2.在doGet()方法中建立與數(shù)據(jù)庫(kù)的連接并執(zhí)行查詢:
public void doGet() { HttpServletRequest request, HttpServletResponse response } throws ServletException, IOException { PrintWriter out; String title = "Simple Servlet connecting to Oracle DB"; response.setContentType("text/html;charset=GB2312"); out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println(title); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>" + title + "</H1>"); out.println("<P>This is output from SimpleServlet."); String driverName = "oracle.jdbc.driver.OracleDriver"; Driver d; Connection con; Statement stmt; ResultSet results; try { d = (Driver)Class.forName(driverName).newInstance(); con = DiverManager.getConnection("jdbc:oracle:thin:ndb/ndb@192.168.1.6:1521:PC6"); stmt = con.createStatement(); String sqlstr = "select * from data"; results = stmt.executeQuery(sqlstr); displayResult(results,out); stmt.close(); con.close(); } catch (Exception e) { out.println("error: " + e.toString()); } out.println("</BODY></HTML>"); out.close(); }
3.DisplayResult()方法顯示查詢結(jié)果:
public void displayResult(ResultSet results,PrintWriter out) { StringBuffer buf = new StringBuffer(); String temp; try { ResultSetMetaData rsmd = results.getMetaData(); int numCols = rsmd.getColumnCount(); int i, rowcount = 0; for (i=1; i <= numCols; i++) { if (i > 1) buf.append(","); buf.append(rsmd.getColumnLabel(i)); } buf.append(""); while (results.next() && rowcount < 100) { for (i=1; i <= numCols; i++) { if (i > 1) buf.append(","); buf.append((results.getString(i))); } buf.append("<br>"); rowcount++; } out.println("<br>"); out.println(buf.toString()); results.close(); } catch (Exception e) { out.println("error: " + e.toString()); return; } }
4.因?yàn)槌绦蚴褂昧薐DBC 類、servlet 類和使用控制臺(tái)輸出,所以需要引入如下的包:
import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
5.編譯Database.java,產(chǎn)生Database.class 文件,將Database.class 放到WEB 服務(wù)器的servlets 目錄下,本例采用Java Web Server 作為WEB 服務(wù)器。配置好WEB 服務(wù)器,添加database.class,指定名稱為database。
6.編寫調(diào)用Servlet 的database.html 文件。代碼如下:
<html> <head> <title>Jsp使用Servlet連接數(shù)據(jù)庫(kù)</title> </head> <body> <center> <form action="/servlet/database" method="get"> <input name="action" type="submit" value="連接數(shù)據(jù)庫(kù)"> </form> </center> </body> </html>
相關(guān)文章
Java避免死鎖_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
在有些情況下死鎖是可以避免的。本文將展示三種用于避免死鎖的技術(shù)。對(duì)java避免死鎖的相關(guān)知識(shí)感興趣的朋友一起通過(guò)本文學(xué)習(xí)吧2017-06-06Java Optional解決空指針異??偨Y(jié)(java 8 功能)
這篇文章主要介紹了Java Optional解決空指針異??偨Y(jié)(java 8 功能),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11java算法題解Leetcode763劃分字母區(qū)間示例
這篇文章主要為大家介紹了java算法題解Leetcode763劃分字母區(qū)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01springboot結(jié)合前端實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能實(shí)例
今天處理Springboot統(tǒng)一異常攔截的時(shí)候,遇到了頁(yè)面跳轉(zhuǎn)的問(wèn)題,這篇文章主要給大家介紹了關(guān)于springboot結(jié)合前端實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Spring AOP中的JDK和CGLib動(dòng)態(tài)代理哪個(gè)效率更高?
今天小編就為大家分享一篇關(guān)于Spring AOP中的JDK和CGLib動(dòng)態(tài)代理哪個(gè)效率更高?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03centos下編譯安裝mysql報(bào)錯(cuò)解決方案
今天在centos6.2下面源碼編譯安裝mysql的時(shí),在編譯mysql的時(shí)候報(bào)了一個(gè)蛋蛋的錯(cuò)誤,本文提供詳細(xì)解決方案2012-11-11Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決
這篇文章主要介紹了Spring Junit測(cè)試找不到SpringJUnit4ClassRunner.class的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04springboot中的springSession的存儲(chǔ)和獲取實(shí)現(xiàn)
這篇文章主要介紹了springboot中的springSession的存儲(chǔ)和獲取實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09