JavaWeb應(yīng)用實例:用servlet實現(xiàn)oracle 基本增刪改查
很久沒有寫博客了,可能是太懶散,不愿意把時間花在這上面,可是我心里還是知道寫博客的重要性的 ,所以從今天開始 ,我將與大家分享一下我學(xué)Java WEB寫的一些小實例 ,我個人是不太喜歡書本上的晦澀的概念的,所以我花了更多的時間在一些應(yīng)用實例上,我覺得這樣的學(xué)習(xí)方式很適合我,由簡到繁,由淺入深
廢話不多話,開始我們的第一個實例:
servlet實現(xiàn)Oracle 基本增刪改查
開發(fā)環(huán)境:JDK7 +Myeclipse10+tomcat7.0+oracle 11g
首先附上數(shù)據(jù)庫創(chuàng)建腳本:
create table student( id VARCHAR2(50) PRIMARY KEY NOT NULL, name varchar2(50) NOT NULL, calssGrent varchar2(50) NOT NULL , result varchar(12) NOT NULL ); insert into student(id,name,calssGrent,result) values(perseq.nextval,'張三','33','98')
下圖為代碼結(jié)構(gòu)圖和功能演示界面做的比較糟糕 只為實現(xiàn)功能:
MMC_01.Java
頁面 //主界面提供添加,修改刪除的方法
package org.lsy.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import oracle.jdbc.oracore.TDSPatch; public class MMC_01 extends HttpServlet { // 驅(qū)動程序就是之前在classpath中配置的jdbc的驅(qū)動程序的jar包中 // 連接地址是由各個數(shù)據(jù)庫生產(chǎn)商單獨(dú)提供的,所以需要單獨(dú)記住 public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:LIUSY"; // 連接數(shù)據(jù)庫的用戶名 public static final String DBUSER = "scott"; // 連接數(shù)據(jù)庫的密碼 public static final String DBPASS = "tiger"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設(shè)置請求和響應(yīng)的編碼 ,不然頁面上容易出現(xiàn)亂碼 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;UTF-8"); //輸出流 PrintWriter out = response.getWriter(); //數(shù)據(jù)庫連接代碼 try { Connection conn = null; // 表示數(shù)據(jù)庫的連接的對象 Statement stmt = null; // 表示數(shù)據(jù)庫的更新操作 String sql="insert into student(id,name,calssGrent,result) values('67','劉12宇','33','98')"; System.out.println(sql) ; // 1、使用Class類加載驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2、連接數(shù)據(jù)庫 conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 3、Statement接口需要通過Connection接口進(jìn)行實例化操作 stmt = conn.createStatement(); //用 rs獲取查詢結(jié)果 ,這里的SQL語句最好不要用* 我的字段比較少所以就偷一下懶,-,- ResultSet rs=stmt.executeQuery("select *from student"); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); //輸出表頭部分 out.print("<table align='center' border='1'><tr><td>姓名" + "</td><td>班級</td><td>成績</td><td>修改</td><td>刪除</td></tr>"); while(rs.next()) { //獲取數(shù)據(jù)庫中的ID String id=rs.getString("id"); //輸出一列元素 out.print("<tr><td>"+rs.getString("name") +"</td><td>"+rs.getString("calssGrent")+"" + "</td><td>"+rs.getString("result")+"</td>" + "<td><a href='UpdatePage?id="+id+"'>修改</a></td>" + "<td><a href='delete?id="+id+"'> 刪除 </a></td></tr>"); } out.println("<td><a href=AddPage>添加數(shù)據(jù)</a></td>"); out.println(" </BODY>"); out.println("</HTML>"); conn.close(); } catch (Exception e) { e.printStackTrace(); } out.flush(); out.close(); } }
UpdatePage.java //獲取要修改的數(shù)據(jù) ,并把修改過的數(shù)據(jù)提交給Update
package org.lsy.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.crypto.provider.RSACipher; public class UpdatePage extends HttpServlet { // 連接地址是由各個數(shù)據(jù)庫生產(chǎn)商單獨(dú)提供的,所以需要單獨(dú)記住 public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:LIUSY"; // 連接數(shù)據(jù)庫的用戶名 public static final String DBUSER = "scott"; // 連接數(shù)據(jù)庫的密碼 public static final String DBPASS = "tiger"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id=request.getParameter("id"); //設(shè)置請求和響應(yīng)的編碼 ,不然頁面上容易出現(xiàn)亂碼 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;UTF-8"); PrintWriter out = response.getWriter(); try { Connection conn = null; // 表示數(shù)據(jù)庫的連接的對象 Statement stmt = null; // 表示數(shù)據(jù)庫的更新操作 // 1、使用Class類加載驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2、連接數(shù)據(jù)庫 conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 3、Statement接口需要通過Connection接口進(jìn)行實例化操作 stmt = conn.createStatement(); //用 rs獲取查詢結(jié)果 ,這里的SQL語句最好不要用* 我的字段比較少所以就偷一下懶,-,- ResultSet rs=stmt.executeQuery("select *from student where id='"+id+"'"); while (rs.next()) { out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); //輸入成績的表單,提交至Update out.print(" <form action='Update' method='post'> "); out.print("<table align='center'> <tr><td>姓名:<input type='text' value='"+rs.getString("name")+"'
name='name' size=20 ></td></tr>"); out.print("<tr><td>班級:<input type='text' value='"+rs.getString("calssGrent")+"' name='grent' size=20></td></tr>"); out.print("<tr><td>成績:<input type='text' value='"+rs.getString("result")+"' name='result' size=20></td></tr>"); //為了作為查詢數(shù)據(jù)庫的條件 ,這里要把ID傳過去 out.print("<input type='hidden' value='"+id+"' name='id'>"); out.print("<tr><td><input type='submit' value='修改'><input type='reset' value='重置'></td></tr></table></form>"); out.print(" </BODY>"); out.println("</HTML>"); } out.flush(); out.close(); } catch (Exception e) { e.printStackTrace();// TODO: handle exception } } }
Update.java 接收要修改的數(shù)據(jù) ,并更新數(shù)據(jù)庫
package org.lsy.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Update extends HttpServlet { // 驅(qū)動程序就是之前在classpath中配置的jdbc的驅(qū)動程序的jar包中 // 連接地址是由各個數(shù)據(jù)庫生產(chǎn)商單獨(dú)提供的,所以需要單獨(dú)記住 public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:LIUSY"; // 連接數(shù)據(jù)庫的用戶名 public static final String DBUSER = "scott"; // 連接數(shù)據(jù)庫的密碼 public static final String DBPASS = "tiger"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;UTF-8"); PrintWriter out = response.getWriter(); Connection conn = null; // 表示數(shù)據(jù)庫的連接的對象 Statement stmt = null; // 表示數(shù)據(jù)庫的更新操作 //獲取表單提交的參數(shù) String id=request.getParameter("id"); System.out.println(id); String name=request.getParameter("name"); String grent=request.getParameter("grent"); String result=request.getParameter("result"); //更新SQL String sqlString="update student set name='"+name+"' ," + "calssGrent='"+grent+"',result='"+result+"' where id='"+id+"' "; // 1、使用Class類加載驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2、連接數(shù)據(jù)庫 conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); // 3、Statement接口需要通過Connection接口進(jìn)行實例化操作 stmt = conn.createStatement(); int pd=stmt.executeUpdate(sqlString); if(pd!=0) { out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" 更新成功<br><a href=MMC_01>查看列表</a> "); out.println(" </BODY>"); out.println("</HTML>"); } out.flush(); out.close(); stmt.close(); conn.close(); } catch (Exception e) { // TODO: handle exception } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
addPage .java,添加數(shù)據(jù)頁面
package org.lsy.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddPage extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設(shè)置請求和響應(yīng)的編碼 ,不然頁面上容易出現(xiàn)亂碼 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;UTF-8"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); //輸入成績的表單,提交至add out.print(" <form action='Add' method='post'> "); out.print("<table align='center'> <tr><td>姓名:<input type='text' name='name' size=20 ></td></tr>"); out.print("<tr><td>班級:<input type='text' name='grent' size=20></td></tr>"); out.print("<tr><td>成績:<input type='text' name='result' size=20></td></tr>"); out.print("<tr><td><input type='submit' value='添加'><input type='reset' value='重置'></td></tr></table></form>"); out.println("<tr><td><a href=MMC_01>查看列表</a></td></tr>"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } }
add 接收addpage傳來的傳,更新數(shù)據(jù)庫
package org.lsy.servlet; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.org.apache.xerces.internal.impl.io.UTF8Reader; import oracle.jdbc.oracore.TDSPatch; public class Add extends HttpServlet { // 驅(qū)動程序就是之前在classpath中配置的jdbc的驅(qū)動程序的jar包中 // 連接地址是由各個數(shù)據(jù)庫生產(chǎn)商單獨(dú)提供的,所以需要單獨(dú)記住 public static final String DBURL = "jdbc:oracle:thin:@localhost:1521:LIUSY"; // 連接數(shù)據(jù)庫的用戶名 public static final String DBUSER = "scott"; // 連接數(shù)據(jù)庫的密碼 public static final String DBPASS = "tiger"; @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //設(shè)置請求和響應(yīng)的編碼 ,不然頁面上容易出現(xiàn)亂碼 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;UTF-8"); //輸出流 PrintWriter out = response.getWriter(); //數(shù)據(jù)庫連接代碼 try { Connection conn = null; // 表示數(shù)據(jù)庫的連接的對象 Statement pstmt = null; // 表示數(shù)據(jù)庫的更新操作 String nameString=request.getParameter("name"); String grentString=request.getParameter("grent"); String resultString=request.getParameter("result"); System.out.print(nameString); String sql="insert into student(id,name,calssGrent,result)
values(perseq.nextval,'"+nameString+"','"+grentString+"','"+resultString+"')"; // 1、使用Class類加載驅(qū)動程序 Class.forName("oracle.jdbc.driver.OracleDriver"); // 2、連接數(shù)據(jù)庫 conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS); pstmt=conn.createStatement(); int pd=pstmt.executeUpdate(sql); if (pd!=0) { out.println("添加成功"); out.println("<br><a href=MMC_01>查看列表</a>"); } conn.close(); } catch (Exception e) { e.printStackTrace(); } out.flush(); out.close(); } }
web.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet-name>MMC_01</servlet-name> <servlet-class>org.lsy.servlet.MMC_01</servlet-class> </servlet> <servlet> <servlet-name>delete</servlet-name> <servlet-class>org.lsy.servlet.delete</servlet-class> </servlet> <servlet> <servlet-name>Add</servlet-name> <servlet-class>org.lsy.servlet.Add</servlet-class> </servlet> <servlet> <servlet-name>AddPage</servlet-name> <servlet-class>org.lsy.servlet.AddPage</servlet-class> </servlet> <servlet> <servlet-name>UpdatePage</servlet-name> <servlet-class>org.lsy.servlet.UpdatePage</servlet-class> </servlet> <servlet> <servlet-name>Update</servlet-name> <servlet-class>org.lsy.servlet.Update</servlet-class> </servlet> <servlet-mapping> <servlet-name>MMC_01</servlet-name> <url-pattern>/MMC_01</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>delete</servlet-name> <url-pattern>/delete</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Add</servlet-name> <url-pattern>/Add</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AddPage</servlet-name> <url-pattern>/AddPage</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>UpdatePage</servlet-name> <url-pattern>/UpdatePage</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Update</servlet-name> <url-pattern>/Update</url-pattern> </servlet-mapping> </web-app>
本人并非老鳥,一直處于學(xué)習(xí)中,有什么錯誤的地方還請指證,上面的代碼有很多重復(fù)的部分,很多不合理的地方 ,比較數(shù)據(jù)庫連接直接暴露于操作servlet中 ,為了看的更直觀 ,我就沒有更改……
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點點(59)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-08-08Java開發(fā)常見錯誤之?dāng)?shù)值計算精度和舍入問題詳析
除了使用Double保存浮點數(shù)可能帶來精度問題外,更匪夷所思的是這種精度問題,下面這篇文章主要給大家介紹了關(guān)于Java開發(fā)常見錯誤之?dāng)?shù)值計算精度和舍入問題的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11