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中,获得页面传递过来的部门编号,然后根据部门编号删除该编号对应的数据,删除成功则在页面中提示删除成功。

posted @ 2015-03-13 10:33  ~风轻云淡~  阅读(2682)  评论(0编辑  收藏  举报