编程实现学生信息管理系统,要求如下: (1)使用Mysql建立数据库stusys,并在数据库里建立student数据表,student数据表列名包括:stu_id,xuehao,name,age,height,user_name,password。插入至少两条测试数据,并且其中一条数据为考生自己的信息,包括真实的学号和姓名等; (2)视图层(V)设计登录页面login.jsp,页面通过表单提交用户名和密码进行系统登录,如果用户名和密码正确跳转到show.jsp显示该登录用户名的所有信息,否则跳转回login.jsp并提示“用户名或密码错误”;(3)模型层(M)设计Student.java为JavaBean; (4)控制层(C)设计studentDAO.java进行数据库的操作,并编写loginServlet.java判断用户名或密码是否正确进行跳转控制;
时间: 2024-03-06 21:48:47 浏览: 77
好的,我会根据您提供的要求为您进行代码实现。
首先,我们需要创建一个名为stusys的数据库,并在其中创建一个名为student的数据表。可以使用以下代码:
```
CREATE DATABASE stusys;
USE stusys;
CREATE TABLE student (
stu_id INT PRIMARY KEY AUTO_INCREMENT,
xuehao VARCHAR(20) NOT NULL,
name VARCHAR(50) NOT NULL,
age INT,
height FLOAT,
user_name VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
INSERT INTO student (xuehao, name, age, height, user_name, password)
VALUES
('001', '张三', 18, 1.75, 'zhangsan', '123456'),
('002', '李四', 20, 1.80, 'lisi', '654321');
```
这样就创建了一个名为stusys的数据库,并在其中创建了一个名为student的数据表,并在其中插入了两条测试数据。
接下来,我们需要创建一个JavaBean,用于封装学生信息。可以使用以下代码:
```
public class Student {
private int stuId;
private String xuehao;
private String name;
private int age;
private float height;
private String userName;
private String password;
// 省略 getter 和 setter 方法
}
```
然后,我们需要创建一个studentDAO类,用于进行数据库的操作。可以使用以下代码:
```
public class studentDAO {
private Connection conn;
private PreparedStatement pstmt;
private ResultSet rs;
public studentDAO() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/stusys";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
public boolean login(String userName, String password) {
try {
String sql = "SELECT * FROM student WHERE user_name=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return false;
}
public List<Student> getStudents(String userName) {
List<Student> list = new ArrayList<>();
try {
String sql = "SELECT * FROM student WHERE user_name=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userName);
rs = pstmt.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setStuId(rs.getInt("stu_id"));
student.setXuehao(rs.getString("xuehao"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setHeight(rs.getFloat("height"));
student.setUserName(rs.getString("user_name"));
student.setPassword(rs.getString("password"));
list.add(student);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
close();
}
return list;
}
private void close() {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
最后,我们需要创建一个loginServlet类,用于判断用户名或密码是否正确进行跳转控制。可以使用以下代码:
```
public class loginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
studentDAO dao = new studentDAO();
if (dao.login(userName, password)) {
List<Student> list = dao.getStudents(userName);
request.setAttribute("list", list);
request.getRequestDispatcher("show.jsp").forward(request, response);
} else {
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
```
最后,我们需要创建一个login.jsp页面,用于显示登录页面。可以使用以下代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统 - 登录页面</title>
</head>
<body>
<h1>学生信息管理系统 - 登录页面</h1>
<form action="loginServlet" method="post">
<p>
用户名:<input type="text" name="userName" required>
</p>
<p>
密码:<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="登录">
</p>
<p style="color: red;">
${error}
</p>
</form>
</body>
</html>
```
最后,我们需要创建一个show.jsp页面,用于显示该登录用户名的所有信息。可以使用以下代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统 - 显示页面</title>
</head>
<body>
<h1>学生信息管理系统 - 显示页面</h1>
<table border="1">
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>身高</th>
<th>用户名</th>
<th>密码</th>
</tr>
<c:forEach items="${list}" var="student">
<tr>
<td>${student.xuehao}</td>
<td>${student.name}</td>
<td>${student.age}</td>
<td>${student.height}</td>
<td>${student.userName}</td>
<td>${student.password}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
这样,一个简单的学生信息管理系统就完成了。当用户访问登录页面login.jsp时,输入用户名和密码后,提交表单到loginServlet.java进行验证,如果验证通过,则跳转到show.jsp页面显示该登录用户名的所有信息。如果验证不通过,则跳转回login.jsp页面并提示错误信息。
阅读全文