学生管理系统MVC分页查询控制器和模型怎么写
时间: 2024-09-30 16:09:05 浏览: 18
在学生管理系统中,使用MVC(Model-View-Controller)架构,对于分页查询的控制器和模型编写可以按照以下步骤进行:
**模型(Model):**
```java
import java.util.ArrayList;
import java.util.List;
public interface StudentRepository {
List<Student> getAllStudents(int pageSize, int currentPage);
}
// 这里假设Student是一个具体的实体类
class StudentServiceImpl implements StudentRepository {
private List<Student> students; // 初始化数据源
@Override
public List<Student> getAllStudents(int pageSize, int currentPage) {
int startIndex = (currentPage - 1) * pageSize;
List<Student> slicedList = new ArrayList<>();
if (startIndex < students.size()) {
slicedList.addAll(students.subList(startIndex, startIndex + pageSize));
}
return slicedList;
}
}
```
在这个例子中,`StudentRepository`接口定义了获取学生列表的方法,而`StudentServiceImpl`实现了这个接口并处理了分页查询。
**控制器(Controller):**
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class StudentController {
@Autowired
private StudentRepository studentRepository;
@GetMapping("/students")
public String listStudents(@RequestParam(defaultValue = "0") int pageNum, Model model) {
int pageSize = 10; // 默认每页显示10条
List<Student> students = studentRepository.getAllStudents(pageSize, pageNum);
model.addAttribute("students", students);
model.addAttribute("currentPage", pageNum); // 显示当前页码
model.addAttribute("totalPages", (int) Math.ceil((double) students.size() / pageSize)); // 总页数
return "student-list"; // 返回对应的视图模板
}
}
```
在这里,`StudentController`接收用户请求,通过`@GetMapping`注解处理GET请求到"/students"。它从`StudentRepository`获取分页的学生数据,并将数据传递给视图。
**视图(View):**
这是一个简单的HTML模板示例,展示学生列表:
```html
<!-- student-list.html -->
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
...
<!-- 表格展示学生信息 -->
<table>
...
<!-- 分页导航 -->
<nav aria-label="Page navigation">
<ul class="pagination">
<li><a href="?pageNum=0" disabled>首页</a></li>
...
<li><a href="?pageNum=${totalPages-1}">尾页</a></li>
</ul>
</nav>
</table>
...
</body>
</html>
```