写一个javaMVC模拟数据请求,客户端勾选若干学生后提交数据,服务器获得学生信息后跳转到selected页面,以表格形式显示选中的学生列表代码
时间: 2024-03-22 16:42:07 浏览: 65
以下是一个简单的 Java MVC 代码示例,用于实现客户端勾选学生后提交数据,服务器获得学生信息后跳转到 selected 页面,并以表格形式显示选中的学生列表。
1. 创建一个名为 `Student` 的 Java 类,用于表示学生信息。该类应该有一个 `id` 和一个 `name` 属性:
```java
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
2. 创建一个名为 `StudentController` 的 Java 类,用于处理客户端请求。该类应该有一个 `index` 方法,用于显示学生列表页面,和一个 `selected` 方法,用于显示选中的学生列表页面:
```java
public class StudentController {
private List<Student> students = new ArrayList<Student>();
public StudentController() {
students.add(new Student(1, "张三"));
students.add(new Student(2, "李四"));
students.add(new Student(3, "王五"));
}
public void index(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("students", students);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
public void selected(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Integer> selectedStudents = new ArrayList<Integer>();
String[] selectedStudentIds = request.getParameterValues("selectedStudents");
if (selectedStudentIds != null) {
for (String id : selectedStudentIds) {
selectedStudents.add(Integer.parseInt(id));
}
}
List<Student> selectedStudentsList = new ArrayList<Student>();
for (Student student : students) {
if (selectedStudents.contains(student.getId())) {
selectedStudentsList.add(student);
}
}
request.setAttribute("selectedStudents", selectedStudentsList);
request.getRequestDispatcher("/selected.jsp").forward(request, response);
}
}
```
3. 创建两个 JSP 页面,用于显示学生列表页面和选中的学生列表页面。`index.jsp` 页面应该包含一个表单和一个包含所有学生信息的表格。`selected.jsp` 页面应该包含一个表格,用于显示选中的学生列表。
index.jsp:
```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>
<title>学生列表</title>
</head>
<body>
<h1>学生列表</h1>
<form action="selected" method="post">
<table>
<thead>
<tr>
<th>#</th>
<th>姓名</th>
<th>选中</th>
</tr>
</thead>
<tbody>
<c:forEach var="student" items="${students}">
<tr>
<td>${student.id}</td>
<td>${student.name}</td>
<td><input type="checkbox" name="selectedStudents" value="${student.id}"></td>
</tr>
</c:forEach>
</tbody>
</table>
<button type="submit">提交</button>
</form>
</body>
</html>
```
selected.jsp:
```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>
<title>选中的学生列表</title>
</head>
<body>
<h1>选中的学生列表</h1>
<table>
<thead>
<tr>
<th>#</th>
<th>姓名</th>
</tr>
</thead>
<tbody>
<c:forEach var="student" items="${selectedStudents}">
<tr>
<td>${student.id}</td>
<td>${student.name}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
```
4. 创建一个名为 `Main` 的 Java 类,用于启动应用程序。该类应该创建一个 ServletContextListener,用于注册控制器,并启动 Tomcat 服务器:
```java
public class Main implements ServletContextListener {
private Server server;
public void contextInitialized(ServletContextEvent sce) {
try {
server = new Server(8080);
WebAppContext context = new WebAppContext();
context.setContextPath("/");
context.setResourceBase(".");
context.addEventListener(this);
context.addServlet(StudentController.class, "/selected");
server.setHandler(context);
server.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void contextDestroyed(ServletContextEvent sce) {
try {
server.stop();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Main main = new Main();
main.contextInitialized(null);
}
}
```
5. 运行 `Main` 类,并访问 http://localhost:8080/,即可看到学生列表。勾选若干学生后,点击“提交”按钮,即可跳转到选中的学生列表页面,并以表格形式显示选中的学生列表。
阅读全文