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中,獲得頁面傳遞過來的部門編號,然后根據部門編號刪除該編號對應的數據,刪除成功則在頁面中提示刪除成功。


免責聲明!

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



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