对于利用JavaBean+Servlet+jsp实现增删改查功能题目的实现

首先,为了更好地规范代码,可以分别将不同用处的Java文件放置到不同的文件夹里面

对于实体类,可以放在名为Bean的package里面

对于中间用来实现Java与jsp页面交互的类,可以放在名为Servlet的package里面

对于放置增删改查操作的方法的类,可以放在名为Dao的package里面

对于如果你不想要每次每一个操作方法就要连接一次数据库的话,可以将连接数据库的方法放在DBUtil.java类里面,放在名为DBUtils的package里面

具体的实现方法如下:

//mainBean.java
public class mainBean{
private String name;
private String id;
private String teacher;
private String whe;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setId(String id){
this.id=id;
}
public String getId(){
return id;
}
public void setTeacher(String teacher){
this.teacher=teacher;
}
public String getTeacher(){
return teacher;
}
public void setWhe(String whe){
this.whe=whe;
}
public String getWhe(){
return whe;
}
public mainBean(){}
public mainBean(String name,String id,String teacher,String whe){
this.name=name;
this.id=id;
this.teacher=teacher;
this.whe=whe;
}

封装数据库的连接操作时,可以选择使用JDBC连接,也可以使用db.properties进行连接,在这里示范的是后者

//db.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:/mysql://localhost:3306/数据库名称
username=用户名
pass=密码

需要注意到的是,有时db文件里面的url需要加上时区等内容,否则就会报错!

//DBUtil.java
package DBUtils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class DBUtil {
    private static String driver;
    private static String url;
    private static String username;
    private static String pass;

    static{
        InputStream is=DBUtil.class.getClassLoader().getResourceAsStream("db.properties");

        Properties p=new Properties();
        try{
            p.load(is);
            driver=p.getProperty("driver");
            url=p.getProperty("url");
            username=p.getProperty("username");
            pass=p.getProperty("pass");

            Class.forName(driver);
            System.out.println("驱动注册成功!");

        } catch (IOException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public static Connection getConn() throws SQLException {
        Connection conn=null;
        conn= DriverManager.getConnection(url,username,pass);
        System.out.println("数据库连接成功!");
        return conn;
    }

    public static void close(PreparedStatement ps,Connection conn) throws SQLException {
        if(ps!=null){
            ps.close();
        }
        if(conn!=null){
            conn.close();
        }
    }

    public static void close(Statement stmt,Connection conn) throws SQLException {
        if(stmt!=null){
            stmt.close();
        }
        if(conn!=null){
            conn.close();
        }
    }

    public static void close(PreparedStatement ps,Connection conn,ResultSet rs) throws SQLException {
        if(rs!=null){
            rs.close();
        }
        if(ps!=null){
            ps.close();
        }
        if(conn!=null){
            conn.close();
        }
    }
}
//interDao.java
package Dao;

import Bean.mainBean;

import java.sql.SQLException;
import java.util.List;

public interface interDao {
    boolean addMain(mainBean bean) throws SQLException;

    List<mainBean> searchMain(String name) throws SQLException;

    boolean updateMain(mainBean main) throws SQLException;

    boolean deleteMain(String name) throws SQLException;
}

//getDao.java
package Dao;

import Bean.mainBean;
import DBUtils.DBUtil;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class getDao implements interDao{

    private static final String sql_insert="insert into we values(?,?,?,?)";
    private static final String sql_delete="delete from we where name=?";
    private static final String sql_update="update we set id=?,teacher=?,whe=? where name=?";
    private static final String sql_search="select * from we where name=?";

    @Override
    public boolean addMain(mainBean main) throws SQLException {

        Connection conn= null;
        PreparedStatement ps=null;
        try {
            conn = DBUtil.getConn();
            ps=conn.prepareStatement(sql_insert);
            ps.setString(1,main.getName());
            ps.setString(2,main.getId());
            ps.setString(3,main.getTeacher());
            ps.setString(4,main.getWhe());

            int x=ps.executeUpdate();

            return x>0?true:false;

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            DBUtil.close(ps,conn);
        }

    }

    @Override
    public List<mainBean> searchMain(String name) throws SQLException {
        List<mainBean> list=new ArrayList<mainBean>();
        Connection conn=DBUtil.getConn();
        PreparedStatement ps=null;
        ResultSet rs=null;
        try{
            ps=conn.prepareStatement(sql_search);
            ps.setString(1,name);
            rs=ps.executeQuery();
            while(rs.next()){
                mainBean main=new mainBean();
                main.setName(rs.getString("name"));
                main.setId(rs.getString(1));
                main.setTeacher(rs.getString(2));
                main.setWhe(rs.getString(3));

                list.add(main);
            }

        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            DBUtil.close(ps,conn,rs);
        }
        return null;
    }

    @Override
    public boolean updateMain(mainBean main) throws SQLException {
        Connection conn=DBUtil.getConn();
        PreparedStatement ps=null;
        try{
            ps=conn.prepareStatement(sql_update);
            ps.setString(1,main.getId());
            ps.setString(2,main.getTeacher());
            ps.setString(3,main.getWhe());
            ps.setString(4,main.getName());

            int x=ps.executeUpdate();
            return x>0?true:false;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            DBUtil.close(ps,conn,null);
        }
    }

    @Override
    public boolean deleteMain(String name) throws SQLException {
        Connection conn=DBUtil.getConn();
        PreparedStatement ps=null;
        try{
            ps=conn.prepareStatement(sql_delete);
            ps.setString(1,name);

            int x=ps.executeUpdate();
            return x>0?true:false;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            DBUtil.close(ps,conn);
        }
    }
}

//mainServlet.java
package Servlet;

import Bean.mainBean;
import Dao.getDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/mainServlet")
public class mainServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;//使得兼容性更强一些

    getDao gg=new getDao();

    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         req.setCharacterEncoding("utf-8");

             String method=req.getParameter("method");

             try {
                 if ("searchMain".equals(method)) {
                     searchMain(req, resp);
                 } else if ("addMain".equals(method)) {
                     addMain(req, resp);
                 } else if ("updateMain".equals(method)) {
                     updateMain(req, resp);
                 } else if ("deleteMain".equals(method)) {
                     deleteMain(req, resp);
                 }
             } catch (SQLException e) {
                 e.printStackTrace();
             }
    }

    public mainServlet(){ super(); }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doPost(req, resp);
        doGet(req, resp);

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().append("Served at:").append(req.getContextPath());
    }

    private void searchMain(HttpServletRequest req, HttpServletResponse resp) throws IOException, SQLException, ServletException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String name=req.getParameter("name");

        Connection conn= DBUtil.getConn();
        PreparedStatement psmt=null;
        ResultSet rs=null;

        psmt=conn.prepareStatement("select * from we where name=?");
        psmt.setString(1,name);
        rs=psmt.executeQuery();
        while(rs.next()){
            req.setAttribute("name",rs.getString("name"));
            req.setAttribute("id",rs.getString("id"));
            req.setAttribute("teacher",rs.getString("teacher"));
            req.setAttribute("whe",rs.getString("whe"));
            req.getRequestDispatcher("check2.jsp").forward(req,resp);
        }

        DBUtil.close(psmt,conn,rs);

    }

    private void addMain(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException, SQLException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String name=req.getParameter("name");
        String id=req.getParameter("id");
        String teacher=req.getParameter("teacher");
        String whe=req.getParameter("whe");

        mainBean main=new mainBean();
        main.setName(name);
        main.setId(id);
        main.setTeacher(teacher);
        main.setWhe(whe);

        if(gg.addMain(main)){
            req.setAttribute("main",main);
            req.setAttribute("name","添加成功!");
            req.getRequestDispatcher("search.jsp").forward(req,resp);
        }else{
            req.setAttribute("name","添加失败!");
            req.getRequestDispatcher("index.jsp").forward(req,resp);
        }
    }

    protected void updateMain(HttpServletRequest req, HttpServletResponse resp) throws IOException, SQLException, ServletException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String name=req.getParameter("name");
        String id=req.getParameter("id");
        String teacher=req.getParameter("teacher");
        String whe=req.getParameter("whe");

        mainBean main=new mainBean();
        main.setName(name);
        main.setId(id);
        main.setTeacher(teacher);
        main.setWhe(whe);

        if(gg.updateMain(main)){
            req.setAttribute("name","修改成功!");
            req.getRequestDispatcher("search.jsp").forward(req,resp);
        }else{
            req.setAttribute("name","修改失败!");
            req.getRequestDispatcher("update.jsp").forward(req,resp);
        }

    }

    protected void deleteMain(HttpServletRequest req, HttpServletResponse resp) throws IOException, SQLException, ServletException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String name=req.getParameter("name");

        if(gg.deleteMain(name)){
            req.setAttribute("name","删除成功!");
            req.getRequestDispatcher("search.jsp").forward(req,resp);
        }else{
            req.setAttribute("name","删除失败!");
            req.getRequestDispatcher("delete.jsp").forward(req,resp);
        }
    }
}

//Main.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>主界面</title>
</head>
<body>
<center>
    <tr>
        <button type="submit" value="添加" onclick="window.location.href='index.jsp'">添加信息</button>
    </tr>
    <p>
    <tr>
        <button type="submit" value="修改" onclick="window.location.href='update.jsp'">修改信息</button>
    </tr>
    <p>
    <tr>
        <button type="submit" value="删除" onclick="window.location.href='delete.jsp'">删除信息</button>
    </tr>
    <p>
    <tr>
        <button type="submit" value="浏览" onclick="window.location.href='search.jsp'">浏览信息</button>
    </tr>
    <p>
    <tr>
        <button type="submit" value="查询" onclick="window.location.href='check1.jsp'">查询信息</button>
    </tr>
</center>
</body>
</html>
//check1.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>查询界面</title>
</head>
<body>
<center>
    <form action="mainServlet?method=searchMain" method="post">
        <h1>查询</h1>
        <tr>
            <input type="text" name="name" id="name" placeholder="请输入你想要查询的学生姓名">
        </tr>
        <p>
            <tr>
                <button type="submit" value="查询">查询</button>
            </tr>
    </form>

</center>
</body>
</html>
//check2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>显示界面</title>
</head>
<body>
<center>
    <form>
        <tr>
            <td>学生姓名</td>
            <td>学生学号</td>
            <td>教师姓名</td>
            <td>授课地点</td>
        </tr>
        <p>
        <tr>
            <td>${name}</td>
            <td>${id}</td>
            <td>${teacher}</td>
            <td>${whe}</td>
        </tr>
    </form>
</center>
</body>
</html>
//index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>添加界面</title>
  </head>
  <body>
  <center>
    <form action="mainServlet?method=addMain" method="post">
      <table>
        <tr>
          <td>学生姓名:</td>
          <td><input type="text" name="name" id="name" placeholder="请输入学生姓名" required></td>
        </tr>
        <p>
        <tr>
          <td>学生学号:</td>
          <td><input type="text" name="id" id="id" placeholder="请输入学生学号:" required></td>
        </tr>
        <p>
        <tr>
          <td>教师姓名:</td>
          <td><input type="text" name="teacher" id="teacher" placeholder="请输入教师姓名:" required></td>
        </tr>
        <p>
        <tr>
          <td>授课地点:</td>
          <td><input type="text" name="whe" id="whe" placeholder="请输入授课地点:" required></td>
        </tr>
        <p>
      </table>
      <tr>
        <button type="submit" value="提交">提交</button>
      </tr>
    </form>
  </center>
  </body>
</html>
//search.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>浏览界面</title>
</head>
<body>
<center>
    <tr>
        <th scope="col"> 学生姓名 </th>
        <th scope="col"> 学生学号 </th>
        <th scope="col"> 教师姓名 </th>
        <th scope="col"> 授课地点 </th>
    </tr>
    <p>
    <%
        Class.forName("com.mysql.cj.jdbc.Driver");

        Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/ad?useUnicode=true&characterEncoding=utf-8","root","20214063");
        Statement ps=conn.createStatement();
        ResultSet rs=ps.executeQuery("select * from we");

        while(rs.next()){
            out.println(" <tr> <th scope=row > " + rs.getString(1) + " </th><td> "+ rs.getString(2) + " </td><td> " + rs.getString(3) + " </td><td> " + rs.getString(4) + " </td></tr><p> ");
        }
        rs.close();
        ps.close();
        conn.close();
    %>
</center>
</body>
</html>
//delete.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>删除界面</title>
</head>
<body>
<center>
  <form action="mainServlet?method=deleteMain" method="post">
      <table>
          <h1>删除</h1>
          <tr>
              <td>学校姓名:</td>
              <td><input type="text" name="name" id="name" placeholder="请输入你想要删除的学生姓名:"></td>
          </tr>
      </table>
      <p>
      <button type="submit" value="提交">删除</button>
  </form>
</center>
</body>
</html>

咳咳,update.jsp代码与index.jsp代码基本一致,只需要改一改action里面的值就可以啦!就不写出来了

本次内容仅仅提供代码进行参考,对界面是否漂亮并没有做出要求!!!

posted @ 2022-10-19 15:54  yesyes1  阅读(292)  评论(0编辑  收藏  举报