什么是MVC模式

MVC模式中M代表模型、V代表视图、C代表控制器。
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。

数据库设计

表名:student、使用的为mysql数据库

M层

package cn.jdbc.domain;public class student {//学号private String sno;//姓名private String sname;//年龄private int sage;public String getSno() {    return sno;}public void setSno(String sno) {    this.sno = sno;}public String getSname() {    return sname;}public void setSname(String sname) {    this.sname = sname;}public int getSage() {    return sage;}public void setSage(int sage) {    this.sage = sage;}}

V层

jsp页面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>学生数据</title></head><body>    <table border="1" border="1" cellpadding="0" cellspacing="0" width="100%">        <thead>            <tr>                <th>学号</th>                <th>姓名</th>                <th>年龄</th>            </tr>        </thead>        <tbody>             <c:forEach  items="${list}" var="i">            <tr >                   <td>${i.sno}</td>                   <td>${i.sname}</td>                   <td>${i.sage}</td>            </tr>            </c:forEach>         </tbody>    </table>    <form action="/sy3/display" method="post">        <label>查询的学号</label>        <input type="text" name="search_no" value="">        <input type="submit" value="查询">        <a href="http://localhost:9999/sy3/display">返回</a><br>          </form>    <h5>添加数据</h5>    <form action="/sy3/display" method="post">        <label>学号</label>        <input type="text" name="add_sno" value="">        <label>姓名</label>        <input type="text" name="add_sname" value="">        <label>年龄</label>        <input type="text" name="add_sage" value="">                        <input type="submit" value="添加">         </form>    <h5>修改数据</h5>    <form action="/sy3/display" method="post">        <label>学号</label>        <input type="text" name="cg_sno" value="">        <label>姓名</label>        <input type="text" name="cg_sname" value="">        <label>年龄</label>        <input type="text" name="cg_sage" value="">                        <input type="submit" value="修改">         </form>    <h5>删除数据</h5>    <form action="/sy3/display" method="post">        <label>删除数据学生的学号</label>        <input type="text" name="del_sno" value="">        <input type="submit" value="删除">          </form></body></html>

servlet负责jsp页面与数据库的数据交互

package cn.jdbc.servlet;import java.io.IOException;import java.util.ArrayList;import java.util.List;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 cn.jdbc.dao.StudentDao;import cn.jdbc.domain.student;import cn.jdbc.test.search_id;/** * Servlet implementation class display */@WebServlet("/display")public class display extends HttpServlet {    private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()     */    public display() {        super();        // TODO Auto-generated constructor stub    }    /**     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)     */    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        //获取数据库操作的对象        StudentDao dao = new StudentDao();        //获取数组对象        List<student> list = new ArrayList<student>();                //获取查询的学号        String search_sno = request.getParameter("search_no");                //获取添加的数据        String add_sno = request.getParameter("add_sno");        String add_sname = request.getParameter("add_sname");        String add_sage = request.getParameter("add_sage");                //获取修改的数据        String cg_sno = request.getParameter("cg_sno");        String cg_sname = request.getParameter("cg_sname");        String cg_sage = request.getParameter("cg_sage");                //获取删除的学号        String del_sno = request.getParameter("del_sno");                //查询数据        if(search_sno!=null){            student student= dao.find(search_sno);                list.add(student);            search_sno="";        }else{//显示所有的数据            list=dao.findAll();        }        //添加数据        if(add_sage!=null){            student student = new student();            student.setSno(add_sno);            student.setSname(add_sname);            student.setSage(Integer.parseInt(add_sage));            dao.insert(student);            list=dao.findAll();            add_sno="";            add_sname="";            add_sage="";        }        //修改数据        if(cg_sage!=null){            student student = new student();            student.setSno(cg_sno);            student.setSname(cg_sname);            student.setSage(Integer.parseInt(cg_sage));            dao.update(student);            list=dao.findAll();            cg_sno="";            cg_sname="";            cg_sage="";        }        //删除数据        if(del_sno!=null){            dao.delete(del_sno);            list=dao.findAll();            del_sno="";        }        //传递数组到jsp页面                request.setAttribute("list", list);        request.getRequestDispatcher("index.jsp").forward(request, response);    }    /**     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)     */    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        doGet(request, response);    }}

C层

工具类(负责连接数据库)

package cn.jdbc.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class utils {// 加载驱动,并建立数据库连接    public static Connection getConnection() throws SQLException,                ClassNotFoundException {//        加载驱动            Class.forName("com.mysql.jdbc.Driver");//            获取数据库连接            String url = "jdbc:mysql://localhost:3306/kinjaze";//            用户名            String username = "root";//            密码                String password = "********";            Connection conn = DriverManager.getConnection(url, username,                     password);            return conn;        }    // 关闭数据库连接,释放资源    public static void release(ResultSet rs, Statement stmt, Connection conn) {        if (rs != null) {            try {                rs.close();            } catch (SQLException e) {                e.printStackTrace();            }            rs = null;        }        if (stmt != null) {            try {                stmt.close();            } catch (SQLException e) {                e.printStackTrace();            }            stmt = null;        }        if (conn != null) {            try {                conn.close();            } catch (SQLException e) {                e.printStackTrace();            }            conn = null;        }            }}

实现数据库的增删改查的操作类

package cn.jdbc.dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import cn.jdbc.domain.student;import cn.jdbc.utils.utils;/* * 完成对数据库的增删改查操作 */public class StudentDao { //为学生表添加数据    public boolean insert(student student) {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        try {            // 获得数据的连接            conn = utils.getConnection();            // SQL语句            String sql="insert into student values(?,?,?)";            //得到预编译对象            stmt=conn.prepareStatement(sql);            stmt.setString(1, student.getSno());            stmt.setString(2, student.getSname());            stmt.setInt(3, student.getSage());            int num = stmt.executeUpdate();            if (num > 0) {                return true;            }            return false;        } catch (Exception e) {            e.printStackTrace();        } finally {            utils.release(rs, stmt, conn);        }        return false;    } //查询所有数据    public List < student > findAll() {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        List < student > list = new ArrayList < student > ();        try {            // 获得数据的连接            conn = utils.getConnection();            // SQL语句            String sql="select * from student";            //得到预编译对象            stmt=conn.prepareStatement(sql);            rs = stmt.executeQuery();            // 处理结果集,遍历rs结果集            while (rs.next()) {                student student = new student();                student.setSno(rs.getString("sno"));                student.setSname(rs.getString("sname"));                student.setSage(rs.getInt("sage"));                list.add(student);            }            return list;        } catch (Exception e) {            e.printStackTrace();        } finally {            utils.release(rs, stmt, conn);        }        return null;    } // 根据id查找指定的student    public student find(String id) {        Connection conn = null;        PreparedStatement stmt = null;        ResultSet rs = null;        student student = new student();        try {            // 获得数据的连接            conn = utils.getConnection();            //SQL语句            String sql = "select * from student where sno=?";            //得到预编译对象            stmt=conn.prepareStatement(sql);            stmt.setString(1, id);            rs = stmt.executeQuery();            // 处理结果集            while (rs.next()) {                                student.setSno(rs.getString("sno"));                student.setSname(rs.getString("sname"));                student.setSage(rs.getInt("sage"));                return student;            }            return null;        } catch (Exception e) {            e.printStackTrace();        } finally {            utils.release(rs, stmt, conn);        }        return null;    } //删除学生数据    public boolean delete(String id){      Connection conn = null;      PreparedStatement stmt = null;      ResultSet rs = null;      try {          // 获得数据的连接          conn = utils.getConnection();          //sql语句                    String sql = "delete from student where sno=?";          //获取预处理对象                  stmt= conn.prepareStatement(sql);          stmt.setString(1, id);          int num = stmt.executeUpdate();          if (num > 0) {              return true;          }          return false;      } catch (Exception e) {          e.printStackTrace();      } finally {          utils.release(rs, stmt, conn);      }      return false;    } // 修改用户    public boolean update(student student) {        Connection con = null;        PreparedStatement stmt = null;        ResultSet rs = null;        try {            //获得数据的连接            con = utils.getConnection();            //sql语句            String sql="update student set sname=?,sage=? where sno =?";            //得到预编译对象            stmt=con.prepareStatement(sql);            stmt.setString(1, student.getSname());            stmt.setInt(2, student.getSage());            stmt.setString(3, student.getSno());            int num = stmt.executeUpdate();            if (num > 0) {                return true;            }            return false;        } catch (Exception e) {            e.printStackTrace();        } finally {            utils.release(rs, stmt, con);        }        return false;    }}

有其他问题可以私聊作者交流