[关闭]
@Ablechen 2019-07-11T01:00:18.000000Z 字数 15731 阅读 413

简单的web学生管理系统


Created with Raphaël 2.1.2index页面loginServlet增删改servlet(对应的实现功能的servlet)loginAction(进行信息显示)yesno

在项目中需要用到的包

  1. bean(用于封装数据)
  2. servlet(提供动作,逻辑服务)
  3. db(用于连接数据库)
  4. jsp(用于数据的显示,和用户进行交互)

    整合数据登陆页面显示信息页错误显示页添加学生页面修改信息页面进行数据库连接显示数据功能增加数据功能删除数据功能修改数据功能找到指定数据进行修改学生信息管理beanjspdbservletStudent.javaindex.jsploginServlet.jsperror.jspstuAdd.jspstuEdit.jspDbConnect.javaLoginServer.javaAddServlet.javaDeleteServlet.javaeditSelectServlet.javaEditServlet.java

在实际中值得注意的地方

在整个项目的过程中,有的页面之间需要进行信息的传递,比如通过servlet向loginServlet.jsp页面需要传送数据rs(一个返回结果集),这里使用的就是为session设置属性来保存自己需要的数据。然后进行增删改之后,再更新session的属性,这样就达到了使得loginServlet.jsp页面显示的更新。

还有就是有关PreparedStatement的setString方法的使用

使用setString/setInt之类的方法可以为SQL语句中提供参量,便于动态的执行sql语句

  1. String sql = "insert into student(name, sex, specialty, grade) values(?, ?, ?, ?)"

其中的每一个问号都是一个需要填充的形参,位置是从1开始的,而不是0

使用隐藏属性提供参数
当有一些参数是下一个页面所必需的,但是又不需要再页面中显示的时候,隐藏属性得到了运用

  1. <input type="hidden" name=*** value=***>

在jsp页面中和html嵌套使用判断语句进行逻辑控制

  1. <%if(condition) { %>
  2. html标签
  3. <% } else if(condition2) { %>
  4. html标签
  5. <% } else if(condition3) { %>
  6. html标签
  7. <% } %>

index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>学生管理系统</title>
  8. </head>
  9. <body>
  10. <form action="LoginServer" method="post">
  11. <table align="center" border="1">
  12. <tr>
  13. <td colspan="2" align="center">管理员登陆界面</td>
  14. </tr>
  15. <tr>
  16. <td>用户名:</td>
  17. <td>
  18. <input type="text" name="admin">
  19. </td>
  20. </tr>
  21. <tr>
  22. <td>密码:</td>
  23. <td>
  24. <input type="password" name="upwd">
  25. </td>
  26. </tr>
  27. <tr>
  28. <td colspan="2" align="center">
  29. <input type="submit" value="登陆">
  30. </td>
  31. </tr>
  32. </table>
  33. </form>
  34. </body>
  35. </html>

loginAction.jsp

  1. <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.sql.*" %>
  4. <%
  5. ResultSet rs = (ResultSet) session.getAttribute("rs");
  6. %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <meta charset="UTF-8">
  11. <title>学生管理系统</title>
  12. </head>
  13. <body>
  14. <table align="center" border="1">
  15. <tr>
  16. <td align="center" colspan="6">学生信息</td>
  17. </tr>
  18. <tr>
  19. <td>姓名</td>
  20. <td>性别</td>
  21. <td>专业</td>
  22. <td>年级</td>
  23. <td align="center" colspan="2">操作
  24. </td>
  25. </tr>
  26. <%
  27. while(rs.next()){
  28. %>
  29. <tr>
  30. <td><%=rs.getString("name") %></td>
  31. <td><%=rs.getString("sex") %></td>
  32. <td><%=rs.getString("specialty") %></td>
  33. <td><%=rs.getString("grade") %></td>
  34. <td>
  35. <a href="SelectServlet?id=<%=rs.getInt("id") %>">修改</a>
  36. </td>
  37. <td>
  38. <!-- 这里使用了javascript函数 -->
  39. <a href="DeleteServlet?id=<%=rs.getInt("id") %>" onclick
  40. = "return confirm('确定要删除吗?');">删除</a>
  41. </td>
  42. </tr>
  43. <%
  44. }
  45. %>
  46. <tr>
  47. <td align="center" colspan="6">
  48. <a href="stuAdd.jsp">添加</a>
  49. </td>
  50. </tr>
  51. </table>
  52. </body>
  53. </html>

stuAdd.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>添加学生信息</title>
  8. </head>
  9. <body>
  10. <form action="AddServlet" method="post">
  11. <table align="center">
  12. <tr>
  13. <td colspan="2">添加学生信息</td>
  14. </tr>
  15. <tr>
  16. <td>学号</td>
  17. <td>
  18. <input type="text" name="unumber">
  19. </td>
  20. </tr>
  21. <tr>
  22. <td>姓名</td>
  23. <td>
  24. <input type="text" name="uname">
  25. </td>
  26. </tr>
  27. <tr>
  28. <td>性别</td>
  29. <td>
  30. <input type="radio" name="ugender" value="男">
  31. <input type="radio" name="ugender" value="女">
  32. </td>
  33. </tr>
  34. <tr>
  35. <td>专业</td>
  36. <td>
  37. <input type="text" name="specialty">
  38. </td>
  39. </tr>
  40. <tr>
  41. <td>年级</td>
  42. <td>
  43. <select name="ugrade">
  44. <option value="大一">大一</option>
  45. <option value="大二">大二</option>
  46. <option value="大三">大三</option>
  47. <option value="大四">大四</option>
  48. </select>
  49. </td>
  50. </tr>
  51. <tr>
  52. <td colspan="2" align="center">
  53. <input type="submit" value="添加">
  54. </td>
  55. </tr>
  56. </table>
  57. </form>
  58. </body>
  59. </html>

stuEdit.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="bean.Student" %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title>修改学生信息</title>
  9. </head>
  10. <%
  11. Student stu = (Student) session.getAttribute("stu");
  12. %>
  13. <body>
  14. <form action="EditServlet" method="post">
  15. <table align="center" border="1">
  16. <tr>
  17. <td colspan="2">
  18. <input type="hidden" name="unumber" value=<%=stu.getId() %>>
  19. </td>
  20. </tr>
  21. <tr>
  22. <td colspan="2" align="center">修改学生信息</td>
  23. </tr>
  24. <tr>
  25. <td>用户名:</td>
  26. <td>
  27. <input type="text" name="uname" value=<%=stu.getName() %>>
  28. </td>
  29. </tr>
  30. <tr>
  31. <td>性别:</td>
  32. <% if(stu.getSex().equals("男")) { %>
  33. <td>
  34. <input type="radio" name="ugender" value="男" checked="checked">
  35. <input type="radio" name="ugender" value="女">
  36. </td>
  37. <% }else{ %>
  38. <td>
  39. <input type="radio" name="ugender" value="男">
  40. <input type="radio" name="ugender" value="女" checked="checked">
  41. </td>
  42. <% } %>
  43. </tr>
  44. <tr>
  45. <td>专业</td>
  46. <td>
  47. <input type="text" value=<%=stu.getSpecialty() %> name="specialty">
  48. </td>
  49. </tr>
  50. <tr>
  51. <td>专业</td>
  52. <% if(stu.getGrade().equals("大一")) { %>
  53. <td>
  54. <select name="ugrade">
  55. <option selected="selected">大一</option>
  56. <option>大二</option>
  57. <option>大三</option>
  58. <option>大四</option>
  59. </select>
  60. </td>
  61. <% }else if(stu.getGrade().equals("大二")){ %>
  62. <td>
  63. <select name="ugrade">
  64. <option>大一</option>
  65. <option selected="selected">大二</option>
  66. <option>大三</option>
  67. <option>大四</option>
  68. </select>
  69. </td>
  70. <% }else if(stu.getGrade().equals("大三")){ %>
  71. <td>
  72. <select name="ugrade">
  73. <option>大一</option>
  74. <option>大二</option>
  75. <option selected="selected">大三</option>
  76. <option>大四</option>
  77. </select>
  78. </td>
  79. <% }else if(stu.getGrade().equals("大四")){ %>
  80. <td>
  81. <select name="ugrade">
  82. <option>大一</option>
  83. <option>大二</option>
  84. <option>大三</option>
  85. <option selected="selected">大四</option>
  86. </select>
  87. </td>
  88. <% } %>
  89. </tr>
  90. <tr>
  91. <td colspan="2" align="center">
  92. <input type="submit" value="修改">
  93. </td>
  94. </tr>
  95. </table>
  96. </form>
  97. </body>
  98. </html>

error.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title>error</title>
  8. </head>
  9. <body>
  10. <%
  11. String message = (String) session.getAttribute("message");
  12. out.println(message);
  13. %>
  14. </body>
  15. </html>

AddServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import javax.servlet.http.HttpSession;
  13. import bean.Student;
  14. import db.DbConnect;
  15. @WebServlet(urlPatterns = "/AddServlet")
  16. public class AddServlet extends HttpServlet{
  17. @Override
  18. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. resp.setContentType("text/html");
  20. resp.setCharacterEncoding("utf-8");
  21. req.setCharacterEncoding("utf-8");
  22. PrintWriter out = resp.getWriter();
  23. //获得需要添加的对应字段的值
  24. int number = Integer.parseInt(req.getParameter("unumber"));
  25. String name = req.getParameter("uname");
  26. String sex = req.getParameter("ugender");
  27. String specialty = req.getParameter("specialty");
  28. String grade = req.getParameter("ugrade");
  29. //使用bean
  30. Student stu = new Student(name, sex, specialty, grade, number);
  31. //对数据库的数据进行修改
  32. Connection con = DbConnect.getConnection();
  33. //创建带有参数的SQL语句
  34. String sql = "INSERT INTO student(id, name, sex, specialty, grade) VALUES(?, ?, ?, ?, ?)";
  35. PreparedStatement ps = null ;
  36. try {
  37. ps = con.prepareStatement(sql);
  38. ps.setInt(1, stu.getId());
  39. ps.setString(2, stu.getName());
  40. ps.setString(3, stu.getSex());
  41. ps.setString(4, stu.getSpecialty());
  42. ps.setString(5, stu.getGrade());
  43. int i = ps.executeUpdate();
  44. HttpSession session = req.getSession();
  45. //如果添加成功跳转到显示页面进行显示
  46. if(i==1) {
  47. String sql1 = "select * from student";
  48. ps = con.prepareStatement(sql1);
  49. ResultSet rs = ps.executeQuery();
  50. //对于session的属性进行更新
  51. session.setMaxInactiveInterval(7200);
  52. session.setAttribute("rs", rs);
  53. resp.sendRedirect("loginAction.jsp");
  54. }else {
  55. //添加失败的时候进入失败页面
  56. session.setAttribute("message", "添加失败");
  57. resp.sendRedirect("error.jsp");
  58. }
  59. }catch (Exception e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. @Override
  64. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  65. doGet(req, resp);
  66. }
  67. }

DeleteServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import javax.servlet.http.HttpSession;
  13. import db.DbConnect;
  14. @WebServlet(urlPatterns = "/DeleteServlet")
  15. public class DeleteServlet extends HttpServlet{
  16. @Override
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. req.setCharacterEncoding("utf-8");
  19. resp.setContentType("text/html");
  20. resp.setCharacterEncoding("utf-8");
  21. int id = Integer.parseInt(req.getParameter("id"));
  22. String sql = "DELETE FROM student WHERE id = ?";
  23. Connection con = DbConnect.con ;
  24. PreparedStatement ps = null ;
  25. ResultSet rs = null ;
  26. HttpSession session = req.getSession() ;
  27. //进行删除操作
  28. try {
  29. ps = con.prepareStatement(sql);
  30. ps.setInt(1, id);
  31. int i = ps.executeUpdate() ;
  32. if(i==1) {
  33. sql = "SELECT * FROM student" ;
  34. ps = con.prepareStatement(sql);
  35. rs = ps.executeQuery() ;
  36. //重新设置session属性
  37. session.setMaxInactiveInterval(7200);
  38. session.setAttribute("rs", rs);
  39. resp.sendRedirect("loginAction.jsp");
  40. }else {
  41. session.setAttribute("message", "删除失败!");
  42. resp.sendRedirect("error.jsp");
  43. }
  44. } catch (SQLException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. @Override
  49. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  50. doGet(req, resp);
  51. }
  52. }

EditServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12. import bean.Student;
  13. import db.DbConnect;
  14. @WebServlet(urlPatterns = "/EditServlet")
  15. public class EditServlet extends HttpServlet{
  16. @Override
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. req.setCharacterEncoding("utf-8");
  19. resp.setContentType("text/html");
  20. resp.setCharacterEncoding("utf-8");
  21. //获得修改后的值
  22. int id = Integer.parseInt(req.getParameter("unumber"));
  23. String name = req.getParameter("uname");
  24. String sex = req.getParameter("ugender");
  25. String specialty = req.getParameter("specialty");
  26. String grade = req.getParameter("ugrade");
  27. Student stu = new Student(name, sex, specialty, grade, id);
  28. //找到需改的信息
  29. String sql = "UPDATE student set name=?, sex=?, specialty=?, grade=? WHERE id = ? ";
  30. Connection con = DbConnect.con;
  31. ResultSet rs = null ;
  32. PreparedStatement ps = null ;
  33. try {
  34. ps = con.prepareStatement(sql);
  35. ps.setString(1, stu.getName());
  36. ps.setString(2, stu.getSex());
  37. ps.setString(3, stu.getSpecialty());
  38. ps.setString(4, stu.getGrade());
  39. ps.setInt(5, id);
  40. int i = ps.executeUpdate();
  41. HttpSession session = req.getSession();
  42. if(i==1) {
  43. sql = "SELECT * FROM student";
  44. ps = (PreparedStatement) con.prepareStatement(sql);
  45. rs = ps.executeQuery();
  46. //设置有效时长
  47. session.setMaxInactiveInterval(7200);
  48. session.setAttribute("rs", rs);
  49. resp.sendRedirect("loginAction.jsp");
  50. }else {
  51. resp.sendRedirect("error.jsp");
  52. }
  53. }catch (Exception e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. @Override
  58. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  59. doGet(req, resp);
  60. }
  61. }

LoginServer.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.sql.Connection;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.annotation.WebServlet;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12. import javax.servlet.http.HttpSession;
  13. import db.DbConnect;
  14. @WebServlet(urlPatterns = "/LoginServer")
  15. public class LoginServer extends HttpServlet{
  16. @Override
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. resp.setContentType("text/html");
  19. resp.setCharacterEncoding("utf-8");
  20. req.setCharacterEncoding("utf-8");
  21. PrintWriter out = resp.getWriter();
  22. //判断是否为管理员
  23. String admin = req.getParameter("admin");
  24. String pwd = req.getParameter("upwd");
  25. if(admin.equals("admin")&&pwd.equals("123")) {
  26. //获取数据库的连接
  27. Connection con = DbConnect.getConnection();
  28. String sql = "select * from student";
  29. PreparedStatement ps = null ;
  30. ResultSet rs = null ;
  31. try {
  32. ps = (PreparedStatement) con.prepareStatement(sql);
  33. rs = ps.executeQuery();
  34. //设置有效时长
  35. HttpSession session = req.getSession();
  36. session.setMaxInactiveInterval(7200);
  37. session.setAttribute("rs", rs);
  38. resp.sendRedirect("loginAction.jsp");
  39. }catch (Exception e) {
  40. e.printStackTrace();
  41. }
  42. }else {
  43. resp.sendRedirect("index.jsp");
  44. }
  45. }
  46. @Override
  47. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  48. doGet(req, resp);
  49. }
  50. }

SelectServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12. import bean.Student;
  13. import db.DbConnect;
  14. @WebServlet(urlPatterns = "/SelectServlet")
  15. public class SelectServlet extends HttpServlet{
  16. @Override
  17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  18. req.setCharacterEncoding("utf-8");
  19. resp.setContentType("text/html");
  20. resp.setCharacterEncoding("utf-8");
  21. int id = Integer.parseInt(req.getParameter("id"));
  22. //查找需要修改的信息
  23. String sql = "SELECT * FROM student WHERE id = ? ";
  24. Connection con = DbConnect.con;
  25. ResultSet rs = null ;
  26. PreparedStatement ps = null ;
  27. //为session设置属性做准备,便于传输需要的信息
  28. Student stu = null ;
  29. try {
  30. ps = con.prepareStatement(sql);
  31. ps.setInt(1, id);
  32. //获得结果的集合
  33. rs = ps.executeQuery();
  34. while(rs.next()) {
  35. String name = rs.getString("name");
  36. String sex = rs.getString("sex");
  37. String specialty = rs.getString("specialty");
  38. String grade = rs.getString("grade");
  39. stu = new Student(name, sex, specialty, grade, id);
  40. }
  41. HttpSession session = req.getSession();
  42. session.setAttribute("stu", stu);
  43. resp.sendRedirect("stuEdit.jsp");
  44. }catch (Exception e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. @Override
  49. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  50. doGet(req, resp);
  51. }
  52. }

DbConnect.java

  1. package db;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. public class DbConnect {
  5. public static Connection con;
  6. public static Connection getConnection() {
  7. try {
  8. //加载数据库驱动
  9. Class.forName("org.gjt.mm.mysql.Driver").newInstance();
  10. //数据库的连接地址
  11. String url = "jdbc:mysql://localhost:3306/StuManage?user=root&password=***"
  12. + "&useUnicode=true&characterEncoding=utf-8&userSSL=true";
  13. //与数据库连接
  14. con = DriverManager.getConnection(url);
  15. System.out.println("数据库连接成功");
  16. }catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. return con ;
  20. }
  21. }

Student.java

  1. package bean;
  2. public class Student {
  3. private String name;
  4. private String sex;
  5. private String specialty;
  6. private String grade ;
  7. private int id ;
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public Student(String name, String sex, String specialty, String grade) {
  21. this.name = name;
  22. this.sex = sex;
  23. this.specialty = specialty;
  24. this.grade = grade;
  25. }
  26. public Student(String name, String sex, String specialty, String grade, int id) {
  27. this.name = name;
  28. this.sex = sex;
  29. this.specialty = specialty;
  30. this.grade = grade;
  31. this.id = id;
  32. }
  33. public String getSex() {
  34. return sex;
  35. }
  36. public void setSex(String sex) {
  37. this.sex = sex;
  38. }
  39. public String getSpecialty() {
  40. return specialty;
  41. }
  42. public void setSpecialty(String specialty) {
  43. this.specialty = specialty;
  44. }
  45. public String getGrade() {
  46. return grade;
  47. }
  48. public void setGrade(String grade) {
  49. this.grade = grade;
  50. }
  51. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注