60_1简单的学生管理系统【功能实现(查看所有学生(分页)、修改和删除学生信息)】

功能实现

老师角色查看所有学生

获取学生列表和分页

分页

1.修改index.jsp

不能直接跳stuList.jsp,没数据

    <%if("teacher".equals(role)){%>
    <a href="TeaInitModifyServlet?username=<%=username%>">修改信息</a>
    <a href="GetStuListServlet?curPage=1">查看所有学生</a>
    <%}%>
2.新增GetStuListServlet

拿数据和分页

@WebServlet("/GetStuListServlet")
public class GetStuListServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        //获取当前页数
        int curPage = Integer.parseInt(request.getParameter("curPage"));

        //设置当前页的数据条数
        int count = 15;
        //计算偏移量
        int offset = (curPage-1)*count;
        //计算总页数
        int totalPage;
        try {
            int allCount = DBUtils.getAllCount("student");
            if(allCount % count == 0){
                totalPage = allCount/count;
            }else{
                totalPage = allCount/count + 1;
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        //从数据库获取学生的集合
        List<Student> students = null;
        try {
            students = DBUtils.commonQueryList(Student.class, "select * from student limit ?,?", offset, count);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        //处理学生集合
        List<StudentDto> studentDtos = DtoUtils.studentDtoListHandler(students);

        //将数据存入到请求对象中
        request.setAttribute("curPage",curPage);
        request.setAttribute("totalPage",totalPage);
        request.setAttribute("studentDtos",studentDtos);
        //request.setAttribute("students",students);直接传

        //跳转
        request.getRequestDispatcher("stuList.jsp").forward(request,response);

    }
}
修改DBUtils–分页

新增getAllCount()

    /**
     * 获取当前表的总条数
     */
    public static int getAllCount(String table) throws SQLException {
        Connection connection = getConnection();
        String sql = "select count(1) from " + table;
        PreparedStatement statement = connection.prepareStatement(sql);
        ResultSet resultSet = statement.executeQuery();
        if(resultSet.next()){
            int allCount = resultSet.getInt(1);
            return allCount;
        }
        return 0;
    }
修改Student–分页

做假数据,在实体类里面可以写main方法,插入操作

    //做分页的假数据
    public static void main(String[] args) {

        for (int i = 1; i < 100; i++) {
            String username = "xiaohei" + i;
            String password = "123123";
            String name = "小黑" + i;
            String sex = "man";
            int age = 23;
            String[] hobbies = {"football","basketball"};
            try {
                DBUtils.commonUpdate("insert into student(username,password,name,sex,age,hobbies) values(?,?,?,?,?,?)",username,password,name,sex,age, StringUtils.handleArray(hobbies));
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }

    }
新增StudentDto–处理学生信息

修饰前后

分包新增信息处理类,以方便工具类对学生的信息处理

package com.ckl.dto;

import com.ckl.pojo.Student;

public class StudentDto {

    private Student student;
    private String sex;
    private String hobbies;

//自动生成方法略
}
新增DtoUtils --处理学生信息

工具类,处理学生信息提升页面展示效果

public class DtoUtils {

    public static StudentDto studentDtoHandler(Student student){

        //处理学生的性别数据
        String sex = student.getSex();
        if("man".equals(sex)){
            sex = "男";
        }else if("woman".equals(sex)){
            sex = "女";
        }

        //处理学生的爱好数据
        String hobbies = student.getHobbies();
        hobbies = hobbies.replaceAll("football","足球");
        hobbies = hobbies.replaceAll("basketball","篮球");
        hobbies = hobbies.replaceAll("shop","购物");

        //创建StudentDto
        StudentDto studentDto = new StudentDto(student, sex, hobbies);
        return studentDto;
    }

    public static List<StudentDto> studentDtoListHandler(List<Student> students){

        List<StudentDto> studentDtos = new ArrayList<>();

        for (Student student : students) {
            StudentDto studentDto = studentDtoHandler(student);
            studentDtos.add(studentDto);
        }
        return studentDtos;
    }

}

3.stuList.jsp

直接获取数据库的学生数据

//未处理
List<Student> students = (List<Student>) request.getAttribute("students");

        <%for(Student student:students){%>
        <th><%=student.getUsername()%></th>
        <th><%=student.getName()%></th>
        <th><%=student.getSex()%></th>
        <th><%=student.getAge()%></th>
        <th><%=student.getHobbies()%></th>

添加学生信息处理后获取

//处理后
<%@ page import="java.util.List" %>
<%@ page import="com.qf.pojo.Student" %>
<%@ page import="com.qf.dto.StudentDto" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        List<StudentDto> studentDtos = (List<StudentDto>) request.getAttribute("studentDtos");
        int curPage = (int) request.getAttribute("curPage");
        int totalPage = (int) request.getAttribute("totalPage");
    %>
    <button οnclick="goIndex()">返回</button>
    <h1>学生列表页面</h1>

    <table border="1" width="500px">

        <tr>
            <th>账号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>爱好</th>
            <th>操作</th>
        </tr>
//获取学生信息展示
        <%for(StudentDto studentDto:studentDtos){%>
            <tr>
                <th><%=studentDto.getStudent().getUsername()%></th>
                <th><%=studentDto.getStudent().getName()%></th>
                <th><%=studentDto.getSex()%></th>
                <th><%=studentDto.getStudent().getAge()%></th>
                <th><%=studentDto.getHobbies()%></th>
                <th>
                    <a href="#">修改</a>
                    <a href="#">删除</a>
                </th>
            </tr>
        <%}%>
    </table>
//分页
    <a href="GetStuListServlet?curPage=1">首页</a>

    <%if(curPage > 1){%>
        <a href="GetStuListServlet?curPage=<%=curPage-1%>">上一页</a>
    <%}%>
    <%if(curPage < totalPage){%>
        <a href="GetStuListServlet?curPage=<%=curPage+1%>">下一页</a>
    <%}%>
    <a href="GetStuListServlet?curPage=<%=totalPage%>">尾页</a>

    <script type="text/javascript">
        function goIndex(){
            window.location = "index.jsp";
        }
    </script>
</body>
</html>

老师角色修改和删除学生信息

修改

老师修改学生信息

修改stuList.jsp

        <%for(StudentDto studentDto:studentDtos){%>
            <tr>
                <th>
                    <a href="StuInitModifyServlet?username=<%=studentDto.getStudent().getUsername()%>">修改</a>
                    <a href="StuDeleteServlet?username=<%=studentDto.getStudent().getUsername()%>">删除</a>
                </th>
            </tr>
        <%}%>

修改StuModifyServlet

获取角色

通过角色判断修改

学生需要更新Session、Cookie里的数据,跳转详情页面

老师跳转GetStuListServlet,需要更新数据【因为修改了需要刷新页面】

//        request.setAttribute("name",name);
//        response.addCookie(CookieUtils.createCookie("name",name,60*60*24*5));
//
//        response.sendRedirect("index.jsp");

		String role = (String) request.getSession().getAttribute("role");

        if("student".equals(role)){
            //更新Session里的数据
            request.getSession().setAttribute("name",name);
            //更新Cookie里的数据
            response.addCookie(CookieUtils.createCookie("name",name,60*60*24*5));
            //跳转详情页面
            response.sendRedirect("index.jsp");
        }else if("teacher".equals(role)){
            //跳转
            response.sendRedirect("GetStuListServlet?curPage=1");
        }
删除

老师删除学生信息

新增StuDeleteServlet

设置编码格式,获取请求中的账号,通过学生账号删除学生,最后跳转GetStuListServlet同时更新数据

注意:实际开发项目中是不会直接用delete,而是改状态,数据库有提到

@WebServlet("/StuDeleteServlet")
public class StuDeleteServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String username = request.getParameter("username");

        try {
            DBUtils.commonUpdate("delete from student where username=?",username);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        //跳转
        response.sendRedirect("GetStuListServlet?curPage=1");
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值