html调用servlet(JDBC在Servlet中的使用)(2)
5.修改數據
5.1編寫查詢條件頁面
修改單條數據的時候,首先是查詢出單個數據的詳細信息,然后根據實際需要部分修改或者全部修改。修改之后,數據會提交到數據庫,數據庫中保存更新以后的數據。
查詢出單條數據的查詢條件頁面代碼如下:
QueryToUpdate.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>QueryToUpdate.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body><form name="f1" id="f1" action="/jdbc_servlet/servlet/QueryToUpdateServlet" method="post"><table border="0"><tr><td>請輸入要修改的部門編號:</td><tr></tr><td><input type="text" name="id" ></td></tr><tr><td colspan="2" align="left"><input type="submit" value="提交"></td></tr></table></form></body> </html>5.2 編寫顯示部門詳細信息的Servlet
輸入要修改的部門編號以后,進入根據部門編號查詢部門信息的Servlet,把部門詳細信息顯示到頁面中,一些不可以修改的字段可以設置成只讀,這樣就不會把這些數據修改了,該Servlet的代碼如下:
QueryToUpdateServlet.java
package com.cn.update;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.SQLException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class QueryToUpdateServlet extends HttpServlet {/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here }/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");PrintWriter out = response.getWriter();String id = request.getParameter("id");Connection con = null;PreparedStatement pstmt = null;ResultSet rs = null;try {Class.forName("com.mysql.jdbc.Driver");System.out.println("創建驅動成功!");con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank", "root", "1234");System.out.println("數據庫連接成功!");String sql = "SELECT * FROM dept WHERE id=?";pstmt = con.prepareStatement(sql);pstmt.setString(1, id);rs = pstmt.executeQuery();} catch (ClassNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}//顯示單個部門的信息out.println("<html>"+ "<head><title>顯示單個部門信息</title></head>"+ "<body>");out.println("<h1>顯示單個部門信息</h1><br><br>");out.print("<form action='/jdbc_servlet/servlet/UpdateDeptServlet' method='post'>");try {while(rs.next()){out.println("部門編號:");out.print("<br>");//在文本框中顯示部門編號,設置成只讀out.println("<input type='text' name='id' readonly='true' value=");out.println(rs.getString(1).toString());out.print(">");out.print("<br>");out.println("部門名稱:");out.print("<br>");//在文本框中顯示部門名稱out.println("<input type='text' name='d_name' value=");out.println(rs.getString(2).toString());out.print(">");out.print("<br>");out.println("部門地址:");out.print("<br>");//在文本框中顯示部門地址out.println("<input type='text' name='address' value=");out.println(rs.getString(3).toString());out.print(">");out.print("<br>");out.println("部門人數:");out.print("<br>");//在文本框中顯示部門人數out.println("<input type='text' name='empnumber' value=");out.println(rs.getString(4).toString());out.print(">");out.print("<br>");//提交按鈕out.print("<input type='submit' value='Submit'>");out.print("</form>");}} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");PrintWriter out = response.getWriter();this.doGet(request, response);out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here }}5.3編寫處理修改操作的Servlet
在UpdateDeptServlet中,修改數據以后,顯示出數據庫表中的全部信息。UpdateDeptServlet的代碼如下:
UpdateDeptServlet.java
package com.cn.update;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.SQLException; 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 UpdateDeptServlet extends HttpServlet {/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();this.doPost(request, response);out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");PrintWriter out = response.getWriter();Connection con = null;PreparedStatement ps = null;ResultSet rs = null;Statement sta = null;String id = request.getParameter("id");String address = request.getParameter("address");int empnumber = Integer.parseInt(request.getParameter("empnumber"));String d_name = request.getParameter("d_name");try {Class.forName("com.mysql.jdbc.Driver");System.out.println("創建驅動成功!");con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank", "root", "1234");System.out.println("數據庫連接成功!");String sql = "UPDATE dept SET id=?,address=?,empnumber=?,d_name=? WHERE id=?";ps = con.prepareStatement(sql);//下面設置修改的數據值ps.setString(1, id);ps.setString(2, address);ps.setInt(3, empnumber);ps.setString(4, d_name);ps.setString(5, id);ps.executeUpdate();System.out.println("修改成功!");/** 添加成功后,顯示全部信息*/sta = con.createStatement();rs = sta.executeQuery("SELECT * FROM dept");//在頁面中顯示表中的所有信息 out.println("<html>"+"<head><title>部門表信息</title></head>"+"<body>");out.println("<h1>部門表信息:</h1><br><br>");//循環遍歷輸出查詢結果while(rs.next()){out.print("部門編號:");out.print(rs.getString(1)+"\t");out.print("部門名稱:");out.print(rs.getString(2)+"\t");out.print("部門地址:");out.print(rs.getString(3)+"\t");out.print("部門人數:");out.print(rs.getString(4)+"\t");out.println("<br>");}out.print("</body></html>");out.close();} catch (ClassNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();} out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here }}6. 刪除數據
刪除數據時,要指定刪除的條件,否則會把表中的所有數據刪除。刪除以后,被刪除的數據在表中就不存在了。下面的例子是根據部門編號刪除數據的例子。首先在頁面中輸入要刪除的部門編號,輸入要刪除的部門編號的頁面代碼入下:
delete.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>delete.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=gb2312"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body><form name="f1" id="f1" action="/jdbc_servlet/servlet/DeleteByIdServlet" method="post"><table border="0"><tr><td>請輸入要刪除的部門編號:</td><tr></tr><td><input type="text" name="id" ></td></tr><tr><td colspan="2" align="left"><input type="submit" value="刪除"></td></tr></table></form></body> </html>當輸入刪除條件后,單擊【刪除】按鈕,會進入form表單指定的DeleteByIdServlet中,這是一個servlet,用來處理刪除操作。DeleteByIdServlet中的代碼如下:
DeleteByIdServlet.java
package com.cn.delete;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.SQLException;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;public class DeleteByIdServlet extends HttpServlet {/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();this.doPost(request, response);out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.* * @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gb2312");request.setCharacterEncoding("gb2312");PrintWriter out = response.getWriter();String id = request.getParameter("id");Connection con = null; // ResultSet rs = null;PreparedStatement ps = null;try {Class.forName("com.mysql.jdbc.Driver");System.out.println("創建驅動成功!");con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bank", "root", "1234");System.out.println("數據庫連接成功!");String sql = "DELETE FROM dept WHERE id=?";ps = con.prepareStatement(sql);ps.setString(1, id);ps.executeUpdate();System.out.println("刪除成功!");//顯示結果信息out.println("<html><head><title>"+"刪除部門表數據</title></head>"+"<body>");out.println("<h1>刪除部門表數據成功!</h1>");out.print("</body></html>");} catch (ClassNotFoundException e) {// TODO Auto-generated catch block e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here }}在DeleteByIdServlet中,獲得頁面傳遞過來的部門編號,然后根據部門編號刪除該編號對應的數據,刪除成功則在頁面中提示刪除成功。
總結
以上是生活随笔為你收集整理的html调用servlet(JDBC在Servlet中的使用)(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 女人做梦梦到前夫是怎么回事
- 下一篇: ECharts整合HT#160;for#