JavaWeb——简单CRUD

JavaWeb实现的超级简陋的CRUD功能的项目,记录下来方便以后查看。

1.项目结构

在这里插入图片描述
在这里插入图片描述

2.数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `sno` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `sname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `ssex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1',
  `sage` int(11) NULL DEFAULT NULL,
  `stel` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 132 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '2020032201', '张三', '1', 19, '18728394832');
INSERT INTO `student` VALUES (2, '2020032202', '李四', '2', 19, '18329108345');
INSERT INTO `student` VALUES (3, '2020032203', '王五', '1', 18, '18405812308');
INSERT INTO `student` VALUES (4, '2020032204', '赵六', '1', 19, '13019273792');
INSERT INTO `student` VALUES (5, '2020032205', '孙七', '2', 18, '18732914501');

-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('wangwu', '123');

SET FOREIGN_KEY_CHECKS = 1;

3.bean

User.java:

public class User {
    
    
    private String username;
    private String password;

    public User() {
    
    
    }

    public User(String username, String password) {
    
    
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
    
    
        return username;
    }

    public void setUsername(String username) {
    
    
        this.username = username;
    }

    public String getPassword() {
    
    
        return password;
    }

    public void setPassword(String password) {
    
    
        this.password = password;
    }
}

Student.java:

public class Student {
    
    
    private String sno;
    private String sname;
    private String ssex;
    private Integer sage;
    private String stel;

    public Student() {
    
    
    }

    public Student(String sno, String sname, String ssex, Integer sage, String stel) {
    
    
        this.sno = sno;
        this.sname = sname;
        this.ssex = ssex;
        this.sage = sage;
        this.stel = stel;
    }

    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 String getSsex() {
    
    
        return ssex;
    }

    public void setSsex(String ssex) {
    
    
        this.ssex = ssex;
    }

    public Integer getSage() {
    
    
        return sage;
    }

    public void setSage(Integer sage) {
    
    
        this.sage = sage;
    }

    public String getStel() {
    
    
        return stel;
    }

    public void setStel(String stel) {
    
    
        this.stel = stel;
    }
}

4.dao

UserDao接口:

public interface UserDao {
    
    
    User find(String name);
    int insertUser(User user);
}

UseDaoImpl.java:

public class UserDaoImpl extends DruidUtil implements UserDao {
    
    
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;

    /**
     * 根据用户名查找密码
     * @param name
     * @return
     */
    @Override
    public User find(String name) {
    
    
        User user = new User();
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("select password from users where username=?");
            ps.setString(1,name);
            rs = ps.executeQuery();
            while(rs.next()){
    
    
                user.setUsername(name);
                user.setPassword(rs.getString("password"));
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps,rs);
        }
        return user;
    }
    
    /**
     * 新增用户
     * @param user
     * @return
     */
    @Override
    public int insertUser(User user) {
    
    
        int num = 0;
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("insert into users values(?,?)");
            ps.setString(1,user.getUsername());
            ps.setString(2,user.getPassword());
            num = ps.executeUpdate();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps);
        }
        return num;
    }
}

StudentDao接口:

public interface StudentDao {
    
    
    public List<Student> getAll();
    int insertStudent(Student student);
    int deleteStudent(String sno);
    int updateStudent(Student student);
    Student findStu(String sno);
}

StudentDaoImpl.java:

public class StudentDaoIml extends DruidUtil implements StudentDao {
    
    
    Connection conn = null;
    PreparedStatement ps = null;
    Statement state = null;
    ResultSet rs = null;

    /**
     * 列出所有学生信息
     * @return
     */
    @Override
    public List<Student> getAll() {
    
    
        List list = new ArrayList();
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("select * from student");
            rs = ps.executeQuery();
            while(rs.next()){
    
    
                Student student = new Student();
                student.setSno(rs.getString("sno"));
                student.setSname(rs.getString("sname"));
                student.setSsex(rs.getString("ssex"));
                student.setSage(rs.getInt("sage"));
                student.setStel(rs.getString("stel"));
                list.add(student);
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }finally {
    
    
            close(conn,ps,rs);
        }
        return list;
    }

    /**
     * 增加学生
     * @param student
     * @return
     */
    @Override
    public int insertStudent(Student student) {
    
    
        int num = 0;
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("insert into student(sno,sname,ssex,sage,stel) values (?,?,?,?,?)");
            ps.setString(1,student.getSno());
            ps.setString(2,student.getSname());
            ps.setString(3,student.getSsex());
            ps.setInt(4,student.getSage());
            ps.setString(5,student.getStel());
            num = ps.executeUpdate();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps);
        }
        return num;
    }

    /**
     * 删除学生
     * @param sno
     * @return
     */
    @Override
    public int deleteStudent(String sno) {
    
    
        int num = 0;
        try {
    
    
            conn = getConnection();
            state = conn.createStatement();
            num = state.executeUpdate("delete from student where sno=" + sno);
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps);
        }
        return num;
    }

    /**
     * 更新学生信息
     * @param student
     * @return
     */
    @Override
    public int updateStudent(Student student) {
    
    
        int num = 0;
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("update student set sname=?,ssex=?,sage=?,stel=? where sno=?");
            ps.setString(1,student.getSname());
            ps.setString(2,student.getSsex());
            ps.setInt(3,student.getSage());
            ps.setString(4,student.getStel());
            ps.setString(5,student.getSno());
            num = ps.executeUpdate();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps);
        }
        return num;
    }

    /**
     * 根据学号查找学生信息
     * @param sno
     * @return
     */
    @Override
    public Student findStu(String sno) {
    
    
        Student student = new Student();
        try {
    
    
            conn = getConnection();
            ps = conn.prepareStatement("select * from student where sno=?");
            ps.setString(1,sno);
            rs = ps.executeQuery();
            while (rs.next()){
    
    
                student.setSno(rs.getString("sno"));
                student.setSname(rs.getString("sname"));
                student.setSsex(rs.getString("ssex"));
                student.setSage(rs.getInt("sage"));
                student.setStel(rs.getString("stel"));
                return student;
            }
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            close(conn,ps,rs);
        }
        return student;
    }
}

5.service

UserService接口:

//service层主要定义业务逻辑,现阶段主要实现调取dao层
public interface UserService {
    
    
    User find(String name);
    int insertUser(User user);
}

UserServiceImpl.java:

public class UserServiceImpl implements UserService {
    
    
    private UserDao userDao = new UserDaoImpl();

    @Override
    public User find(String name) {
    
    
        return userDao.find(name);
    }

    @Override
    public int insertUser(User user) {
    
    
        return userDao.insertUser(user);
    }
}

StudentService接口:

public interface StudentService {
    
    
    public List<Student> getAll();
    int insertStudent(Student student);
    int deleteStudent(String sno);
    int updateStudent(Student student);
    Student findStu(String sno);
}

StudentServiceImpl.java:

public class StudentServiceImpl implements StudentService {
    
    
    private StudentDao studentDao = new StudentDaoIml();

    @Override
    public List<Student> getAll() {
    
    
        return studentDao.getAll();
    }

    @Override
    public int insertStudent(Student student) {
    
    
        return studentDao.insertStudent(student);
    }

    @Override
    public int deleteStudent(String sno) {
    
    
        return studentDao.deleteStudent(sno);
    }

    @Override
    public int updateStudent(Student student) {
    
    
        return studentDao.updateStudent(student);
    }

    @Override
    public Student findStu(String sno) {
    
    
        return studentDao.findStu(sno);
    }
}

6.servlet

RegisterServlet.java:

@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
    
    
    private UserService userService;

    public RegisterServlet() {
    
    
        userService = new UserServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        User user = new User();
        user.setUsername(username);
        user.setPassword(password);

        int num = userService.insertUser(user);
        if(num>0){
    
    
            resp.sendRedirect("index.jsp");
        }else{
    
    
            resp.sendRedirect("register.jsp");
        }
    }
}

LoginServlet.java:

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    
    
    private UserService userService;
    public LoginServlet() {
    
    
        userService = new UserServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        User user = userService.find(username);
        String pwd = user.getPassword();
        if(pwd.equals(password)){
    
    
            HttpSession session = req.getSession();
            session.setAttribute("username",username);
            session.setAttribute("password",password);
            session.setMaxInactiveInterval(60*30);
            resp.sendRedirect(req.getContextPath()+"/gotostudentlist");
        }else{
    
    
            resp.sendRedirect("index.jsp");
        }
    }
}

LoginOutServlet.java:

@WebServlet("/loginout")
public class LoginOutServlet extends HttpServlet {
    
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.getSession().invalidate();//使session失效
        resp.sendRedirect("index.jsp");
    }

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

StudentListServlet.java:

@WebServlet("/gotostudentlist")
public class StudentListServlet extends HttpServlet {
    
    
    private StudentService studentService;
    public StudentListServlet(){
    
    
        studentService = new StudentServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        List<Student> getAll = studentService.getAll();

        //后台传递数据给前台
        req.setAttribute("stulist",getAll);
        req.getRequestDispatcher("/studentList.jsp").forward(req,resp);
    }
}

AddStudentServlet.java:

@WebServlet("/addStudent")
public class AddStudentServlet extends HttpServlet {
    
    
    private StudentService studentService;
    public AddStudentServlet(){
    
    
        studentService = new StudentServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        //获取输入框的值
        String sno = req.getParameter("sno");
        String sname = req.getParameter("sname");
        String ssex = req.getParameter("ssex");
        String sage = req.getParameter("sage");
        String stel = req.getParameter("stel");

        Student student = new Student();
        student.setSno(sno);
        student.setSname(sname);
        student.setSsex(ssex);
        student.setSage(Integer.parseInt(sage));
        student.setStel(stel);

        int num = studentService.insertStudent(student);
        if(num>0){
    
    
            resp.sendRedirect(req.getContextPath()+"/gotostudentlist");
        }else{
    
    
            resp.sendRedirect("studentAdd.jsp");
        }
    }
}

DeleteStudentServlet.java:

@WebServlet("/deleteStudent")
public class DeleteStudentServlet extends HttpServlet {
    
    
    private StudentService studentService;
    public DeleteStudentServlet(){
    
    
        studentService = new StudentServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        String sno = req.getParameter("sno");
        studentService.deleteStudent(sno);
        resp.sendRedirect(req.getContextPath()+"/gotostudentlist");
    }
}

UpdateStudentServlet.java:

@WebServlet("/updateStudent")
public class UpdateStudentServlet extends HttpServlet {
    
    
    private StudentService studentService;
    public UpdateStudentServlet(){
    
    
        studentService = new StudentServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        req.setCharacterEncoding("utf-8");
        //获取输入框的值
        String sno = req.getParameter("sno");
        String sname = req.getParameter("sname");
        String ssex = req.getParameter("ssex");
        String sage = req.getParameter("sage");
        String stel = req.getParameter("stel");

        Student student = new Student(sno,sname,ssex,Integer.parseInt(sage),stel);
        int num = studentService.updateStudent(student);

        if(num>0){
    
    
            resp.sendRedirect(req.getContextPath()+"/gotostudentlist");
        }else{
    
    
            resp.sendRedirect("studentUpdate.jsp");
        }
    }
}

下方是修改时根据学号链接跳转:

FindStudentBySnoServlet.java:

@WebServlet("/findStudentBySno")
public class FindStudentBySnoServlet extends HttpServlet {
    
    
    private StudentService studentService;
    public FindStudentBySnoServlet(){
    
    
        studentService = new StudentServiceImpl();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        String sno = req.getParameter("sno");
        Student stu = studentService.findStu(sno);
        req.setAttribute("student",stu);
        req.getRequestDispatcher("studentUpdate.jsp").forward(req,resp);
    }

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

下方是根据学号查询学生信息:

SearchStudentBySnoServlet.java:

@WebServlet("/searchStuBySno")
public class SearchStudentBySnoServlet extends HttpServlet {
    
    
    private StudentService studentService;

    public SearchStudentBySnoServlet() {
    
    
        studentService = new StudentServiceImpl();
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        String sno = req.getParameter("findstu");
        Student stu = studentService.findStu(sno);
        req.setAttribute("student",stu);
        req.getRequestDispatcher("studentFindList.jsp").forward(req,resp);
    }
}

7.其他

druid.properties:

url=jdbc:mysql://localhost:3306/mvc?useUnicode=true&characterEncoding=utf-8
username=root
password=123
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=10
minIdle=5
maxWait=3000

DruidUtil.java:

public class DruidUtil {
    
    
    private static DataSource ds;
    static {
    
    
        try {
    
    
            Properties ppt = new Properties();
            ppt.load(DruidUtil.class.getClassLoader().getResourceAsStream("druid.properties"));
            ds = DruidDataSourceFactory.createDataSource(ppt);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }

    /**
     * 从连接池中取出一个连接给用户
     * @return
     */
    public static Connection getConnection(){
    
    
        try {
    
    
            return ds.getConnection();
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }
        return null;
    }

    public static void close(Connection conn, Statement state, ResultSet rs){
    
    
        try {
    
    
            rs.close();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        close(conn,state);
    }

    public static void close(Connection conn,Statement state){
    
    
        try {
    
    
            state.close();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        try {
    
    
            conn.close();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}

LoginFilter.java:

public class LoginFilter implements Filter {
    
    

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    
    

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
    
        //处理乱码
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        HttpServletResponse response = (HttpServletResponse)servletResponse;
        request.setCharacterEncoding("utf-8");

        //防止用户在未登录的情况下访问资源
        String requestURI = request.getRequestURI();
        Object username = request.getSession().getAttribute("username");
        if(requestURI.contains("student")&&username==null){
    
    
            response.sendRedirect("index.jsp");
        }
        //调取下一个过滤器,或者调用Servlet
        filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {
    
    

    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <filter>
        <filter-name>f</filter-name>
        <filter-class>com.filter.LoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>f</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

8.jsp

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>登录页面</title>
  </head>
  <body>
    <h1>请登录</h1>
    <form action="login" method="post">
      用户名:<input type="text" name = "username"><br><br>
      密码:<input type="password" name="password"><br><br>
      <input type="submit" value="登录">
      <input type="button" value="注册" οnclick=window.open("register.jsp")>
    </form>
  </body>
</html>

register.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>注册页面</title>
</head>
<body>
    <h1>请注册</h1>
    <form action="register" method="post">
        用户名:<input type="text" name="username"><br><br>
        密码:<input type="password" name="password"><br><br>
        <input type="submit" value="注册">
        <input type="button" value="登录" οnclick=window.open("index.jsp")>
    </form>
</body>
</html>

studentList.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生列表</title>
    <style>
        h1{
     
     
            text-align: center;
        }
        table{
     
     
            background: blanchedalmond;
            width: 800px;
            margin: 20px auto;
            text-align: center;
        }
        td{
     
     
            height: 40px;
        }
        tr:first-child{
     
     
            font-weight: 700;
        }
        form{
     
     
            width: 265px;
            margin:20px auto;
        }
        #find{
     
     
            width: 200px;
            height: 30px;
        }
        #findinput1,#findinput2{
     
     
            width: 60px;
            height: 30px;
            cursor: pointer;
            background: blanchedalmond;
        }
        #findinput2{
     
     
            margin: 10px 100px;
        }
        div{
     
     
            float:right;
        }
    </style>
</head>
<body>
    <h1>学生信息</h1>&nbsp;&nbsp;&nbsp;
    <div>
        当前登录用户:${sessionScope.username}
        &nbsp;&nbsp;&nbsp;
        <a href="loginout">退出</a>
        &nbsp;&nbsp;&nbsp;
    </div>

    <form action="searchStuBySno" method="post">
        <input id="find" type="text" name="findstu" placeholder="输入学号">
        <input id="findinput1" type="submit" value="查询">
    </form>
    <table border="1">
        <tr>
            <td>学号</td>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>电话号码</td>
            <td>操作</td>
        </tr>
        <c:forEach items="${stulist}" var="stu">
            <tr>
                <td>${stu.sno}</td>
                <td>${stu.sname}</td>
                <td>${stu.ssex==1?"男":"女"}</td>
                <td>${stu.sage}</td>
                <td>${stu.stel}</td>
                <td>
                    <a href="deleteStudent?sno=${stu.sno}">删除</a>
                    <a href="findStudentBySno?sno=${stu.sno}">修改</a>
                </td>
            </tr>
        </c:forEach>
    </table>
    <form action="studentAdd.jsp" method="post">
        <input type="submit" value="添加" id="findinput2">
    </form>
</body>
</html>

studentAdd.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加学生页面</title>
    <style>
        h1{
     
     
            text-align: center;
        }
        table{
     
     
            background: blanchedalmond;
            width: 700px;
            margin: 20px auto;
            text-align: center;
        }
        input{
     
     
            height: 40px;
            width: 90%;
            margin: 10px auto;
            font-size: 20px;
        }
        tr:first-child{
     
     
            font-weight: 700;
            height: 60px;
        }
        #lastinput{
     
     
            width: 50%;
        }

    </style>
</head>
<body>
    <h1>学生信息</h1>
    <form action="addStudent" method="post">
        <table border="1">
            <tr>
                <td>信息</td>
                <td>请填写</td>
            </tr>
            <tr>
                <td>学号</td>
                <td><input type="text" name="sno"> </td>
            </tr>
            <tr>
                <td>姓名</td>
                <td><input type="text" name="sname"> </td>
            </tr>
            <tr>
                <td>性别</td>
                <td><input type="text" name="ssex"> </td>
            </tr>
            <tr>
                <td>年龄</td>
                <td><input type="text" name="sage"> </td>
            </tr>
            <tr>
                <td>电话号码</td>
                <td><input type="text" name="stel"> </td>
            </tr>
            <tr>
                <td colspan="2"><input id="lastinput" type="submit" value="提交"></td>
            </tr>
        </table>
    </form>
</body>
</html>

studentUpdate.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改学生页面</title>
    <style>
        h1{
     
     
            text-align: center;
        }
        table{
     
     
            background: blanchedalmond;
            width: 700px;
            margin: 20px auto;
            text-align: center;
        }
        input{
     
     
            height: 40px;
            width: 90%;
            margin: 10px auto;
            font-size: 20px;
        }
        tr:first-child{
     
     
            font-weight: 700;
            height: 60px;
        }
        #lastinput{
     
     
            width: 50%;
        }

    </style>
</head>
<body>
<h1>学生信息</h1>
<form action="updateStudent" method="post">
    <table border="1">
        <tr>
            <td>信息</td>
            <td>请填写</td>
        </tr>
        <tr>
            <td>学号</td>
            <td><input type="text" name="sno" readonly value="${student.sno}"></td>
        </tr>
        <tr>
            <td>姓名</td>
            <td><input type="text" name="sname" value="${student.sname}"></td>
        </tr>
        <tr>
            <td>性别</td>
            <td><input type="text" name="ssex" value="${student.ssex}"></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="text" name="sage" value="${student.sage}"></td>
        </tr>
        <tr>
            <td>电话号码</td>
            <td><input type="text" name="stel" value="${student.stel}"></td>
        </tr>
        <tr>
            <td colspan="2"><input id="lastinput" type="submit" value="提交"></td>
        </tr>

    </table>
</form>
</body>
</html>

studentFindList.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生列表</title>
    <style>
        h1{
     
     
            text-align: center;
        }
        table{
     
     
            background: blanchedalmond;
            width: 800px;
            margin: 20px auto;
            text-align: center;
        }
        td{
     
     
            height: 40px;
        }
        tr:first-child{
     
     
            font-weight: 700;
        }
        form{
     
     
            width: 265px;
            margin:20px auto;
        }
    </style>
</head>
<body>
<h1>学生信息</h1>
<table border="1">
    <tr>
        <td>学号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>年龄</td>
        <td>电话号码</td>
        <td>操作</td>
    </tr>
    <tr>
        <td>${student.sno}</td>
        <td>${student.sname}</td>
        <td>${student.ssex==1?"男":"女"}</td>
        <td>${student.sage}</td>
        <td>${student.stel}</td>
        <td>
            <a href="deleteStudent?sno=${student.sno}">删除</a>
            <a href="findStudentBySno?sno=${student.sno}">修改</a>
        </td>
    </tr>
</table>
</body>
</html>

9.效果图:

注册:
在这里插入图片描述

登录:
在这里插入图片描述
学生列表:
在这里插入图片描述
添加:
在这里插入图片描述

修改:
在这里插入图片描述

查询:
在这里插入图片描述
做项目时的难点已写在bug之路(持续更新)中。

猜你喜欢

转载自blog.csdn.net/weixin_43771998/article/details/115162234