当前位置:   article > 正文

学生宿舍管理系统框架代码解读_学生宿舍管理实现代码讲解

学生宿舍管理实现代码讲解

学生宿舍管理系统框架代码解读

1、pojo层(实体层)

POJO = plain ordinary Java object = 普通Java对象
POJO:简单无规则Java对象,只有属性+get+set方法
存放实体的类,类中定义了多个类属性,并与数据库表的字段保持一致,一张表对应一个实体类。
主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。
如果想要对数据库进行一些操作(比如说读取)的话,就要先写实体层

1.1 Dormitory、Student实体类

1.1.1 Dormitory

这段代码定义了一个 Dormitory(宿舍)类,具有以下属性:

  1. id:表示宿舍的唯一标识符。
  2. tag:表示宿舍的标签。
  3. contain:表示宿舍可容纳的人数。
  4. note:表示宿舍的备注信息。
  5. buildingId:表示宿舍所属的楼栋的唯一标识符。
  6. buildingTag:表示宿舍所属的楼栋的标签。
  7. buildingGender:表示宿舍所属的楼栋的性别。
  8. buildingNote:表示宿舍所属的楼栋的备注信息。

该类提供了多个构造函数,允许在创建对象时传入不同的参数。使用 @Data 注解可以自动生成所有属性的 gettersetter 方法,以及 toStringequalshashCode 方法。@NoArgsConstructor 注解生成一个无参的构造函数,@AllArgsConstructor 注解生成一个包含所有属性的构造函数。

1.1.2 Student

这段代码定义了一个 Student(学生)类,具有以下属性:

  1. id:表示学生的唯一标识符。
  2. name:表示学生的姓名。
  3. age:表示学生的年龄。
  4. major:表示学生的专业。
  5. class_:表示学生的班级。
  6. phone:表示学生的电话号码。
  7. gender:表示学生的性别。

此外,还有以下与宿舍相关的属性:

  1. dorId:表示学生所居住的宿舍的唯一标识符。
  2. dorTag:表示学生所居住的宿舍的标签。
  3. buildingId:表示学生所居住的宿舍所属的楼栋的唯一标识符。
  4. buildingTag:表示学生所居住的宿舍所属的楼栋的标签。

该类提供了多个构造函数,允许在创建对象时传入不同的参数。使用 @Data 注解可以自动生成所有属性的 gettersetter 方法,以及 toStringequalshashCode 方法。@NoArgsConstructor 注解生成一个无参的构造函数,@AllArgsConstructor 注解生成一个包含所有属性的构造函数。

1.2query包

存放查询各种信息的类
例如:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserQuery {
    private Integer page;
    private Integer limit;
    private String username;
    @Override
    public String toString() {
        return "UserQuery{" +
                "page=" + page +
                ", limit=" + limit +
                ", name='" + username + '\'' +
                '}';
    }
}
说明:
@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,省去了在pojo层实体类中需要实现的get、set,此外还提供了equals、canEqual、hashCode、toString 方法。
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法。
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法。

1.private Integer page;为页数。
2.private Integer limit;为每页最多显示结果的数量,如每页显示20个学生信息。
3.private String username;为管理员需要查询(搜索)的属性,如搜索学生姓名。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
此层其他类与上述大同小异

2、filter层(过滤层)

用来做一些拦截的任务, 在Servlet接受请求之前,做一些事情,如果不满足限定,可以拒绝进入Servlet

2.1 EncodingFilter类

EncodingFilter过滤器,它使用@WebFilter注解来指定过滤器的名称和URL模式。具体解释如下:

  1. @WebFilter(filterName = "encoding", urlPatterns = "/*"):这行代码表明这是一个过滤器,并且它的名字是"encoding"。它将应用于所有的URL模式,因为"/*"匹配所有的URL路径。

  1. public void init(FilterConfig filterConfig) throws ServletException:这是过滤器的初始化方法,它在过滤器被创建时被调用。在这个过滤器中,这个方法没有实际操作。

  1. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException:这个方法定义了过滤器的主要逻辑。它首先将ServletRequest强制转换为HttpServletRequest类型,并将请求的字符编码设置为UTF-8,以确保请求的参数和数据以UTF-8编码进行处理。

  1. HttpSession session = request.getSession();:这行代码获取当前请求的HttpSession对象,以便在需要时对会话进行操作。但是,在当前代码中,这个会话对象并没有被使用。

  1. filterChain.doFilter(servletRequest, servletResponse);:这行代码表示将请求和响应传递给过滤器链中的下一个过滤器。这是确保过滤器链中的下一个过滤器或最终的Servlet能够接收请求并进行处理。

  1. public void destroy():这个方法在过滤器被销毁时被调用。在这个过滤器中,这个方法也没有实际操作。

总体来说,这个过滤器的主要作用是确保所有的HTTP请求的字符编码都被设置为UTF-8,以防止乱码问题。此外,它还可以获取当前请求的会话对象,但是在代码中并没有对会话进行任何实际操作。

2.2 LoginFilter类

基于Java Servlet的过滤器(Filter),用于实现用户登录验证功能。下面是对代码的功能和作用的解释:

  1. @WebFilter 注解用于声明该类是一个过滤器,并指定了过滤器的名称为 “login”,以及需要过滤的 URL 模式为 “/*”,即拦截所有的请求。

  1. doFilter 方法是过滤器的核心方法,用于实现过滤逻辑。在这个方法中,首先通过强制类型转换将 servletRequestservletResponse 转换为 HttpServletRequestHttpServletResponse,便于操作和获取请求信息。

  1. 首先,代码检查了请求的 servletPathmethod,以确定请求的类型和路径。

  1. 如果请求路径是特定的静态资源文件(如图片、字体、JavaScript 文件、CSS 文件)或者是一些特定的页面(如登录页面、注册页面、失败页面),或者是请求验证验证码的路径,或者是用户请求的登录或注册操作,那么直接放行该请求。

  1. 否则,代码尝试从当前会话(session)中获取已经登录的用户对象。如果用户对象为空(即用户未登录),则重定向到登录页面。这样可以确保未经过身份验证的用户无法访问受限资源。

  1. 如果用户已登录或者是上述特殊情况,那么请求将继续传递到处理链中的下一个过滤器(如果有的话),或者传递给相应的 Servlet 处理。

总的来说,这段代码实现了一个简单的登录过滤器,用于限制未登录用户对特定页面或资源的访问,并确保用户在访问受限资源之前进行了登录操作。

3、dao层(数据访问)

把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。

Dao是数据访问层,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。

Dao层Impl实现方法

3.1 IUserDao(用户数据访问对象(DAO)的基本操作)

这段代码是一个 Java 接口,定义了用户数据访问对象(DAO)的基本操作。下面是对代码的解释:

  1. User login(String name, String password): 该方法用于根据用户名和密码进行用户登录验证。它接受用户名和密码作为参数,并返回一个用户对象,如果验证成功则返回用户对象,否则返回 null。

  1. int register(String name,String password,String nickname): 这个方法用于注册新用户。它接受用户名、密码和昵称作为参数,并返回一个整数值来表示注册操作的结果,通常是表示注册是否成功的标志。

  1. List<User> selectByPage(UserQuery userQuery): 这个方法用于根据特定的查询条件查询用户列表,并返回一个用户对象的列表。参数 UserQuery 是一个查询对象,可能包含一些查询条件,如用户名、状态等。

  1. Integer selectTotalCount(UserQuery userQuery): 这个方法用于根据特定的查询条件查询满足条件的用户总数。参数 UserQuery 是一个查询对象,用于指定查询条件。

  1. int deleteById(int id): 该方法用于根据用户ID删除特定的用户。它接受用户ID作为参数,并返回一个整数值来表示删除操作的结果,通常是表示删除是否成功的标志。

  1. int updateStatus(int id, int status): 这个方法用于更新用户的状态。它接受用户ID和状态作为参数,并返回一个整数值来表示更新操作的结果,通常是表示更新是否成功的标志。

  1. int changePassword(int userId,String oldPassword,String newPassword): 该方法用于修改用户的密码。它接受用户ID、旧密码和新密码作为参数,并返回一个整数值来表示修改密码操作的结果,通常是表示修改是否成功的标志。

总的来说,这个接口定义了用户数据访问对象的基本操作,包括登录验证、注册、查询、删除、更新用户状态以及修改密码等功能。具体的实现将在实现该接口的类中完成。

3.2 IStuDorDao(定义与学生所住宿舍(StuDor)相关的数据访问操作)

这段代码是一个接口(Interface),用于定义与学生宿舍(StuDor)相关的数据访问操作。下面是对代码的解释:

  1. package com.xn.dormitory.dao;:指定了代码所在的包名为 com.xn.dormitory.dao。

  1. import com.xn.dormitory.pojo.StuDor;:导入了 com.xn.dormitory.pojo 包中的 StuDor 类,用于在接口中定义与 StuDor 类相关的方法。

  1. public interface IStuDorDao:定义了一个公共接口 IStuDorDao。

  1. int add(StuDor stuDor);:声明了一个名为 add 的抽象方法,该方法接受一个 StuDor 对象作为参数,并返回一个整型值。

  1. int delete(StuDor stuDor);:声明了一个名为 delete 的抽象方法,该方法接受一个 StuDor 对象作为参数,并返回一个整型值。

  1. int change(StuDor stuDor);:声明了一个名为 change 的抽象方法,该方法接受一个 StuDor 对象作为参数,并返回一个整型值。

这个接口提供了对学生宿舍信息进行增加、删除和修改的操作,具体的实现需要在接口的实现类中完成。根据实际情况,可以创建一个实现了该接口的类,并提供具体的数据库操作来完成对学生宿舍信息的增删改操作。

3.3 IStudentDao(定义了对学生(Student)信息进行数据库操作的接口)

这段代码是一个接口文件,定义了对学生(Student)信息进行数据库操作的接口。下面是对代码的功能和作用的解释:

  1. int[] queryGender(); - 该方法用于查询学生表中不同性别的人数,返回一个包含不同性别人数的整型数组。

  1. List<Student> selectByPage(StudentQuery studentQuery); - 该方法用于根据指定条件查询学生信息,并支持分页查询,返回一个学生信息列表。

  1. Integer selectTotalCount(StudentQuery studentQuery); - 该方法用于根据指定条件统计满足条件的学生总数,并返回一个整型值。

  1. int deleteById(int id); - 该方法用于根据学生的ID从数据库中删除对应的学生信息,并返回受影响的行数。

  1. int add(Student student); - 该方法用于向数据库中添加新的学生信息,并返回受影响的行数。

  1. Student selectById(int id); - 该方法用于根据学生的ID从数据库中查询对应的学生信息,并返回一个学生对象。

  1. int update(Student student); - 该方法用于更新数据库中指定学生的信息,并返回受影响的行数。

  1. List<Student> selectHasCheckIn(StudentQuery studentQuery); - 该方法用于查询已经办理入住手续的学生信息列表。

  1. List<Student> selectNotCheckIn(StudentQuery studentQuery); - 该方法用于查询尚未办理入住手续的学生信息列表。

  1. int countHasCheckIn(StudentQuery studentQuery); - 该方法用于统计已经办理入住手续的学生数量。

  1. int countNotCheckIn(StudentQuery studentQuery); - 该方法用于统计尚未办理入住手续的学生数量。

这些方法定义了对学生信息进行数据库操作的基本功能,实现了学生信息的增删改查以及相关统计功能。实际的实现可能在一个实现了该接口的类中进行。

3.4 INoticeDao(公告(Notice)相关的数据访问对象(DAO))

这段代码是一个接口定义,命名为 INoticeDao,它描述了一个公告(Notice)相关的数据访问对象(DAO)。下面是对代码的功能和方法的解释:

  1. int add(Notice notice): 这个方法用于向数据库中添加新的公告。它接受一个 Notice 对象作为参数,并返回一个整数值,表示插入操作影响的行数。

  1. int deleteById(int n_id): 这个方法用于根据公告的 ID 从数据库中删除公告。它接受一个整型参数 n_id 作为公告的唯一标识符,并返回一个整数值,表示删除操作影响的行数。

  1. List<Notice> loginNotice(String n_state): 这个方法用于获取特定状态的公告列表。它接受一个字符串参数 n_state 作为公告的状态,并返回一个 Notice 对象的列表,表示符合条件的公告列表。

  1. Notice selectById(int n_id): 这个方法用于根据公告的 ID 从数据库中查询公告。它接受一个整型参数 n_id 作为公告的唯一标识符,并返回一个 Notice 对象,表示查询到的公告。

  1. int updateStatus(int n_id, String n_state): 这个方法用于更新公告的状态。它接受一个整型参数 n_id 作为公告的唯一标识符,以及一个字符串参数 n_state 作为新的公告状态,并返回一个整数值,表示更新操作影响的行数。

  1. int update(Notice notice): 这个方法用于更新已有的公告信息。它接受一个 Notice 对象作为参数,并返回一个整数值,表示更新操作影响的行数。

  1. List<Notice> selectByPage(NoticeQuery noticeQuery): 这个方法用于根据公告查询条件查询符合条件的公告列表。它接受一个 NoticeQuery 对象作为参数,并返回一个 Notice 对象的列表,表示符合条件的公告列表。

  1. Integer selectTotalCount(NoticeQuery noticeQuery): 这个方法用于根据公告查询条件查询符合条件的公告总数。它接受一个 NoticeQuery 对象作为参数,并返回一个 Integer 值,表示符合条件的公告总数。

该接口提供了一系列方法来实现公告的增删改查功能,并且提供了根据条件查询公告列表和总数的功能。接口中的方法命名和参数设计清晰,可以方便地进行公告相关数据的操作。

3.5 IManagerDao(定义与管理人员|宿管(Manager)相关的数据库操作)

这段代码是一个接口文件 IManagerDao,用于定义与管理人员(Manager)相关的数据库操作。下面是对代码的解释:

  1. int[] queryGender();:这个方法可能用于从数据库中查询性别信息,返回一个包含不同性别数量的数组。具体实现可能会统计不同性别的管理人员数量等。

  1. List<Manager> selectByPage(ManagerQuery managerQuery);:这个方法用于根据给定的查询条件 ManagerQuery 对数据库中的管理人员进行分页查询,并返回符合条件的管理人员列表。

  1. Integer selectTotalCount(ManagerQuery managerQuery);:这个方法用于根据给定的查询条件 ManagerQuery 统计符合条件的管理人员总数并返回。

  1. int deleteById(int id);:这个方法用于根据给定的管理人员 ID 从数据库中删除相应的管理人员信息。

  1. int add(Manager manager);:这个方法用于向数据库中添加新的管理人员信息,manager 参数是待添加的管理人员对象。

  1. Manager selectById(int id);:这个方法用于根据给定的管理人员 ID 从数据库中查询相应的管理人员信息,并返回一个 Manager 对象。

  1. int update(Manager manager);:这个方法用于更新数据库中的管理人员信息,根据给定的 manager 对象进行更新操作。

  1. List<Manager> selectAll();:这个方法用于从数据库中查询所有的管理人员信息,并以列表的形式返回。

这个接口提供了一组与管理人员相关的数据库操作方法的抽象定义。具体的实现可能在相应的实现类中,针对具体的数据库类型和结构,实现这些接口方法,并进行相应的数据库操作。

3.6 IDormitoryDao(定义了对宿舍(Dormitory)实体的数据库操作)

这段代码是一个 Java 接口文件,定义了对宿舍(Dormitory)实体的数据库操作。下面是对代码的功能和作用的解释:

  1. List<Dormitory> selectByPage(DormitoryQuery dormitoryQuery):根据给定的 DormitoryQuery 对象中的条件,从数据库中分页查询宿舍信息,并返回一个宿舍对象列表。

  1. Integer selectTotalCount(DormitoryQuery dormitoryQuery):根据给定的 DormitoryQuery 对象中的条件,查询满足条件的宿舍总数,并返回总数值。

  1. int deleteById(int id):根据给定的宿舍ID,在数据库中删除相应的宿舍信息。

  1. int add(Dormitory dormitory):向数据库中添加一个新的宿舍信息,传入一个 Dormitory 对象作为参数。

  1. Dormitory selectById(int id):根据给定的宿舍ID,从数据库中查询对应的宿舍信息,并返回一个 Dormitory 对象。

  1. int update(Dormitory dormitory):根据给定的宿舍对象,更新数据库中对应的宿舍信息。

  1. List<Dormitory> selectByBuilding(int id):根据给定的楼栋ID,从数据库中查询相应楼栋的所有宿舍信息,并返回一个宿舍对象列表。

总的来说,该接口定义了对宿舍信息进行增删改查的操作,包括根据不同的查询条件进行查询,并提供了分页查询功能。这些方法可以让其他类或组件对数据库中的宿舍信息进行灵活的操作。

3.7 IBuildingManagerDao(宿舍楼管理员(BuildingManager)进行数据库操作的方法)

这段代码是一个接口文件,定义了一个名为 IBuildingManagerDao 的接口,用于对宿舍楼管理员(BuildingManager)进行增加、删除和修改操作。以下是对代码的解释:

  1. package com.xn.dormitory.dao; - 这个语句指定了该文件所属的包名,该文件位于 com.xn.dormitory.dao 包中。

  1. import com.xn.dormitory.pojo.BuildingManager; - 这个语句导入了一个名为 BuildingManager 的类或者接口,该类或接口用于表示宿舍楼管理员的信息。这个 BuildingManager 类可能会包含有关宿舍楼管理员的属性和方法。

  1. public interface IBuildingManagerDao - 这个语句定义了一个名为 IBuildingManagerDao 的接口。接口是一种抽象类型,它仅包含方法的特征而没有方法的实现。

  1. int add(BuildingManager buildingManager); - 这个语句声明了一个名为 add 的抽象方法,该方法接受一个 BuildingManager 类型的参数,并且返回一个整数类型的值。

  1. int delete(BuildingManager buildingManager); - 这个语句声明了一个名为 delete 的抽象方法,该方法接受一个 BuildingManager 类型的参数,并且返回一个整数类型的值。

  1. int change(BuildingManager buildingManager); - 这个语句声明了一个名为 change 的抽象方法,该方法接受一个 BuildingManager 类型的参数,并且返回一个整数类型的值。

这个接口中的方法声明了对宿舍楼管理员信息进行添加、删除和修改操作的基本行为。具体的实现代码应该在这个接口的实现类中完成,即在其他类中提供相应的方法实现。

3.8 IBuildingDao(定义对建筑物(Building)对象进行数据库操作的方法)

这段代码是一个接口(Interface),名为 IBuildingDao,用于定义对建筑物(Building)对象进行数据库操作的方法。下面是对代码中方法的功能和作用的解释:

  1. List<BuildingAllocation> queryAllocation():用于从数据库中查询建筑物分配情况,并以列表的形式返回结果。

  1. List<BuildingAllocation> queryStudentNum():用于从数据库中查询建筑物内学生数量的情况,并以列表的形式返回结果。

  1. List<Building> selectByPage(BuildingQuery buildingQuery):根据提供的 BuildingQuery 对象的参数,从数据库中分页查询建筑物信息,并以列表的形式返回结果。

  1. Integer selectTotalCount(BuildingQuery buildingQuery):根据提供的 BuildingQuery 对象的参数,查询满足条件的建筑物总数,并以整数形式返回结果。

  1. int deleteById(int id):根据提供的建筑物id,从数据库中删除相应的建筑物数据。

  1. int add(Building building):将提供的建筑物对象插入到数据库中。

  1. Building selectById(int id):根据提供的建筑物id,从数据库中查询相应的建筑物对象。

  1. int update(Building building):根据提供的建筑物对象,更新数据库中相应的建筑物数据。

  1. List<Building> selectAll(String gender):根据提供的性别(gender)参数,从数据库中查询所有符合性别条件的建筑物,并以列表的形式返回结果。

这个接口提供了一系列对建筑物对象进行数据库操作的抽象方法,具体的实现可以在实现了该接口的类中完成。通常情况下,这样的接口用于定义数据访问对象(DAO),用于实现数据库操作与业务逻辑的解耦。

4、Service层(业务逻辑或者服务层)

Service层:被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。
Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。
简单来说就是Dao层是底层,具体到某一张表的增删查改,可以理解为有多少张表就有多少个Dao层(实体类),而Service成可以理解为是Dao层的 “上司”,通过Service层来控制Dao层。
通过Service层去调用Dao层,不仅可以解耦合,而且可以增加代码的拓展性。

4.1 IUserService(操作员|超级管理员)

这段代码是一个 Java 接口 IUserService,用于定义用户服务的功能接口。以下是对代码的详细解释:

  1. User 类是一个用于表示用户的数据模型类,其中包含用户的基本信息。

  2. UserQuery 类是一个用于查询用户的查询条件模型类,其中包含了查询用户所需的条件信息。

  3. LayUITableResult 类是一个用于封装 LayUI 表格数据的工具类,用于返回符合 LayUI 表格数据格式的结果。

  4. 该接口定义了以下方法,用于提供不同的功能给控制器层使用:

    • login 方法用于验证用户登录,需要传入用户名和密码作为参数,返回用户对象。
    • register 方法用于注册新用户,需要传入用户名、密码和昵称作为参数,返回注册结果的布尔值。
    • selectByPage 方法用于根据用户查询条件查询用户信息,并按分页的方式返回查询结果。
    • deleteById 方法用于根据用户ID删除特定用户,需要传入用户ID作为参数,返回删除结果的布尔值。
    • deleteAll 方法用于根据一组用户ID删除多个用户,需要传入一组用户ID作为参数,返回删除结果的布尔值。
    • updateStatus 方法用于更新用户状态,需要传入用户ID和新的状态作为参数,返回更新结果的布尔值。
    • changePassword 方法用于修改用户密码,需要传入用户ID、旧密码和新密码作为参数,返回修改结果的布尔值。

总的来说,该接口定义了用户服务层需要实现的一系列功能,包括用户登录验证、用户注册、用户信息查询、用户删除、用户状态更新和用户密码修改等功能。具体的实现可以根据业务需求在对应的实现类中完成。

4.3.1 UserServiceImpl(操作员相关的业务逻辑操作)

这段代码是 UserServiceImpl 类的具体实现部分。该类实现了 IUserService 接口,提供了与用户相关的业务逻辑操作。以下是对代码的详细解释:

  1. UserServiceImpl 类中声明了一个 IUserDao 接口的实例 userDao,通过 new UserDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行用户相关的增删改查操作。

  2. login 方法用于实现用户登录功能,调用 userDao.login(name, password) 方法从数据库中查询用户信息。

  3. register 方法用于实现用户注册功能,调用 userDao.register(name, password, nickname) 方法向数据库中插入用户信息。

  4. selectByPage 方法用于实现分页查询用户信息的功能,调用 userDao.selectByPage(userQuery) 方法从数据库中分页查询用户信息。

  5. deleteById 方法用于实现根据用户ID删除用户信息的功能,调用 userDao.deleteById(id) 方法从数据库中删除指定ID的用户信息。

  6. deleteAll 方法用于实现批量删除用户信息的功能,根据传入的ID数组,循环调用 userDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除用户信息。

  7. updateStatus 方法用于实现更新用户状态的功能,调用 userDao.updateStatus(id, status) 方法更新指定ID的用户状态信息。

  8. changePassword 方法用于实现修改用户密码的功能,调用 userDao.changePassword(userId, oldPassword, newPassword) 方法更新用户的登录密码信息。

总的来说,UserServiceImpl 类实现了与用户相关的业务逻辑操作,通过调用 userDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值表示操作是否成功。

4.2 IStuDorService(学生所住宿舍)

这段代码是一个 Java 接口 IStuDorService,它定义了三个抽象方法,分别是 addchangedelete,每个方法都接受一个 StuDor 类型的参数,并返回一个布尔值。下面是对代码的详细解释:

  1. IStuDorService 接口声明了三个抽象方法,它们分别是:

    • add(StuDor stuDor):用于向系统中添加一个新的 StuDor 对象,可能会返回布尔值来表示添加操作是否成功。
    • change(StuDor stuDor):用于修改现有的 StuDor 对象,可能会返回布尔值来表示修改操作是否成功。
    • delete(StuDor stuDor):用于从系统中删除指定的 StuDor 对象,可能会返回布尔值来表示删除操作是否成功。
  2. StuDor 是一个 POJO 类(Plain Old Java Object),代表学生宿舍。它可能包含学生宿舍的各种属性,例如宿舍号、楼栋信息、学生信息等。

  3. 这些方法的具体实现将由接口的实现类来完成。通常,根据具体的业务逻辑,实现类将根据传入的 StuDor 对象执行相应的数据库操作或其他操作,比如将数据存储到数据库中,更新数据库中的数据,或者从数据库中删除数据。

总的来说,这个接口提供了一组对学生宿舍信息进行操作的抽象方法,这些方法可以让其他类通过实现这些方法来实现具体的学生宿舍信息管理功能。

4.2.1 StuDorServiceImpl(学生宿舍相关的业务逻辑操作)

这段代码是 StuDorServiceImpl 类的具体实现部分。该类实现了 IStuDorService 接口,提供了与学生宿舍相关的业务逻辑操作。以下是对代码的详细解释:

  1. StuDorServiceImpl 类中声明了一个 IStuDorDao 接口的实例 stuDorDao,通过 new StuDorDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行学生宿舍相关的增删改操作。

  2. add 方法用于实现添加学生宿舍信息的功能,调用 stuDorDao.add(stuDor) 方法向数据库中插入学生宿舍信息。

  3. change 方法用于实现修改学生宿舍信息的功能,调用 stuDorDao.change(stuDor) 方法更新数据库中对应的学生宿舍信息。

  4. delete 方法用于实现删除学生宿舍信息的功能,调用 stuDorDao.delete(stuDor) 方法从数据库中删除对应的学生宿舍信息。

总的来说,StuDorServiceImpl 类实现了与学生宿舍相关的业务逻辑操作,通过调用 stuDorDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值表示操作是否成功。

4.3 IStudentService(学生)

这段代码是一个 Java 接口 IStudentService,定义了一系列方法,用于提供与学生信息相关的服务功能。下面是对代码的详细解释:

  1. int[] queryGender(): 该方法用于查询性别信息,并返回一个包含不同性别的整数数组。

  2. LayUITableResult selectByPage(StudentQuery studentQuery): 该方法用于根据传入的学生查询对象 studentQuery 进行分页查询,并返回一个 LayUI 表格结果对象,用于在前端展示分页查询的结果。

  3. boolean deleteById(int id): 该方法用于根据学生的 ID 删除指定的学生信息,并返回一个布尔值表示删除操作的结果。

  4. boolean add(Student student): 该方法用于向系统中添加一个新的学生信息,并返回一个布尔值表示添加操作的结果。

  5. Student selectById(int id): 该方法用于根据学生的 ID 查询并返回对应的学生信息。

  6. boolean update(Student student): 该方法用于更新指定学生的信息,并返回一个布尔值表示更新操作的结果。

  7. boolean deleteAll(String[] ids): 该方法用于批量删除一组指定 ID 的学生信息,并返回一个布尔值表示批量删除操作的结果。

  8. LayUITableResult selectHasCheckIn(StudentQuery studentQuery): 该方法用于查询已经办理入住的学生信息,并返回一个 LayUI 表格结果对象,用于在前端展示查询结果。

  9. LayUITableResult selectNotCheckIn(StudentQuery studentQuery): 该方法用于查询还未办理入住的学生信息,并返回一个 LayUI 表格结果对象,用于在前端展示查询结果。

  10. int countHasCheckIn(StudentQuery studentQuery): 该方法用于统计已经办理入住的学生数量,并返回一个整数值表示统计结果。

  11. int countNotCheckIn(StudentQuery studentQuery): 该方法用于统计还未办理入住的学生数量,并返回一个整数值表示统计结果。

总的来说,这个接口定义了学生信息相关的一系列操作,包括查询、删除、添加、更新以及统计等功能,旨在为上层的 Controller 层提供这些功能的接口定义。

4.3.1 StudentServiceImpl(学生相关的业务逻辑操作)

这段代码是 StudentServiceImpl 类的具体实现部分。该类实现了 IStudentService 接口,提供了与学生相关的业务逻辑操作。以下是对代码的详细解释:

  1. StudentServiceImpl 类中声明了一个 IStudentDao 接口的实例 studentDao,通过 new StudentDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行学生相关的增删改查操作。

  2. queryGender 方法用于查询数据库中学生的性别信息,调用 studentDao.queryGender() 方法从数据库中查询学生的性别信息。

  3. selectByPage 方法用于实现分页查询学生信息的功能,调用 studentDao.selectByPage(studentQuery) 方法从数据库中分页查询学生信息。

  4. deleteById 方法用于实现根据学生ID删除学生信息的功能,调用 studentDao.deleteById(id) 方法从数据库中删除指定ID的学生信息。

  5. add 方法用于实现添加学生信息的功能,调用 studentDao.add(student) 方法向数据库中插入学生信息。

  6. selectById 方法用于根据学生ID查询学生信息,调用 studentDao.selectById(id) 方法从数据库中查询指定ID的学生信息。

  7. update 方法用于实现修改学生信息的功能,调用 studentDao.update(student) 方法更新数据库中对应的学生信息。

  8. deleteAll 方法用于实现批量删除学生信息的功能,根据传入的ID数组,循环调用 studentDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除学生信息。

  9. selectHasCheckIn 方法用于查询已办理入住手续的学生信息。

  10. selectNotCheckIn 方法用于查询未办理入住手续的学生信息。

  11. countHasCheckIn 方法用于统计已办理入住手续的学生数量。

  12. countNotCheckIn 方法用于统计未办理入住手续的学生数量。

总的来说,StudentServiceImpl 类实现了与学生相关的业务逻辑操作,通过调用 studentDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值或包含查询结果的 LayUITableResult 对象。

4.4 INoticeService(公告)

这段代码是一个 Java 接口 INoticeService,它定义了一些公共的方法。下面是对代码的详细解释:

  1. LayUITableResult selectByPage(NoticeQuery noticeQuery):这个方法用于根据传入的 NoticeQuery 对象进行分页查询,并返回一个包含查询结果的 LayUITableResult 对象。LayUITableResult 可能是一个自定义的用于返回分页结果的类。

  2. boolean deleteById(int n_id):这个方法用于根据传入的公告ID n_id 执行删除操作,并返回一个布尔值表示操作是否成功。

  3. boolean add(Notice notice):这个方法用于添加新的公告,接受一个 Notice 对象作为参数,并返回一个布尔值表示操作是否成功。

  4. List<Notice> loginNotice(String n_state):这个方法用于根据公告的状态 n_state 查询符合条件的公告,并返回一个公告列表。

  5. Notice selectById(int n_id):这个方法用于根据传入的公告ID n_id 查询特定的公告,并返回一个 Notice 对象。

  6. boolean updateStatus(int n_id, String n_state):这个方法用于根据公告ID n_id 更新公告的状态为传入的 n_state 值,并返回一个布尔值表示操作是否成功。

  7. boolean update(Notice notice):这个方法用于更新公告,接受一个 Notice 对象作为参数,并返回一个布尔值表示操作是否成功。

  8. boolean deleteAll(String[] ids):这个方法用于批量删除公告,接受一个字符串数组 ids 作为参数,包含需要删除的公告ID,并返回一个布尔值表示操作是否成功。

总的来说,这个接口定义了对公告信息进行查询、添加、更新和删除操作的方法。它提供了一些常见的公告管理功能的抽象,具体的实现可以在该接口的实现类中完成。

4.4.1 INoticeServiceImpl(通知公告相关的业务逻辑操作)

这段代码是 INoticeServiceImpl 类的具体实现部分。该类实现了 INoticeService 接口,提供了与通知公告相关的业务逻辑操作。以下是对代码的详细解释:

  1. INoticeServiceImpl 类中声明了一个 INoticeDao 接口的实例 noticeDao,通过 new INoticeDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行通知公告相关的增删改查操作。

  2. selectByPage 方法用于实现分页查询通知公告信息的功能,调用 noticeDao.selectByPage(noticeQuery) 方法从数据库中分页查询通知公告信息。

  3. deleteById 方法用于实现根据通知公告ID删除通知公告信息的功能,调用 noticeDao.deleteById(n_id) 方法从数据库中删除指定ID的通知公告信息。

  4. add 方法用于实现添加通知公告信息的功能,调用 noticeDao.add(notice) 方法向数据库中插入通知公告信息。

  5. loginNotice 方法用于获取特定状态的通知公告信息,调用 noticeDao.loginNotice(n_state) 方法从数据库中获取特定状态的通知公告信息。

  6. selectById 方法用于根据通知公告ID查询通知公告信息,调用 noticeDao.selectById(n_id) 方法从数据库中查询指定ID的通知公告信息。

  7. updateStatus 方法用于更新通知公告的状态信息,调用 noticeDao.updateStatus(n_id, n_state) 方法更新数据库中对应的通知公告状态信息。

  8. update 方法用于实现修改通知公告信息的功能,调用 noticeDao.update(notice) 方法更新数据库中对应的通知公告信息。

  9. deleteAll 方法用于实现批量删除通知公告信息的功能,根据传入的ID数组,循环调用 noticeDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除通知公告信息。

总的来说,INoticeServiceImpl 类实现了与通知公告相关的业务逻辑操作,通过调用 noticeDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值或包含查询结果的 LayUITableResult 对象。

4.5 IManagerService(管理员|宿管)

这段代码是一个接口 IManagerService,定义了一系列方法用于管理管理员(Manager)对象的服务操作。下面是对代码的详细解释:

  1. int[] queryGender();

    • 该方法用于查询性别信息,并返回一个包含性别信息的整型数组。
  2. LayUITableResult selectByPage(ManagerQuery managerQuery);

    • 该方法用于按页面查询管理员信息,并返回一个 LayUITableResult 对象,其中包含了满足查询条件的管理员信息列表以及分页信息。
  3. boolean deleteById(int id);

    • 该方法用于根据给定的管理员 id 删除特定管理员,并返回一个布尔值表示操作是否成功。
  4. boolean add(Manager manager);

    • 该方法用于添加新的管理员信息,并返回一个布尔值表示操作是否成功。
  5. Manager selectById(int id);

    • 该方法用于根据给定的管理员 id 查询并返回相应的管理员对象。
  6. boolean update(Manager manager);

    • 该方法用于更新特定管理员的信息,并返回一个布尔值表示操作是否成功。
  7. boolean deleteAll(String[] ids);

    • 该方法用于批量删除一组管理员,参数为管理员 id 的字符串数组,返回一个布尔值表示操作是否成功。
  8. List<Manager> selectAll();

    • 该方法用于获取所有管理员的信息,并返回一个包含所有管理员对象的列表。

该接口定义了对管理员信息进行操作的基本功能,包括查询、删除、添加、更新等操作。具体的实现将会在实现了该接口的类中完成。

4.5.1

这段代码是 ManagerServiceImpl 类的具体实现部分。该类实现了 IManagerService 接口,提供了与管理员信息相关的业务逻辑操作。以下是对代码的详细解释:

  1. ManagerServiceImpl 类中声明了一个 IManagerDao 接口的实例 managerDao,通过 new ManagerDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行管理员信息相关的增删改查操作。

  2. queryGender 方法用于查询不同性别的管理员数量,调用 managerDao.queryGender() 方法从数据库中查询不同性别的管理员数量。

  3. selectByPage 方法用于实现分页查询管理员信息的功能,调用 managerDao.selectByPage(managerQuery) 方法从数据库中分页查询管理员信息。

  4. deleteById 方法用于实现根据管理员ID删除管理员信息的功能,调用 managerDao.deleteById(id) 方法从数据库中删除指定ID的管理员信息。

  5. add 方法用于实现添加管理员信息的功能,调用 managerDao.add(manager) 方法向数据库中插入管理员信息。

  6. selectById 方法用于根据管理员ID查询管理员信息,调用 managerDao.selectById(id) 方法从数据库中查询指定ID的管理员信息。

  7. update 方法用于实现修改管理员信息的功能,调用 managerDao.update(manager) 方法更新数据库中对应的管理员信息。

  8. deleteAll 方法用于实现批量删除管理员信息的功能,根据传入的ID数组,循环调用 managerDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除管理员信息。

  9. selectAll 方法用于获取所有管理员信息,调用 managerDao.selectAll() 方法从数据库中获取所有管理员信息。

总的来说,ManagerServiceImpl 类实现了与管理员信息相关的业务逻辑操作,通过调用 managerDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值、包含查询结果的列表或包含查询结果的 LayUITableResult 对象。

4.6 IDormitoryService(宿舍)

这段代码是一个 Java 接口 IDormitoryService,用于定义与宿舍相关的服务功能。下面是对代码的详细解释:

  1. LayUITableResult selectByPage(DormitoryQuery dormitoryQuery):根据传入的 DormitoryQuery 对象进行分页查询宿舍信息,并以 LayUI 表格数据格式返回查询结果。

  2. boolean deleteById(int id):根据传入的宿舍 ID,删除对应的宿舍信息,并返回删除操作的结果(成功或失败)。

  3. boolean add(Dormitory dormitory):向数据库中添加一个新的宿舍信息,传入一个 Dormitory 对象作为参数,表示要添加的宿舍信息,并返回添加操作的结果(成功或失败)。

  4. Dormitory selectById(int id):根据传入的宿舍 ID,查询并返回对应的宿舍信息,返回一个 Dormitory 对象。

  5. boolean update(Dormitory dormitory):根据传入的 Dormitory 对象更新数据库中对应宿舍的信息,返回更新操作的结果(成功或失败)。

  6. boolean deleteAll(String[] ids):根据传入的宿舍 ID 数组,批量删除对应的宿舍信息,并返回删除操作的结果(成功或失败)。

  7. List<Dormitory> selectByBuilding(Integer buildingId):根据传入的建筑物 ID,查询该建筑物下的所有宿舍信息,并返回一个包含宿舍对象的列表。

这个接口列出了一组用于实现宿舍管理系统中的各种操作的方法,包括分页查询、单个宿舍信息的增删改查,以及根据建筑物 ID 查询相关宿舍信息的功能。通常,这些方法将在具体的实现类中根据业务逻辑进行具体的实现。

4.6.1 ManagerServiceImpl(管理员|宿管信息相关的业务逻辑操作)

这段代码是 ManagerServiceImpl 类的具体实现部分。该类实现了 IManagerService 接口,提供了与管理员信息相关的业务逻辑操作。以下是对代码的详细解释:

  1. ManagerServiceImpl 类中声明了一个 IManagerDao 接口的实例 managerDao,通过 new ManagerDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行管理员信息相关的增删改查操作。

  2. queryGender 方法用于查询不同性别的管理员数量,调用 managerDao.queryGender() 方法从数据库中查询不同性别的管理员数量。

  3. selectByPage 方法用于实现分页查询管理员信息的功能,调用 managerDao.selectByPage(managerQuery) 方法从数据库中分页查询管理员信息。

  4. deleteById 方法用于实现根据管理员ID删除管理员信息的功能,调用 managerDao.deleteById(id) 方法从数据库中删除指定ID的管理员信息。

  5. add 方法用于实现添加管理员信息的功能,调用 managerDao.add(manager) 方法向数据库中插入管理员信息。

  6. selectById 方法用于根据管理员ID查询管理员信息,调用 managerDao.selectById(id) 方法从数据库中查询指定ID的管理员信息。

  7. update 方法用于实现修改管理员信息的功能,调用 managerDao.update(manager) 方法更新数据库中对应的管理员信息。

  8. deleteAll 方法用于实现批量删除管理员信息的功能,根据传入的ID数组,循环调用 managerDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除管理员信息。

  9. selectAll 方法用于获取所有管理员信息,调用 managerDao.selectAll() 方法从数据库中获取所有管理员信息。

总的来说,ManagerServiceImpl 类实现了与管理员信息相关的业务逻辑操作,通过调用 managerDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值、包含查询结果的列表或包含查询结果的 LayUITableResult 对象。

4.7 IBuildingService(公寓楼)

这段代码是一个 Java 接口 IBuildingService,用于定义与建筑物相关的服务功能。下面是对代码的详细解释:

  1. List<BuildingAllocation> queryAllocation():用于查询建筑物分配情况,并返回一个包含分配信息的 BuildingAllocation 对象列表。

  2. List<BuildingAllocation> queryStudentNum():用于查询学生数量,并返回一个包含学生数量信息的 BuildingAllocation 对象列表。

  3. LayUITableResult selectByPage(BuildingQuery buildingQuery):通过分页查询建筑物信息,并以 LayUI 表格数据格式返回结果。

  4. boolean deleteById(int id):根据给定的建筑物 id 删除相应的建筑物信息,并返回操作是否成功的布尔值。

  5. boolean add(Building building):用于向系统中添加新的建筑物信息,并返回操作是否成功的布尔值。

  6. Building selectById(int id):根据给定的建筑物 id 查询相应的建筑物信息,并返回一个 Building 对象。

  7. boolean update(Building building):用于更新系统中已有的建筑物信息,并返回操作是否成功的布尔值。

  8. boolean deleteAll(String[] ids):根据给定的建筑物 id 数组批量删除对应的建筑物信息,并返回操作是否成功的布尔值。

  9. List<Building> selectAll(String gender):根据给定的性别条件查询所有符合条件的建筑物信息,并返回一个包含建筑物信息的 List 对象。

总的来说,这个接口定义了一系列用于管理建筑物信息的功能方法,包括查询、添加、删除、更新等操作,并提供了一些与建筑物分配和学生数量相关的功能。这些方法旨在为上层的 Controller 层提供操作建筑物信息的服务。

4.7.1 BuildingServiceImpl(宿舍楼信息相关的业务逻辑操作)

这段代码是 BuildingServiceImpl 类的具体实现部分。该类实现了 IBuildingService 接口,提供了与宿舍楼信息相关的业务逻辑操作。以下是对代码的详细解释:

  1. BuildingServiceImpl 类中声明了一个 IBuildingDao 接口的实例 buildingDao,通过 new BuildingDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行宿舍楼信息相关的增删改查操作。

  2. queryAllocation 方法用于查询宿舍楼分配情况,调用 buildingDao.queryAllocation() 方法从数据库中查询宿舍楼的分配情况。

  3. queryStudentNum 方法用于查询宿舍楼的学生数量,调用 buildingDao.queryStudentNum() 方法从数据库中查询宿舍楼的学生数量。

  4. selectByPage 方法用于实现分页查询宿舍楼信息的功能,调用 buildingDao.selectByPage(buildingQuery) 方法从数据库中分页查询宿舍楼信息。

  5. deleteById 方法用于实现根据宿舍楼ID删除宿舍楼信息的功能,调用 buildingDao.deleteById(id) 方法从数据库中删除指定ID的宿舍楼信息。

  6. add 方法用于实现添加宿舍楼信息的功能,调用 buildingDao.add(building) 方法向数据库中插入宿舍楼信息。

  7. selectById 方法用于根据宿舍楼ID查询宿舍楼信息,调用 buildingDao.selectById(id) 方法从数据库中查询指定ID的宿舍楼信息。

  8. update 方法用于实现修改宿舍楼信息的功能,调用 buildingDao.update(building) 方法更新数据库中对应的宿舍楼信息。

  9. deleteAll 方法用于实现批量删除宿舍楼信息的功能,根据传入的ID数组,循环调用 buildingDao.deleteById(Integer.parseInt(id)) 方法从数据库中批量删除宿舍楼信息。

  10. selectAll 方法用于根据性别查询所有宿舍楼信息,调用 buildingDao.selectAll(gender) 方法从数据库中查询所有符合性别条件的宿舍楼信息。

总的来说,BuildingServiceImpl 类实现了与宿舍楼信息相关的业务逻辑操作,通过调用 buildingDao 的相应方法与数据库进行交互,并根据操作结果返回布尔值、包含查询结果的列表或包含查询结果的 LayUITableResult 对象。

4.8 IBuildingManagerService(宿舍管理员)

这段代码是一个Java接口文件 IBuildingManagerService,它定义了与宿舍管理员(BuildingManager)相关的服务方法。下面是对代码的详细解释:

  1. IBuildingManagerService 是一个接口,位于 com.xn.dormitory.service 包下。

  2. 它声明了三个抽象方法 addchangedelete,用于执行与宿舍管理员(BuildingManager)相关的操作。

  3. 方法 add 用于向系统中添加一个新的宿舍管理员,接受一个 BuildingManager 对象作为参数,并返回一个布尔值表示添加是否成功。

  4. 方法 change 用于修改现有的宿舍管理员信息,接受一个 BuildingManager 对象作为参数,并返回一个布尔值表示修改是否成功。

  5. 方法 delete 用于从系统中删除一个宿舍管理员,接受一个 BuildingManager 对象作为参数,并返回一个布尔值表示删除是否成功。

  6. 每个方法的返回类型都是 boolean,用于指示操作的执行结果。

总的来说,这个接口定义了对宿舍管理员进行添加、修改和删除操作的规范,任何实现了该接口的类都必须提供相应的功能实现。这样可以在不同的类中实现接口方法来提供具体的操作逻辑,例如将宿舍管理员信息存储到数据库中或者从数据库中进行删除。

4.8.1 BuildingManagerServiceImpl(宿舍管理员信息相关的业务逻辑操作)

这段代码是 BuildingManagerServiceImpl 类的具体实现部分。该类实现了 IBuildingManagerService 接口,提供了与宿舍管理员信息相关的业务逻辑操作。以下是对代码的详细解释:

  1. BuildingManagerServiceImpl 类中声明了一个 IBuildingManagerDao 接口的实例 buildingManagerDao,通过 new BuildingManagerDaoImpl() 进行实例化。通常,该实例用于与数据库交互,执行宿舍管理员信息相关的增删改操作。

  2. add 方法用于实现添加宿舍管理员信息的功能,调用 buildingManagerDao.add(buildingManager) 方法向数据库中插入宿舍管理员信息,并返回插入是否成功的布尔值。

  3. change 方法用于实现修改宿舍管理员信息的功能,调用 buildingManagerDao.change(buildingManager) 方法更新数据库中对应的宿舍管理员信息,并返回更新是否成功的布尔值。

  4. delete 方法用于实现删除宿舍管理员信息的功能,调用 buildingManagerDao.delete(buildingManager) 方法从数据库中删除对应的宿舍管理员信息,并返回删除是否成功的布尔值。

总的来说,BuildingManagerServiceImpl 类通过调用 buildingManagerDao 的相应方法与数据库进行交互,根据操作结果返回布尔值,表示执行相应操作的成功与否。

5、Utli(工具层)

util层就是存放工具类的地方,对于一些独立性很高的小功能,或重复性很高的代码片段,可以提取出来放到Util层中。

5.1 ClearPic(清理数据库中未使用的图片文件)

这段代码是一个 Java 类 ClearPic,主要用于清理数据库中未使用的图片文件。下面是对代码的详细解释:

  1. main 方法是程序的入口点,它首先创建了两个空的 List 集合 imageLlocalPic,分别用于存储数据库中的图片和本地文件夹中的图片。

  2. 代码尝试建立数据库连接,并执行 SQL 查询语句,从数据库中获取所有宿舍管理员的图片信息,将非空图片信息存储到 imageL 中。

  3. 在遍历数据库时,统计了空数据的数量。

  4. 然后程序尝试遍历本地指定路径下的文件夹,将文件夹中的图片名称存储到 localPic 中。

  5. 遍历 localPic,检查是否存在于数据库中,如果不存在,则尝试删除该文件。

  6. traverseFolder 方法用于遍历文件夹,并将文件名存储到列表中。

  7. deleteFile 方法用于删除指定路径的文件。

总的来说,这段代码实现了一个图片清理功能,它首先从数据库中获取所有图片信息,然后遍历指定文件夹中的图片文件,并删除那些不在数据库记录中的图片文件。这样可以确保系统中不会存在无用的图片文件,节省存储空间并保持数据库和文件系统的一致性。

5.2 JDBCUtil(获取数据库连接和关闭数据库资源)

这段代码是一个简单的 JDBC 工具类 JDBCUtil,用于获取数据库连接和关闭数据库资源。下面是对代码的详细解释:

  1. 在类加载时,静态代码块首先会执行。这个静态代码块尝试加载 db.properties 文件,该文件包含了数据库连接的相关配置信息,例如驱动名称、URL、用户名和密码。

  2. 使用 ClassLoader 获取 db.properties 文件的输入流,并加载到 Properties 对象中,从中获取数据库连接所需的配置信息。

  3. 通过 Class.forName 方法加载数据库驱动程序。

  4. getConnection 方法用于建立数据库连接,它使用之前获取的数据库连接所需的 URL、用户名和密码来创建一个 Connection 对象,并将其返回。

  5. close 方法用于关闭数据库连接、StatementResultSet 对象。它在不为 null 的情况下依次尝试关闭这些对象,如果关闭过程中出现异常,则打印异常信息。

总的来说,这个工具类简化了 JDBC 操作中获取连接和关闭连接的过程,封装了一些重复且容易出错的操作,提高了代码的可读性和可维护性。使用这个工具类可以有效地管理数据库连接并减少代码重复。

5.3 JSONUtil(将 Java 对象转换为 JSON 格式)

这段代码是一个名为 JSONUtil 的 Java 类,其中包含一个静态方法 toJSON,用于将 Java 对象转换为 JSON 格式并写入 HttpServletResponse 中。下面是对代码的详细解释:

  1. JSONUtil 类位于 com.xn.dormitory.util 包中。

  2. toJSON 方法接受两个参数:一个 HttpServletResponse 对象 resp,用于向客户端发送数据;另一个是要转换为 JSON 格式的 Java 对象 object

  3. 在方法中首先设置响应的内容类型为 “text/html;charset=utf-8”,确保传输的数据以 UTF-8 编码进行处理。

  4. 然后创建一个 ObjectMapper 对象,该对象是 Jackson 库中的核心类,用于实现 Java 对象与 JSON 数据之间的转换。

  5. 使用 ObjectMapperwriteValue 方法将给定的 Java 对象 object 序列化为 JSON 格式,并将 JSON 数据写入 HttpServletResponse 对象的输出流中。

  6. 如果在执行过程中出现了 IOException 异常,那么会通过调用 e.printStackTrace() 方法打印异常堆栈信息。

总的来说,这个 JSONUtil 类提供了一个便捷的方法,可以将 Java 对象转换为 JSON 格式,并将其写入到 HTTP 响应中。这对于在 Web 应用程序中将 Java 对象以 JSON 数据的形式发送到客户端非常有用,比如在处理 AJAX 请求时返回 JSON 数据。

5.4 LayUITableResult(封装 JSON 格式的通用响应对象,用于后端向前端返回信息)

这段代码定义了一个名为 LayUITableResult 的 Java 类,用于封装 JSON 格式的通用响应对象,用于后端向前端返回信息。下面是对代码的详细解释:

  1. LayUITableResult 类中定义了常量 ERROROK,分别代表错误和成功的状态码。

  2. 类中包含了四个私有属性,分别是 codemsgdatacount,用于存储响应的状态码、描述信息、返回的数据对象以及数据的总数量。

  3. 代码中提供了多个构造函数,用于根据不同的参数组合创建 LayUITableResult 对象。

  4. 提供了一系列静态方法来快速创建 LayUITableResult 对象,包括 okerror 方法,这些方法根据传入的参数组合返回对应的 LayUITableResult 对象。

  5. 提供了相应的 getter 和 setter 方法来访问和设置私有属性。

  6. LayUITableResult 类旨在提供一种便捷的方式来构建包含响应信息的 JSON 对象,以便后端能够向前端提供统一的数据格式,并传递状态码、描述信息、返回的数据以及数据的总数量等信息。这样可以使得前端能够方便地根据后端返回的信息来进行相应的处理和展示。

5.5 MD5Util (用于加密用户密码)

这段代码是一个用于生成 MD5 哈希值的工具类 MD5Util,用于将给定的字符串转换为其对应的 MD5 值。下面是对代码的详细解释:

  1. MD5Util 类包含了两个公共静态方法 MD5Encode 用于生成 MD5 哈希值。

  2. 方法 MD5Encode 接受两个参数,其中 origin 是要进行加密的字符串,charsetname 是用于指定字符集编码的参数。如果未指定字符集编码,默认使用 UTF-8 编码。

  3. 方法 MD5Encode 首先创建了一个字符串 resultString 来保存传入的原始字符串。

  4. 使用 Java 的 MessageDigest 类来计算 MD5 哈希值。根据提供的字符集编码将原始字符串转换为字节数组,并传递给 MessageDigest 对象的 digest 方法进行处理。

  5. 通过调用私有方法 byteArrayToHexString 将字节数组转换为十六进制表示的字符串形式,从而得到 MD5 哈希值。

  6. 如果出现异常,将会直接返回 null

  7. 字符数组 hexDigits 包含了十六进制数字的字符串表示,用于将字节转换为十六进制字符串。

  8. 这个工具类使用了静态常量 SALT,但是没有在代码中使用,可能用于指定盐值进行加密。当前的 SALT 值为空字符串,意味着没有应用盐值进行加密。

总的来说,这段代码实现了一个简单的 MD5 加密工具类,用于将给定的字符串转换为其对应的 MD5 哈希值,提供了不同编码方式的支持,并可用于加密用户密码等敏感信息。

5.6 Result (用于封装后台返回给前台的通用响应对象)

这段代码定义了一个名为 Result 的Java类,用于封装后台返回给前台的通用响应对象。下面是对代码的详细解释:

  1. 类中定义了三个静态常量:ERROROKNO_PERMISSTION,分别用于表示错误、成功和无权限的状态码。

  2. 类中包含了四个属性:

    • code:表示请求状态的代码,可以是成功、失败、未登录或无权限。
    • msg:用于描述信息,主要是向用户展示的提示信息。
    • data:用于存储后台返回给前端的数据对象,可以是任意类型的数据。
  3. 类中定义了一个 isOk() 方法,用于检查响应是否是成功的。

  4. 提供了多个构造方法,用于初始化对象的属性值。

  5. 提供了多个静态方法,用于创建不同情况下的 Result 对象,包括成功的响应、失败的响应等。

  6. 为属性提供了相应的获取(get)和设置(set)方法,以便于对属性进行操作和访问。

该类的设计旨在提供一个通用的响应对象,用于在后台处理请求后向前端返回结果,包括状态码、描述信息和相应的数据。通过提供多个静态方法来创建不同情况下的 Result 对象,可以方便地在不同的业务场景中使用,并且可以通过 isOk() 方法来快速判断请求是否成功。

6、Controller(控制层)

负责请求转发,接受页面传递过来的参数,根据参数的不同,是调用不同的Service层方法进行操作,操作完成后将返回结果传递给页面。

6.1 VerifyCodeServlet(生成验证码)

这段代码是一个用于生成验证码的Servlet程序。下面是对代码的详细解释:

  1. 该Servlet类 VerifyCodeServlet 用于处理生成验证码的请求。

  2. 通过 doGet 方法处理GET请求doPost 方法处理POST请求。

  3. doGet 方法中,首先设置了响应的一些属性,使得生成的验证码图片不被缓存。

  4. 创建一个 BufferedImage 实例 image 用于在内存中创建图像。

  5. 通过 Graphics2D 对象 g 对图像进行绘制操作。

  6. 设置背景色,并填充背景。

  7. 设置字体并画边框。

  8. 生成干扰线,增加验证码的复杂度,防止被自动识别。

  9. 生成4位随机数字作为验证码,并将验证码存储在字符串 sRand 中。

  10. 将验证码存储在Session中,以便后续验证用户输入的验证码是否正确。

  11. 将图像输出到前端页面,设置图像格式为PNG。

  12. 最后关闭输出流,释放资源。

总的来说,这段代码用于动态生成一个带有随机数字的验证码图片,并将生成的验证码存储在Session中,以便后续对用户输入的验证码进行验证。此外,代码还添加了干扰线,增加了验证码的复杂度,提高了安全性。

6.2 UserServlet(操作员)

6.2.1 service(据请求中的 method 参数的不同值来调用不同的处理方法)

这段代码是一个名为 UserServlet 的Servlet程序,它通过根据请求参数 method 的不同值来调用不同的处理方法。根据您之前提供的代码,我们可以假设 IUserService 接口是用于处理与用户操作相关的服务,而 UserServiceImpl 类是其具体实现。下面是对代码的详细解释:

  1. @WebServlet("/user") 注解表示该Servlet可以处理路径为 “/user” 的请求。

  2. 代码中声明了一个 IUserService 类型的成员变量 userService,并实例化为 UserServiceImpl 类的实例。

  3. service 方法是Servlet中用于处理请求的方法,它根据请求中的 method 参数的不同值来调用不同的处理方法。

  4. 根据 method 的值,代码执行不同的操作:

    • 如果 method 是 “login”,则调用 login 方法处理登录请求。
    • 如果 method 是 “logout”,则调用 logout 方法处理登出请求。
    • 如果 method 是 “register”,则调用 register 方法处理注册请求。
    • 如果 method 是 “selectByPage”,则调用 selectByPage 方法处理分页查询请求。
    • 如果 method 是 “deleteById”,则调用 deleteById 方法处理根据ID删除请求。
    • 如果 method 是 “deleteAll”,则调用 deleteAll 方法处理删除所有请求。
    • 如果 method 是 “updateStatus”,则调用 updateStatus 方法处理更新状态请求。
    • 如果 method 是 “changePassword”,则调用 changePassword 方法处理修改密码请求。
  5. 对于每个具体的处理方法,它们将会调用 IUserService 接口中定义的相应方法,以处理具体的用户操作。具体的业务逻辑在 UserServiceImpl 中实现。

总的来说,该Servlet根据不同的请求方法来调用不同的业务处理方法,实现了对用户的登录、注册、注销、数据查询、数据删除和密码修改等操作的分发处理。

6.2.2 changePassword(用户修改密码的请求)

这段代码是一个名为 UserServlet 的Servlet类,处理与用户相关的请求。下面是对代码的详细解释:

  1. 该Servlet类使用了 @WebServlet("/user") 注解,表示该Servlet可以处理路径为 “/user” 的请求。

  2. 类中声明了一个 IUserService 类型的成员变量 userService,并通过 new UserServiceImpl() 对其进行实例化,这意味着该Servlet将使用 UserServiceImpl 类提供的服务方法来处理用户相关的操作。

  3. 方法 changePassword 用于处理修改用户密码的请求,它接受 HttpServletRequestHttpServletResponse 作为参数。

  4. 通过 req.getParameter 方法获取请求中的 userIdoldPasswordnewPassword 参数,并使用 MD5Util.MD5Encode 方法对密码进行加密处理。

  5. 调用 userServicechangePassword 方法,该方法传递了用户ID、原密码和新密码作为参数,用于验证原密码的正确性并更新用户密码。

  6. 如果密码修改成功,则使用 Result.ok 方法创建一个成功的响应对象,并将其转换为JSON格式发送给前端。

  7. 如果密码修改失败(可能是因为原密码不正确),则使用 Result.error 方法创建一个包含错误信息的响应对象,并将其转换为JSON格式发送给前端。

总的来说,这段代码处理了用户修改密码的请求,并通过调用相应的服务方法来处理密码的更新操作。同时,它使用了 JSONUtil.toJSON 方法将处理结果转换为JSON格式,并将其发送回前端,以便用户可以及时获得修改密码操作的结果反馈。

6.2.3 register(处理用户注册请求)

在这段代码中,UserServlet 类是一个Servlet类,它处理与用户操作相关的HTTP请求。结合之前提供的代码,以下是对代码的详细解释:

  1. 该Servlet类通过 @WebServlet("/user") 注解指定了处理请求的URL路径为 “/user”。

  2. 通过 private IUserService userService = new UserServiceImpl(); 创建了一个userService实例,用于处理与用户相关的业务逻辑操作。

  3. register 方法用于处理用户注册请求,其中从请求中获取了用户名、原始密码、昵称等信息。通过调用 MD5Util.MD5Encode 方法对原始密码进行MD5加密。

  4. 接着调用 userService.register 方法,尝试将用户信息注册到系统中。如果注册成功,则通过 Result.ok 方法创建一个成功的结果对象,并使用 JSONUtil.toJSON 方法将结果以JSON格式返回给前端。

  5. 如果注册失败(可能是因为用户名已经存在),则通过 Result.error 方法创建一个失败的结果对象,并将错误信息以JSON格式返回给前端。

总的来说,这段代码通过 UserServlet 类处理了用户的注册请求。它依赖于 IUserService 接口和 UserServiceImpl 类来执行具体的注册逻辑,并使用了 MD5UtilJSONUtil 工具类来进行密码加密和处理JSON格式数据的转换。

6.2.4 logout(处理用户注销操作)

这段代码是一个 UserServlet 类,用于处理与用户相关的请求。下面是对代码的详细解释:

  1. @WebServlet("/user") 注解指定了该Servlet的访问路径为 “/user”。

  2. 该类中包含了一个私有成员变量 userService,它是一个 IUserService 接口的实现类 UserServiceImpl 的实例,用于处理用户相关的业务逻辑。

  3. logout 方法用于处理用户注销操作。它接受 HttpServletRequest 和 HttpServletResponse 作为参数,并在用户注销时使当前会话失效(invalidate),然后重定向到登录页面。

  4. logout 方法中,首先获取当前会话(session),然后调用 invalidate 方法使该会话失效,即使其中存储的所有数据无效。

  5. 最后通过 resp.sendRedirect 方法重定向到登录页面,使用 req.getContextPath() 获取当前web应用的上下文路径,并在其后拼接 “/User/login.jsp”,以确保重定向到正确的登录页面。

总的来说,该 UserServlet 类主要负责处理用户相关的请求,其中 logout 方法用于注销用户会话并重定向到登录页面,以实现用户注销的功能。

6.2.5 login(用于处理用户登录请求,从请求中获取用户名、密码和验证码,并进行相应的验证和处理)

这段代码是一个名为 UserServlet 的Servlet程序,用于处理用户登录请求。下面是对代码的详细解释:

  1. 使用 @WebServlet("/user") 注解指定了该Servlet的访问路径为 “/user”。

  2. private IUserService userService = new UserServiceImpl(); 实例化了一个 IUserService 接口的实现类 UserServiceImpl 对象,用于处理用户相关的服务逻辑。

  3. login 方法用于处理用户登录请求,从请求中获取用户名、密码和验证码,并进行相应的验证和处理。

  4. 首先,从请求中获取用户输入的用户名、原始密码以及验证码。对密码进行MD5加密处理。

  5. 从Session中获取之前生成的验证码,进行与用户输入的验证码比对,如果不相同,则返回验证码错误信息。

  6. 调用 userServicelogin 方法,尝试通过用户名和加密后的密码进行用户验证。如果验证成功,则将用户对象存储到Session中。

  7. 在登录成功的情况下,首先检查用户状态是否为正常状态(status=0),如果用户被禁用,则返回相应的错误信息。

  8. 如果登录验证失败,或者用户名密码不匹配,则返回相应的错误信息。

  9. JSONUtil.toJSON(resp, map) 用于将相应的信息以JSON格式返回给前端页面。

总的来说,这段代码实现了用户登录的验证逻辑,包括验证码的验证、用户身份验证和状态检查,并将验证结果以JSON格式返回给前端页面,以便前端根据返回结果做相应的提示或页面跳转。

6.2.6 selectByPage(处理用户分页查询请求)

这段代码是一个名为 UserServlet 的Java类,用于处理与用户(User)相关的请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/user") 注解将该Servlet映射到URL路径 “/user”。

  2. 定义了一个私有属性 userService,类型为 IUserService,并将其初始化为 UserServiceImpl 的实例,用于处理与用户相关的业务逻辑。

  3. selectByPage 方法用于根据请求参数查询指定页数的用户数据,并以特定格式返回给前端。

  4. 从请求中获取参数 pagelimit,如果这些参数为空,则设置默认值为1和10。

  5. 将获取到的参数转换为整型并用于构建 UserQuery 对象,该对象用于存储分页查询的相关信息,如页数、数据量和用户名等。

  6. 调用 userServiceselectByPage 方法,将 UserQuery 对象作为参数传递给它,以获取查询结果。

  7. 将查询结果转换为特定格式(这里可能是JSON格式)并写入到 HttpServletResponse 中,以便返回给前端页面。

总的来说,这段代码是一个简单的Servlet类,用于处理用户分页查询请求,并将查询结果以特定格式返回给前端页面。它使用了一个 IUserService 接口来处理具体的业务逻辑,并通过 UserQuery 对象来传递查询相关的参数。最后,它通过 JSONUtil.toJSON 方法将查询结果转换为特定格式并写入到响应中,以便返回给前端。

6.2.7 deleteById(处理根据用户ID删除用户的请求)

这段代码是一个Java Servlet程序 UserServlet,用于处理与用户相关的请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/user") 注解,将该Servlet映射到路径 “/user”,这意味着当用户请求匹配到该路径时,将由该Servlet来处理请求。

  2. 该Servlet中有一个私有字段 userService,类型为 IUserService,并且通过 UserServiceImpl 进行实例化。这表明该Servlet依赖于一个用户服务接口的具体实现。

  3. 方法 deleteById 用于处理根据用户ID删除用户的请求。它接受 HttpServletRequestHttpServletResponse 作为参数。

  4. 该方法从请求参数中获取要删除的用户的ID,并调用 userService 中的 deleteById 方法执行删除操作。

  5. 如果删除成功,使用 Result.ok 方法生成一个包含成功信息的 JSON 响应,并通过 JSONUtil.toJSON 方法将响应写回给前端。

  6. 如果删除操作失败,使用 Result.error 方法生成一个包含错误信息的 JSON 响应,并通过 JSONUtil.toJSON 方法将响应写回给前端。

  7. 最后注释掉了 resp.sendRedirect 方法,这个方法原本用于重定向到 “/user” 页面,但目前被注释掉了。

总的来说,该Servlet主要处理用户删除操作的请求。它依赖于一个用户服务接口的具体实现,根据请求中的参数执行相应的操作,并将操作结果以JSON格式返回给前端。

6.2.8 deleteAll(处理用户的批量删除操作)

这段代码是一个用于处理用户相关操作的Servlet程序。下面是对代码的详细解释:

  1. 该Servlet类 UserServlet 注解 @WebServlet("/user") 指定了处理用户请求的URL路径。

  2. private IUserService userService = new UserServiceImpl(); 这一行代码创建了一个 IUserService 接口的实例,实际类型是 UserServiceImpl 类的实例,用于处理用户相关的服务逻辑。

  3. deleteAll 方法用于处理用户的批量删除操作,接受 HttpServletRequestHttpServletResponse 作为参数。

  4. 通过 req.getParameterValues("ids[]") 获取前端传递的参数数组 ids[],该数组包含了要删除的用户的id。

  5. 调用 userService.deleteAll(ids) 方法来执行批量删除操作,并将返回的结果存储在 isSuccess 变量中。

  6. 根据删除操作的结果,创建一个 Result 对象,如果删除成功则返回 Result.ok("删除成功"),如果失败则返回 Result.error("删除失败")

  7. 最后通过 JSONUtil.toJSON(resp, result) 方法将结果转换成JSON格式并写入到 HttpServletResponse 对象中,返回给前端页面进行处理。

总的来说,这段代码处理了用户批量删除操作的逻辑,通过调用相应的服务方法来执行删除操作,并根据操作结果返回相应的提示信息。最终将操作结果以JSON格式返回给前端页面。

6.2.9 updateStatus(处理更新用户状态的请求)

这段代码是一个Servlet类 UserServlet,用于处理关于用户的操作请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/user") 注解将该Servlet映射到路径 “/user”,即处理与 “/user” 路径相关的请求。

  2. UserServlet 类中有一个成员变量 userService,其类型为 IUserService,并通过 UserServiceImpl 进行实例化。这表明该Servlet依赖于IUserService接口来处理与用户相关的操作。

  3. 方法 updateStatus 用于处理更新用户状态的请求。根据传入的请求参数,首先获取请求中的 idstatus

  4. 通过调用 userServiceupdateStatus 方法,将获取到的 idstatus 转换为整数类型,然后传递给 updateStatus 方法来更新用户的状态。该方法返回一个布尔值,表示更新操作是否成功。

  5. 根据更新操作的结果,创建一个 Result 对象。如果更新操作成功,则创建一个带有成功信息的 Result 对象,否则创建一个带有失败信息的 Result 对象。

  6. 最后,通过 JSONUtil.toJSON 方法将 Result 对象转换为JSON格式,并通过 resp 将其发送回客户端。

总的来说,这段代码实现了一个Servlet,用于处理更新用户状态的请求。它通过调用 userService 提供的方法来更新用户状态,并将更新结果封装为JSON格式后发送回客户端。

6.3 UploadServlet(处理文件上传的请求)

这段代码是一个用于处理文件上传的Servlet程序。下面是对代码的详细解释:

  1. UploadServlet 类继承自 HttpServlet,用于处理文件上传的请求。

  2. service 方法中首先创建了一个 DiskFileItemFactory 对象 factory 用于设置文件上传的一些配置,例如缓存大小和临时文件位置。

  3. 获取临时文件夹路径并设置为临时文件的存储位置。

  4. 创建 ServletFileUpload 对象 servletFileUpload 用于处理文件上传操作,并设置了文件上传名的编码方式为 “UTF-8”。

  5. 通过判断请求的 Content-Type 是否为 multipart/form-data 来确定是否是文件上传的请求。

  6. 如果是文件上传的请求,获取上传的文件项列表 fileItems

  7. 遍历文件项列表,判断每个文件项是否为普通表单项,如果不是,则执行文件上传操作。

  8. 从文件项中获取文件名 name 和文件扩展名 extension

  9. 生成一个随机的文件名 fileName,包括随机的UUID和文件扩展名。

  10. 通过输入流和输出流将文件从临时位置复制到指定的目标文件夹中。

  11. 在处理完文件上传之后,使用 JSONUtil.toJSON 方法将上传成功的结果以JSON格式返回给前端,并包括了上传成功的消息和文件名。

总的来说,这段代码实现了文件上传的功能。它通过使用 DiskFileItemFactoryServletFileUpload 类来处理文件上传请求,通过遍历文件项列表并将文件从临时位置复制到指定的目标文件夹中,最终返回一个JSON格式的上传成功信息给前端。

6.4 StuDorServlet(学生所住宿舍)

6.4.1 service(根据请求中的 “method” 参数来调用相应的处理方法)

这段代码是一个 StuDorServlet 类,使用了 @WebServlet 注解来指定该Servlet的访问路径为 “/stuDor”。下面是对代码的详细解释:

  1. StuDorServlet 类继承自 HttpServlet 类,用于处理学生宿舍相关的请求。

  2. 类中创建了一个 stuDorService 对象,用于处理学生宿舍相关的业务逻辑,该对象的具体实现是 StuDorServiceImpl

  3. 重写了 service 方法来处理客户端的请求,并根据请求中的 “method” 参数来调用相应的处理方法。

  4. 通过 req.getParameter("method") 获取请求中的 “method” 参数值,根据不同的值调用不同的方法。

  5. 当 “method” 参数为 “add” 时,调用 add 方法来处理添加操作;当 “method” 参数为 “delete” 时,调用 delete 方法来处理删除操作;当 “method” 参数为 “change” 时,调用 change 方法来处理修改操作。

  6. 如果 “method” 参数不匹配上述任何一个值,将不会执行任何操作。

总的来说,这段代码是一个用于处理学生宿舍相关操作的Servlet类。根据请求中的 “method” 参数值的不同,通过调用相应的方法来执行添加、删除和修改等操作。通过这种方式,可以将不同的操作按照不同的逻辑进行处理,提高了代码的可读性和维护性。

6.4.2 change(处理学生宿舍信息的更改请求)

这段代码是一个名为 StuDorServlet 的Servlet类,用于处理学生宿舍信息的更改请求。下面是对代码的详细解释:

  1. 该Servlet类使用了 @WebServlet("/stuDor") 注解,表示该Servlet可以处理路径为 “/stuDor” 的请求。

  2. 在该Servlet中,通过实例化 StuDorServiceImpl 类来使用学生宿舍服务。

  3. change 方法用于处理宿舍信息的更改请求。它首先从请求中获取参数 stuIddorId,并进行非空校验。

  4. 如果 stuIddorId 为空,则通过 JSONUtil.toJSON 方法返回一个包含错误信息的JSON响应。

  5. 创建一个 StuDor 对象,将获取到的 stuIddorId 转换为整数,并传入 StuDor 的构造函数中。

  6. 调用 stuDorServicechange 方法来处理学生宿舍信息的更改请求。

  7. 如果更改成功,则通过 JSONUtil.toJSON 方法返回一个包含成功信息的JSON响应。

  8. 如果更改失败,则通过 JSONUtil.toJSON 方法返回一个包含失败信息的JSON响应。

总的来说,这段代码实现了一个处理学生宿舍信息更改请求的Servlet。它负责从请求中获取相关参数,进行非空校验,并调用相应的服务方法来处理宿舍信息的更改操作。最后,根据操作结果返回相应的JSON响应。

6.4.3 delete(处理删除学生宿舍信息的请求、退宿)

这段代码是一个 StuDorServlet 类,用于处理学生宿舍信息相关的请求,其中包含了一个 delete 方法。下面是对代码的详细解释:

  1. 通过 @WebServlet 注解,将该Servlet映射到路径 “/stuDor”,使得可以通过该路径访问该Servlet。

  2. 该类中声明了一个 IStuDorService 类型的成员变量 stuDorService,并实例化为 StuDorServiceImpl 的一个实例,用于处理学生宿舍信息相关的业务逻辑。

  3. delete 方法用于处理删除学生宿舍信息的请求,从请求参数中获取 stuIddorId,并进行空值校验。

  4. 如果 stuIddorId 为空,则通过 JSONUtil.toJSON 方法返回一个包含错误信息的 Result 对象。

  5. 否则,创建一个 StuDor 对象,并调用 stuDorServicedelete 方法执行删除操作。

  6. 如果删除操作成功,则通过 JSONUtil.toJSON 方法返回一个包含成功信息的 Result 对象,否则返回一个包含失败信息的 Result 对象。

总的来说,这段代码实现了一个Servlet,用于处理学生宿舍信息的删除请求。它通过接收前端传来的学生ID和宿舍ID,然后调用相应的 StuDorService 对象来处理相关的业务逻辑。最终,根据操作结果,返回对应的处理信息。

6.4.4 add(处理添加学生宿舍关联信息的请求)

这段代码是一个Servlet类 StuDorServlet,用于处理与学生宿舍关联信息的请求。下面是对代码的详细解释:

  1. 代码中使用了 @WebServlet("/stuDor") 注解,将该Servlet映射到路径 “/stuDor”,使得可以通过该路径访问到对应的Servlet。

  2. 该Servlet中引入了接口 IStuDorService 的实现类 StuDorServiceImpl,用于处理学生宿舍关联信息的业务逻辑。

  3. add 方法用于处理添加学生宿舍关联信息的请求,其中通过HttpServletRequest获取学生ID和宿舍ID。

  4. 检查学生ID和宿舍ID是否为空,如果为空则返回一个包含错误信息的JSON格式的响应。

  5. 如果学生ID和宿舍ID不为空,则根据获取到的信息创建一个 StuDor 对象。

  6. 通过调用 stuDorService.add(stuDor) 方法来将学生和宿舍关联信息添加到系统中。

  7. 根据添加操作的结果,返回相应的JSON格式的响应,如果添加成功则返回包含成功信息的JSON,如果添加失败则返回包含失败信息的JSON。

  8. 代码中使用了一个工具类 JSONUtil 来将结果转换为JSON格式并输出到响应中。

总的来说,这段代码是一个Servlet类,用于处理添加学生宿舍关联信息的请求。它通过调用相应的服务方法来实现学生宿舍关联信息的添加,并将操作结果以JSON格式返回到前端。代码中采用了一些简单的判断来确保输入的数据完整性,并通过工具类将处理结果以JSON格式进行输出。

6.5 StudentServlet(学生)

6.5.1 service(根据请求中的 “method” 参数的不同值执行不同的操作)

这段代码是一个名为 StudentServlet 的Java类,它继承自 HttpServlet 类,并使用 @WebServlet 注解指定了对应的 URL 路径为 “/student”。下面是对代码的详细解释:

  1. 在类中实例化了一个 IStudentService 类型的对象 studentService,并初始化为 StudentServiceImpl 的一个实例,用于处理与学生相关的服务操作。

  2. 重写了 service 方法来处理对 “/student” 路径的请求,并根据请求中的 “method” 参数的不同值执行不同的操作。

  3. 通过 switch 语句根据不同的 “method” 值调用相应的方法来处理不同的业务逻辑。具体的 “method” 值包括以下几种情况:

    • “queryGender”: 查询性别
    • “selectByPage”: 分页查询
    • “deleteById”: 根据ID删除
    • “deleteAll”: 删除全部
    • “add”: 添加学生
    • “getStudentUpdatePage”: 获取学生更新页面
    • “update”: 更新学生信息
    • “selectHasCheckIn”: 查询已入住学生
    • “selectNotCheckIn”: 查询未入住学生
  4. 每个 “case” 对应一个相应的处理方法,这些方法实际上会调用 IStudentService 中定义的方法来完成具体的业务逻辑,如查询、添加、删除等操作。

总的来说,这段代码实现了一个 Servlet,用于根据不同的请求方法调用相应的服务方法来处理与学生相关的请求,例如查询学生信息、添加学生信息、更新学生信息等操作。通过在不同的方法中调用适当的服务方法,实现了对学生信息的管理和操作。

6.5.2 selectNotCheckIn(处理查询未入住学生的请求)

这段代码是一个StudentServlet类,用于处理与学生信息相关的HTTP请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/student") 注解,将这个Servlet映射到"/student"路径。

  2. 在类中创建了一个 IStudentService 类型的成员变量 studentService,并实例化为 StudentServiceImpl 的一个对象。

  3. selectNotCheckIn 方法用于处理查询未入住学生的请求。它接收 HttpServletRequestHttpServletResponse 作为参数。

  4. 通过 req.getParameter 方法获取请求中的 pagelimitnamegendermajorclass_ 等参数,并进行相应的空值检查和设置默认值操作。

  5. 将获取到的 pagelimit 字符串转换为整型数值。

  6. 创建一个 StudentQuery 对象 studentQuery,并将获取到的参数值作为其构造函数的参数,用于封装学生信息查询的条件。

  7. 调用 studentServiceselectNotCheckIn 方法,并传入 studentQuery 对象作为参数,以获取未入住学生的信息。

  8. 将返回的结果 layUITableResult 使用 JSONUtil.toJSON 方法转换为JSON格式,并通过 resp 返回给前端。

总的来说,这段代码是一个Servlet类,用于处理前端对未入住学生信息的查询请求。它通过获取并处理前端传递的查询条件,并调用相应的服务方法来获取符合条件的学生信息。最终,将查询结果转换为JSON格式并返回给前端。

6.5.3 selectHasCheckIn(处理学生信息查询请求)

这段代码是一个Java Servlet程序 StudentServlet,它处理与学生信息相关的请求,并调用了IStudentService中的selectHasCheckIn方法。下面是对代码的详细解释:

  1. 通过 @WebServlet 注解将这个Servlet映射到路径 “/student”,表示该Servlet会处理以 “/student” 开头的请求。

  2. StudentServlet 类中,创建了一个 IStudentService 的实例 studentService,并初始化为 StudentServiceImpl 的实例,用于处理学生信息相关的业务逻辑。

  3. selectHasCheckIn 方法用于处理学生信息查询请求,并将查询结果以 JSON 格式返回给前端。

  4. 通过 HttpServletRequest 获取请求中的参数,包括 “page”、“limit”、“name”、“gender”、“major”、“class_” 和 “dormitoryId”,并进行相应的处理。

  5. 将获取到的参数组装成一个 StudentQuery 对象 studentQuery,用于传递给 studentService.selectHasCheckIn 方法进行学生信息的查询操作。

  6. 调用 studentService.selectHasCheckIn 方法进行学生信息的查询,将查询结果封装成 LayUITableResult 对象。

  7. 最后调用 JSONUtil.toJSON 方法将查询结果以 JSON 格式写入到 HttpServletResponse 中,返回给前端页面。

总的来说,这段代码实现了一个用于处理学生信息查询请求的Servlet程序。它通过调用相应的服务方法来获取数据库中学生信息,并将查询结果以 JSON 格式返回给前端页面,以便展示和处理。

6.5.4 queryGender(处理查询学生性别的请求)

这段代码是一个 StudentServlet 类,用于处理与学生信息相关的HTTP请求。下面是对代码的详细解释:

  1. @WebServlet("/student") 注解指定了Servlet的访问路径为 “/student”,这意味着当收到以 “/student” 开头的HTTP请求时,将会由该Servlet来处理。

  2. 在类中创建了一个 IStudentService 接口的实例 studentService,并实例化为 StudentServiceImpl 的一个对象。这表明该Servlet将调用 IStudentService 接口中的方法来处理学生信息相关的业务逻辑。

  3. queryGender 方法用于处理查询学生性别的请求,它接受一个 HttpServletRequest 和一个 HttpServletResponse 对象作为参数。

  4. queryGender 方法中,调用了 studentServicequeryGender 方法来获取学生性别信息,并通过 JSONUtil.toJSON 方法将查询到的结果转换为JSON格式,并通过 resp 将JSON数据返回给客户端。

总的来说,这段代码表示一个Servlet,它处理与学生信息相关的HTTP请求。在 queryGender 方法中,调用了 IStudentService 接口的 queryGender 方法来获取学生性别信息,并通过 JSONUtil.toJSON 方法将结果转换为JSON格式,然后将其返回给客户端。

6.5.5 update(处理学生信息的更新操作)

这段代码是一个Java Servlet类 StudentServlet,用于处理关于学生信息的更新操作。下面是对代码的详细解释:

  1. 该Servlet类使用了 @WebServlet("/student") 注解,表示该Servlet可以处理路径为 “/student” 的请求。

  2. 通过 IStudentService 接口及其实现类 StudentServiceImpl 创建了一个 studentService 对象,用于处理学生信息的相关逻辑操作。

  3. update 方法用于处理学生信息的更新操作。在方法内部首先获取HTTP请求中的参数,包括学生的 idnameagemajorclass_phonegender

  4. 然后根据获取的参数构建一个 Student 对象。

  5. 调用 studentServiceupdate 方法来更新学生信息,并将返回的布尔值赋值给 isSuccess 变量。

  6. 根据更新操作的结果,构建相应的 Result 对象,如果更新成功则设置消息为 “修改成功”,否则设置消息为 “修改失败”。

  7. 最后,通过 JSONUtil.toJSON 方法将 Result 对象转换为JSON格式,并写入HTTP响应中,完成对前端页面的响应。

总的来说,这段代码实现了一个Servlet类,用于处理前端页面发送的学生信息更新请求。它通过解析HTTP请求中的参数,创建学生对象并调用对应的服务方法来完成更新操作,然后将更新结果通过JSON格式返回给前端页面。

6.5.6 getStudentUpdatePage(获取学生更新页面的请求)

这段代码是一个Servlet类 StudentServlet,用于处理与学生信息相关的请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/student") 注解,将 StudentServlet 映射到路径 /student,即该Servlet将处理与 /student 相关的HTTP请求。

  2. StudentServlet 类中,创建了一个 IStudentService 的实例 studentService,并实例化为 StudentServiceImpl 的对象,用于处理与学生信息相关的业务逻辑。

  3. getStudentUpdatePage 方法中,该方法用于获取学生更新页面的请求,并向页面传递学生信息以便进行更新操作。

  4. 从请求中获取参数 id,并将其转换为整数类型。

  5. 调用 studentServiceselectById 方法,传递获取的学生id作为参数,从数据库中获取对应id的学生信息。

  6. 将获取的学生信息存储在请求的属性中,属性名为 “student”。

  7. 通过 req.getRequestDispatcher("Student/student_update.jsp").forward(req, resp) 方法将请求转发到名为 student_update.jsp 的页面,同时将请求和响应对象传递给该页面,以便页面可以获取并显示学生信息进行更新操作。

总的来说,这段代码是一个Servlet类,用于处理与学生信息相关的请求。它通过调用 IStudentService 接口的具体实现类的方法,从数据库中获取特定id的学生信息,并将获取的信息传递给前端页面以便进行学生信息的更新操作。

6.5.7 add(处理添加学生信息的HTTP请求)

这段代码是一个 StudentServlet 类,用于处理与学生信息相关的HTTP请求。下面是对代码的详细解释:

  1. StudentServlet 类中,使用 @WebServlet("/student") 注解将该Servlet映射到路径 “/student”,表示该Servlet将处理与 “/student” 路径相关的HTTP请求。

  2. 类中创建了一个 IStudentService 接口的实例 studentService,并初始化为 StudentServiceImpl 的一个实例。

  3. 类中定义了一个 add 方法,用于处理添加学生信息的HTTP请求。在该方法中,从HTTP请求中获取学生的姓名、年龄、专业、班级、电话和性别等信息,并使用这些信息创建一个 Student 对象。

  4. 使用 studentService 调用 add 方法,将创建的 Student 对象传递给服务层,执行添加学生信息的操作。

  5. 根据操作的执行结果,使用 JSONUtil 将相应的结果以JSON格式返回到前端页面。如果添加成功,则返回一个包含成功信息的 Result 对象;如果添加失败,则返回一个包含错误信息的 Result 对象。

  6. 如果 isSuccess 为 true,即添加成功,将调用 JSONUtil.toJSON 方法返回一个成功的 Result 对象,其中包含了添加成功的提示信息;如果 isSuccess 为 false,即添加失败,将返回一个包含错误信息的 Result 对象。

总的来说,这段代码实现了一个用于处理学生信息添加请求的Servlet。它通过解析HTTP请求中的参数创建学生对象,并将学生对象传递给服务层进行处理。根据处理的结果,返回相应的JSON格式数据到前端页面。

6.5.8 deleteById(处理删除学生的请求)

这段代码是一个 StudentServlet 类,它继承自 HttpServlet,并且使用 @WebServlet("/student") 注解将该Servlet映射到"/student"路径。下面是对代码的详细解释:

  1. StudentServlet 类中声明了一个 studentService 对象,它是接口 IStudentService 的实例,并被初始化为 StudentServiceImpl 类的实例。这表示该Servlet将使用StudentServiceImpl提供的方法来处理与学生相关的操作。

  2. deleteById 方法用于处理删除学生的请求。它从传入的 HttpServletRequest 中获取学生的id,并调用 studentServicedeleteById 方法来尝试删除对应id的学生。

  3. 如果删除成功,代码使用 Result.ok() 方法创建一个成功的响应,并通过 JSONUtil.toJSON(resp, Result.ok()) 将成功的响应以JSON格式返回给前端。

  4. 如果删除失败,代码使用 Result.error() 方法创建一个失败的响应,并通过 JSONUtil.toJSON(resp, Result.error()) 将失败的响应以JSON格式返回给前端。

  5. 注释部分 resp.sendRedirect(req.getContextPath() + "/student"); 是对请求重定向的一种尝试,但在当前代码中被注释掉了。

总的来说,这段代码是一个Servlet,用于处理与学生相关的操作,包括删除学生等。它通过调用 studentService 的相应方法来处理请求,并根据处理结果返回相应的JSON格式响应给前端。

6.5.9 deleteAll(处理批量删除学生的请求)

这段代码是一个名为 StudentServlet 的Servlet类,用于处理与学生相关的请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/student") 注解将这个Servlet映射到路径 “/student”。

  2. 该Servlet类中使用了接口 IStudentService 的实现类 StudentServiceImpl 的实例 studentService,用于处理与学生相关的服务逻辑。

  3. deleteAll 方法用于处理批量删除学生的请求。它接受 HttpServletRequestHttpServletResponse 作为参数,用于处理请求和响应。

  4. 在方法内部,首先通过 req.getParameterValues("ids[]") 获取前端传递过来的参数 “ids[]”,该参数是一个字符串数组,包含了需要删除的学生的ID。

  5. 接着调用 studentService.deleteAll(ids) 方法,将获取到的学生ID数组传递给 deleteAll 方法,尝试删除对应的学生。

  6. 根据删除操作的结果,构建一个 Result 对象,如果删除成功则设置 Result 对象的状态为成功并提供相应的提示信息,如果删除失败则设置状态为失败并提供失败的提示信息。

  7. 最后调用 JSONUtil.toJSON(resp, result) 方法将构建的 Result 对象转换成JSON格式,并通过 HttpServletResponse 对象将JSON响应发送回前端。

总的来说,这段代码是一个Servlet类,用于处理前端请求的学生相关操作,其中包括批量删除学生操作。它通过接收前端传递的参数,调用对应的服务方法进行处理,并将处理结果封装成JSON格式返回给前端。

6.5.10 selectByPage(处理分页查询学生信息的请求)

这段代码是一个 StudentServlet 类,它是一个Servlet程序,用于处理与学生信息相关的HTTP请求。下面是对代码的详细解释:

  1. 通过 @WebServlet("/student") 注解,将该Servlet映射到路径 /student

  2. 代码中创建了一个 IStudentService 类型的成员变量 studentService,并初始化为 StudentServiceImpl 的一个实例。

  3. selectByPage 方法用于处理分页查询学生信息的请求。它接受 HttpServletRequest 和 HttpServletResponse 作为参数,并抛出 ServletException 和 IOException 异常。

  4. 从请求参数中获取页数 page 和每页条目数 limit,若未指定则默认为第1页和每页10条记录。

  5. 从请求参数中获取学生的姓名 name、性别 gender、专业 major 和班级 class_,用于构建 StudentQuery 对象。

  6. 使用获取的参数构建 StudentQuery 对象 studentQuery,其中包含分页信息和查询条件。

  7. 调用 studentServiceselectByPage 方法,传递 studentQuery 对象作为参数,执行分页查询操作。

  8. 将查询结果 layUITableResult 使用 JSONUtil 类中的 toJSON 方法转换为 JSON 格式,并将结果通过 HttpServletResponse 返回给前端。

总的来说,这段代码实现了一个Servlet,用于处理分页查询学生信息的请求。它通过解析请求中的参数,构建查询条件,并调用 studentService 中的方法来执行具体的查询操作。最后,将查询结果转换为JSON格式,并通过HTTP响应发送回前端。

6.6 NoticeServlet(公告)

6.6.1 service(根据不同的方法调用相应的处理方法)

这段代码是一个 NoticeServlet 类,用于处理与公告(Notice)相关的请求。下面是对代码的详细解释:

  1. 该 Servlet 使用 @WebServlet("/notice") 注解将 /notice 路径映射到该 Servlet。

  2. 在类中声明了一个 INoticeService 接口的实例 noticeService,并通过 new INoticeServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对公告信息的增删改查操作。

  3. 重写了 service 方法,该方法用于处理所有类型的请求(GET、POST、PUT 等)。

  4. 通过 req.getParameter("method") 获取请求中的参数 method,根据不同的方法调用相应的处理方法。

  5. 该类根据不同的 method 值分别调用以下方法:

    • selectByPage:根据分页条件查询公告信息。
    • deleteById:根据公告的ID删除特定的公告。
    • deleteAll:删除所有公告。
    • add:添加新的公告。
    • updateStatus:更新公告状态。
    • getStudentUpdatePage:获取公告更新页面。
    • update:更新公告信息。
    • loginNotice:处理登录公告的请求。
  6. 在每个 case 分支中调用对应的处理方法来处理不同的公告请求逻辑。

总的来说,这段代码通过解析请求中的 method 参数来确定要执行的具体操作,然后根据不同的操作调用不同的方法来处理公告相关的业务逻辑。

6.6.2 update(处理对公告信息进行更新的请求操作)

这段代码是 NoticeServlet 类中的 update 方法的一部分。下面是对代码的详细解释:

  1. update 方法用于处理对公告信息进行更新的请求操作。

  2. 首先从请求参数中获取 n_idn_noticen_timen_issuern_state 等公告相关的信息。

  3. 使用获取的参数构建一个 Notice 对象 notice,其中包含了要更新的公告的信息。

  4. 通过调用 noticeService.update(notice) 方法来执行更新操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  5. 根据 isSuccess 的值,创建一个 Result 对象 result,如果更新成功则返回一个带有 “修改成功” 消息的成功 Result 对象,如果更新失败则返回一个带有 “修改失败” 消息的错误 Result 对象。

  6. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理公告信息的更新操作,首先从请求中获取要更新的公告信息,然后调用服务层的 update 方法执行更新操作,最后将更新结果以 JSON 格式返回给前端页面。

6.6.3 add(处理添加新公告信息的请求操作)

这段代码是 NoticeServlet 类中的 add 方法。下面是对代码的详细解释:

  1. add 方法用于处理添加新公告信息的请求操作。

  2. 从请求参数中获取 n_noticen_timen_issuern_state 等公告相关的信息。

  3. 使用获取的参数构建一个 Notice 对象 notice,其中包含了要添加的公告的信息。

  4. 通过调用 noticeService.add(notice) 方法来执行添加操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  5. 根据 isSuccess 的值,创建一个 Result 对象 result,如果添加成功则返回一个带有 “添加成功” 消息的成功 Result 对象,如果添加失败则返回一个带有 “添加失败” 消息的错误 Result 对象。

  6. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理公告信息的添加操作,首先从请求中获取要添加的公告信息,然后调用服务层的 add 方法执行添加操作,最后将添加结果以 JSON 格式返回给前端页面。

6.6.4 getNoticeUpdatePage(获取公告更新页面的请求操作)

这段代码是 NoticeServlet 类中的 getNoticeUpdatePage 方法的一部分。下面是对代码的详细解释:

  1. getNoticeUpdatePage 方法用于获取公告更新页面的请求操作。

  2. 首先从请求参数中获取 n_id,该参数表示要更新的公告的唯一标识符。

  3. 通过调用 noticeService.selectById(Integer.parseInt(n_id)) 方法,根据获取到的 n_id 获取相应的公告信息,并将其存储在 Notice 对象 notice 中。

  4. 使用 req.setAttribute("notice", notice) 将获取到的公告信息设置为请求属性,以便在前端页面中可以获取和显示该公告信息。

  5. 通过调用 req.getRequestDispatcher("notice/notice_update.jsp").forward(req, resp) 方法将请求转发到 notice/notice_update.jsp 页面,以便在该页面中展示要更新的公告信息。

总的来说,这段代码用于处理获取公告更新页面的请求,通过获取请求参数中的公告标识符 n_id,然后根据该标识符从数据库中获取相应的公告信息,并将其传递到前端页面以便进行展示和更新操作。

6.6.5 deleteById(处理根据公告ID删除公告的请求操作)

这段代码是 NoticeServlet 类中的 deleteById 方法的一部分。下面是对代码的详细解释:

  1. deleteById 方法用于处理根据公告ID删除公告的请求操作。

  2. 首先从请求参数中获取 n_id,该参数表示要删除的公告的唯一标识符。

  3. 通过调用 noticeService.deleteById(Integer.parseInt(n_id)) 方法,根据获取到的 n_id 执行删除公告的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  4. 根据 isSuccess 的值,如果删除成功,则通过 JSONUtil.toJSON(resp,Result.ok()) 方法返回一个表示成功的 Result 对象,如果删除失败,则通过 JSONUtil.toJSON(resp,Result.error()) 方法返回一个表示失败的 Result 对象。

  5. 代码中注释掉了 resp.sendRedirect(req.getContextPath() + "/student"); 这行代码,它的作用是在删除完成后重定向到 student 页面,但由于被注释掉了,所以该功能不会执行。

总的来说,这段代码负责处理根据公告ID删除公告的请求操作,首先从请求中获取要删除的公告的ID,然后调用服务层的 deleteById 方法执行删除操作,最后根据执行结果以 JSON 格式返回相应的操作结果。

6.6.6 deleteAll(处理删除所有选定公告的请求操作)

这段代码是 NoticeServlet 类中的 deleteAll 方法的一部分。下面是对代码的详细解释:

  1. deleteAll 方法用于处理删除所有选定公告的请求操作。

  2. 通过 req.getParameterValues("ids[]") 获取选定公告的ID数组,其中参数名为 “ids[]”。

  3. 通过调用 noticeService.deleteAll(ids) 方法,传递选定的公告ID数组,执行批量删除操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  4. 根据 isSuccess 的值,创建一个 Result 对象 result,如果删除成功则返回一个带有 “删除成功” 消息的成功 Result 对象,如果删除失败则返回一个带有 “删除失败” 消息的错误 Result 对象。

  5. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理批量删除选定公告的请求操作,首先从请求中获取选定公告的ID数组,然后调用服务层的 deleteAll 方法执行批量删除操作,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.6.7 selectByPage(处理分页查询公告的请求操作)

这段代码是 NoticeServlet 类中的 selectByPage 方法的一部分。下面是对代码的详细解释:

  1. selectByPage 方法用于处理分页查询公告的请求操作。

  2. 通过 req.getParameter("page") 获取请求中的页数参数 page,如果该参数为空或未设置,则将其设为默认值 1。

  3. 通过 req.getParameter("limit") 获取请求中的每页限制数参数 limit,如果该参数为空或未设置,则将其设为默认值 10。

  4. 将获取到的 pagelimit 参数转换为整数类型。

  5. 通过 req.getParameter("n_notice") 获取请求中的公告内容关键词 n_notice

  6. 根据获取到的 pagelimitn_notice 构造一个 NoticeQuery 对象 noticeQuery,该对象包含了分页信息和查询关键词。

  7. 通过调用 noticeService.selectByPage(noticeQuery) 方法执行分页查询操作,并将查询结果存储在 LayUITableResult 对象 layUITableResult 中。

  8. 最后,通过 JSONUtil.toJSON(resp, layUITableResult) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理分页查询公告的请求操作,通过获取请求中的分页信息和查询关键词,构造查询条件对象,然后调用服务层的 selectByPage 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.6.8 updateStatus(处理更新公告状态的请求操作)

这段代码是 NoticeServlet 类中的 updateStatus 方法的一部分。下面是对代码的详细解释:

  1. updateStatus 方法用于处理更新公告状态的请求操作。

  2. 通过 req.getParameter("n_id") 获取请求中的公告ID参数 n_id,通过 req.getParameter("n_state") 获取请求中的公告状态参数 n_state

  3. 将获取到的 n_idn_state 转换为对应的数据类型。

  4. 通过调用 noticeService.updateStatus(Integer.parseInt(n_id), (n_state)) 方法,执行更新公告状态的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  5. 根据 isSuccess 的值,创建一个 Result 对象 result,如果更新成功则返回一个带有 “更新状态成功” 消息的成功 Result 对象,如果更新失败则返回一个带有 “更新状态失败” 消息的错误 Result 对象。

  6. 最后,通过 JSONUtil.toJSON(resp, result) 方法将更新结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理更新公告状态的请求操作,首先从请求中获取公告ID和状态信息,然后调用服务层的 updateStatus 方法执行更新操作,最后将更新结果以 JSON 格式返回给前端页面。

6.6.9 loginNotice(登录界面显示公告)

这段代码是 NoticeServlet 类中的 loginNotice 方法的一部分。下面是对代码的详细解释:

  1. loginNotice 方法用于处理登录公告的请求操作。

  2. 通过 req.getParameter("n_state") 获取请求中的公告状态参数 n_state

  3. 将获取到的 n_state 用于调用 noticeService.loginNotice(n_state) 方法,执行根据公告状态获取相关公告信息的操作,并将查询结果存储在 List<Notice> 类型的变量 notices 中。

  4. 通过 System.out.println("发送过来的数据为:"+n_state) 语句将获取到的公告状态信息打印到控制台。

  5. 最后,通过 JSONUtil.toJSON(resp, notices) 方法将查询到的公告信息以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理根据公告状态获取相关公告信息的请求操作,通过获取请求中的公告状态信息,然后调用服务层的 loginNotice 方法执行查询操作,最后将查询到的公告信息以 JSON 格式返回给前端页面。

6.7 ManagerServlet (管理员|宿管)

6.7.1 service(根据不同的方法调用相应的处理方法)

这段代码是一个 ManagerServlet 类,用于处理与管理员(Manager)相关的请求。下面是对代码的详细解释:

  1. 该 Servlet 使用 @WebServlet("/manager") 注解将 /manager 路径映射到该 Servlet。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对管理员信息的增删改查操作。

  3. 重写了 service 方法,该方法用于处理所有类型的请求(GET、POST、PUT 等)。

  4. 通过 req.getParameter("method") 获取请求中的参数 method,根据不同的方法调用相应的处理方法。

  5. 该类根据不同的 method 值分别调用以下方法:

    • queryGender:查询性别信息。
    • selectByPage:根据分页条件查询管理员信息。
    • deleteById:根据管理员的ID删除特定的管理员。
    • deleteAll:删除所有管理员。
    • add:添加新的管理员。
    • getManagerUpdatePage:获取管理员更新页面。
    • update:更新管理员信息。
    • selectAll:查询所有管理员信息。
  6. 在每个 case 分支中调用对应的处理方法来处理不同的管理员请求逻辑。

总的来说,这段代码通过解析请求中的 method 参数来确定要执行的具体操作,然后根据不同的操作调用不同的方法来处理管理员相关的业务逻辑。

6.7.2 selectAll(查询所有管理员信息的请求操作)

这段代码是 ManagerServlet 类中的 selectAll 方法的一部分。下面是对代码的详细解释:

  1. selectAll 方法用于查询所有管理员信息的请求操作。

  2. 通过调用 managerService.selectAll() 方法,执行查询所有管理员信息的操作,并将查询结果以 JSON 格式返回给前端页面。

  3. 在这段代码中,使用了 JSONUtil.toJSON(resp,managerService.selectAll()) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理查询所有管理员信息的请求操作,通过调用服务层的 selectAll 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.7.3 queryGender(处理查询性别信息的请求操作)

这段代码是 ManagerServlet 类的部分内容,该类使用 @WebServlet("/manager") 注解将 /manager 路径映射到该 Servlet。下面是对代码的详细解释:

  1. ManagerServlet 类中,声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。通常,这是一个用于处理管理员相关业务逻辑的接口,ManagerServiceImpl 则是其具体的实现类。

  2. 在类中定义了一个名为 queryGender 的私有方法,该方法用于处理查询性别信息的请求操作。

  3. queryGender 方法中,调用 managerService.queryGender() 方法来执行查询性别信息的操作,并将查询结果以 JSON 格式返回给前端页面,其中 JSONUtil.toJSON(resp,managerService.queryGender()) 用于将查询结果转换为 JSON 格式并发送到前端页面。

总的来说,这段代码负责处理 /manager 路径下的请求,包括处理查询性别信息的请求。在该 Servlet 中,根据具体业务需求,可能还包含其他用于处理管理员相关操作的方法。

6.7.4 update(处理对管理员信息进行更新的请求操作)

这段代码是 ManagerServlet 类中的 update 方法的一部分。下面是对代码的详细解释:

  1. ManagerServlet 类使用 @WebServlet("/manager") 注解将 /manager 路径映射到该 Servlet。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对管理员信息的增删改查操作。

  3. 重写了 update 方法,该方法用于处理对管理员信息进行更新的请求操作。

  4. 通过 req.getParameter 方法分别获取管理员的 ID、姓名、性别和图片信息。

  5. 使用获取的参数构建一个 Manager 对象 manager,其中包含了要更新的管理员的信息。

  6. 通过调用 managerService.update(manager) 方法来执行更新操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,创建一个 Result 对象 result,如果更新成功则返回一个带有 “修改成功” 消息的成功 Result 对象,如果更新失败则返回一个带有 “修改失败” 消息的错误 Result 对象。

  8. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理管理员信息的更新操作,首先从请求中获取要更新的管理员信息,然后调用服务层的 update 方法执行更新操作,最后将更新结果以 JSON 格式返回给前端页面。

6.7.5 getManagerUpdatePage(获取管理员更新页面的请求操作)

这段代码是 ManagerServlet 类中的 getManagerUpdatePage 方法的一部分。下面是对代码的详细解释:

  1. getManagerUpdatePage 方法用于获取管理员更新页面的请求操作。

  2. 首先从请求参数中获取 id,该参数表示要更新的管理员的唯一标识符。

  3. 通过调用 managerService.selectById(Integer.parseInt(id)) 方法,根据获取到的 id 获取相应的管理员信息,并将其存储在 Manager 对象 manager 中。

  4. 使用 req.setAttribute("manager", manager) 将获取到的管理员信息设置为请求属性,以便在前端页面中可以获取和显示该管理员信息。

  5. 通过调用 req.getRequestDispatcher("Manager/manager_update.jsp").forward(req, resp) 方法将请求转发到 Manager/manager_update.jsp 页面,以便在该页面中展示要更新的管理员信息。

总的来说,这段代码用于处理获取管理员更新页面的请求,通过获取请求参数中的管理员标识符 id,然后根据该标识符从数据库中获取相应的管理员信息,并将其传递到前端页面以便进行展示和更新操作。

6.7.6 add(处理添加管理员的请求操作)

这段代码是 ManagerServlet 类中的 add 方法的一部分。下面是对代码的详细解释:

  1. ManagerServlet 类使用 @WebServlet("/manager") 注解将 /manager 路径映射到该 Servlet。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。这表示存在一个与管理员相关的服务接口,并且当前实例化的是该服务接口的具体实现。

  3. add 方法用于处理添加管理员的请求操作。

  4. 通过 req.getParameter 方法获取请求中的管理员姓名 name、性别 gender 和图片信息 image

  5. 使用获取的参数构建一个 Manager 对象 manager,其中包含了要添加的管理员的信息。

  6. 通过调用 managerService.add(manager) 方法来执行添加管理员的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,如果添加成功则通过 JSONUtil.toJSON(resp,Result.ok("添加成功")) 方法返回一个表示成功的 Result 对象,如果添加失败则通过 JSONUtil.toJSON(resp,Result.error("添加失败")) 方法返回一个表示失败的 Result 对象。

  8. 代码中注释掉了 resp.sendRedirect(req.getContextPath() + "/manager"); 这行代码,它的作用是在添加完成后重定向到管理员页面,但由于被注释掉了,所以该功能不会执行。

总的来说,这段代码负责处理添加管理员的请求操作,首先从请求中获取要添加的管理员信息,然后调用服务层的 add 方法执行添加操作,最后根据执行结果以 JSON 格式返回相应的操作结果。

6.7.7 deleteById(根据管理员ID删除管理员的请求操作)

这段代码是一个名为 ManagerServlet 的Servlet类,用于处理与管理员(Manager)相关的请求操作。下面是对代码的详细解释:

  1. 该Servlet类使用 @WebServlet("/manager") 注解将 /manager 路径映射到该Servlet。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对管理员信息的增删改查操作。

  3. 该类包含了一个名为 deleteById 的私有方法,用于处理根据管理员ID删除管理员的请求操作。

  4. deleteById 方法中,首先从请求参数中获取要删除的管理员的ID,然后通过调用 managerService.deleteById(Integer.parseInt(id)) 方法执行删除操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  5. 根据 isSuccess 的值,如果删除成功,则通过 JSONUtil.toJSON(resp,Result.ok()) 方法返回一个表示成功的 Result 对象,如果删除失败,则通过 JSONUtil.toJSON(resp,Result.error()) 方法返回一个表示失败的 Result 对象。

  6. 代码中注释掉了 resp.sendRedirect(req.getContextPath() + "/manager"); 这行代码,它的作用是在删除完成后重定向到 manager 页面,但由于被注释掉了,所以该功能不会执行。

总的来说,这段代码负责处理根据管理员ID删除管理员的请求操作,首先从请求中获取要删除的管理员的ID,然后调用服务层的 deleteById 方法执行删除操作,最后根据执行结果以 JSON 格式返回相应的操作结果。

6.7.8 deleteAll(处理删除所有选定管理员的请求操作)

这段代码是 ManagerServlet 类中的 deleteAll 方法的一部分。根据代码中的内容可以推断 ManagerServlet 类用于处理与管理员(Manager)相关的请求。下面是对代码的详细解释:

  1. 该 Servlet 使用 @WebServlet("/manager") 注解将 /manager 路径映射到该 Servlet。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,并通过 new ManagerServiceImpl() 进行实例化。这可能是一个用于处理管理员相关业务逻辑的服务层接口。

  3. 重写了 deleteAll 方法,该方法用于处理删除所有选定管理员的请求操作。

  4. 通过 req.getParameterValues("ids[]") 获取选定管理员的ID数组,其中参数名为 “ids[]”。

  5. 通过调用 managerService.deleteAll(ids) 方法,传递选定的管理员ID数组,执行批量删除操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  6. 根据 isSuccess 的值,创建一个 Result 对象 result,如果删除成功则返回一个带有 “删除成功” 消息的成功 Result 对象,如果删除失败则返回一个带有 “删除失败” 消息的错误 Result 对象。

  7. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理删除所有选定管理员的请求操作,首先从请求中获取选定管理员的ID数组,然后调用服务层的 deleteAll 方法执行批量删除操作,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.7.9 selectByPage(处理分页查询管理员的请求操作)

这段代码是 ManagerServlet 类中的 selectByPage 方法的一部分。下面是对代码的详细解释:

  1. ManagerServlet 类被 @WebServlet("/manager") 注解标记,表示该 Servlet 处理与管理员(Manager)相关的请求。

  2. 在类中声明了一个 IManagerService 接口的实例 managerService,通过 new ManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对管理员信息的增删改查操作。

  3. selectByPage 方法用于处理分页查询管理员的请求操作。

  4. 通过 req.getParameter("page") 获取请求中的页数参数 page,如果该参数为空或未设置,则将其设为默认值 1。

  5. 通过 req.getParameter("limit") 获取请求中的每页限制数参数 limit,如果该参数为空或未设置,则将其设为默认值 10。

  6. 将获取到的 pagelimit 参数转换为整数类型。

  7. 通过 req.getParameter("name")req.getParameter("gender") 获取请求中的管理员姓名和性别关键词。

  8. 根据获取到的 pagelimitnamegender 构造一个 ManagerQuery 对象 managerQuery,该对象包含了分页信息和查询关键词。

  9. 通过调用 managerService.selectByPage(managerQuery) 方法执行分页查询操作,并将查询结果存储在 LayUITableResult 对象 layUITableResult 中。

  10. 最后,通过 JSONUtil.toJSON(resp, layUITableResult) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理分页查询管理员的请求操作,通过获取请求中的分页信息和查询关键词,构造查询条件对象,然后调用服务层的 selectByPage 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.8 DormitoryServlet(宿舍)

6.8.1 service(不同的方法处理与宿舍相关的请求操作)

这段代码是 DormitoryServlet 类中的 service 方法的一部分,用于根据传入的 method 参数来调用相应的方法处理请求。以下是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. service 方法通过检查传入的 method 参数来确定要执行的操作。

  4. 如果 method 参数是 “selectByPage”,则调用 selectByPage 方法处理分页查询的请求。

  5. 如果 method 参数是 “deleteById”,则调用 deleteById 方法处理根据 ID 删除的请求。

  6. 如果 method 参数是 “deleteAll”,则调用 deleteAll 方法处理批量删除的请求。

  7. 如果 method 参数是 “add”,则调用 add 方法处理添加宿舍的请求。

  8. 如果 method 参数是 “getDormitoryUpdatePage”,则调用 getDormitoryUpdatePage 方法处理获取宿舍更新页面的请求。

  9. 如果 method 参数是 “update”,则调用 update 方法处理更新宿舍信息的请求。

  10. 如果 method 参数是 “selectByBuilding”,则调用 selectByBuilding 方法处理根据楼栋选择宿舍的请求。

总的来说,这段代码负责根据传入的 method 参数来调用不同的方法处理与宿舍相关的请求操作。根据不同的 method 值,选择调用不同的方法来执行相应的操作。

6.8.2 selectByBuilding(根据宿舍楼ID查询该宿舍楼下的所有宿舍信息)

这段代码是 DormitoryServlet 类中的 selectByBuilding 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. selectByBuilding 方法用于根据宿舍楼ID查询该宿舍楼下的所有宿舍信息。

  4. 通过 req.getParameter("buildingId") 获取请求中的宿舍楼ID参数 buildingId

  5. 将获取到的 buildingId 参数转换为整数类型。

  6. 通过调用 dormitoryService.selectByBuilding(Integer.parseInt(buildingId)) 方法执行根据宿舍楼ID查询宿舍信息的操作。

  7. 最后,通过 JSONUtil.toJSON(resp, ...) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理根据宿舍楼ID查询该宿舍楼下的所有宿舍信息的请求操作,通过获取请求中的宿舍楼ID,然后调用服务层的 selectByBuilding 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.8.3 update(处理更新宿舍信息的请求操作)

这段代码是 DormitoryServlet 类中的 update 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. update 方法用于处理更新宿舍信息的请求操作。

  4. 通过 req.getParameter("id")req.getParameter("tag")req.getParameter("contain")req.getParameter("note")req.getParameter("buildingId") 分别获取请求中的宿舍ID、标签、容纳人数、备注和所属楼栋ID等参数。

  5. 将获取到的参数转换为对应的数据类型,并使用这些信息构建一个 Dormitory 对象 dormitory,包含了要更新的宿舍的信息。

  6. 通过调用 dormitoryService.update(dormitory) 方法执行更新操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,创建一个 Result 对象 result,如果更新成功则返回一个带有 “修改成功” 消息的成功 Result 对象,如果更新失败则返回一个带有 “修改失败” 消息的错误 Result 对象。

  8. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理更新宿舍信息的请求操作,首先从请求中获取要更新的宿舍信息,然后调用服务层的 update 方法执行更新操作,最后将更新结果以 JSON 格式返回给前端页面。

6.8.4 getDormitoryUpdatePage(获取宿舍更新页面的请求操作)

这段代码是 DormitoryServlet 类中的 getDormitoryUpdatePage 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. getDormitoryUpdatePage 方法用于获取宿舍更新页面的请求操作。

  4. 通过 req.getParameter("id") 获取请求中的宿舍ID参数 id,该参数表示要更新的宿舍的唯一标识符。

  5. 通过调用 dormitoryService.selectById(Integer.parseInt(id)) 方法,根据获取到的 id 获取相应的宿舍信息,并将其存储在 Dormitory 对象 dormitory 中。

  6. 使用 req.setAttribute("dormitory", dormitory) 将获取到的宿舍信息设置为请求属性,以便在前端页面中可以获取和显示该宿舍信息。

  7. 通过调用 req.getRequestDispatcher("Dormitory/dormitory_update.jsp").forward(req, resp) 方法将请求转发到 Dormitory/dormitory_update.jsp 页面,以便在该页面中展示要更新的宿舍信息。

总的来说,这段代码用于处理获取宿舍更新页面的请求,通过获取请求参数中的宿舍标识符 id,然后根据该标识符从数据库中获取相应的宿舍信息,并将其传递到前端页面以便进行展示和更新操作。

6.8.5 add(处理添加宿舍信息的请求操作)

这段代码是 DormitoryServlet 类中的 add 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. add 方法用于处理添加宿舍信息的请求操作。

  4. 通过 req.getParameter 方法获取请求中的宿舍标签 tag、容纳人数 contain、备注 note 和所属楼栋ID buildingId

  5. 通过判断 buildingId 是否为空或为null,如果是则通过 JSONUtil.toJSON(resp,Result.error("添加数据不能为空")) 方法返回一个错误 Result 对象,并结束方法的执行。

  6. 根据获取到的参数构建一个 Dormitory 对象 dormitory,包含了要添加的宿舍信息。

  7. 通过调用 dormitoryService.add(dormitory) 方法执行添加宿舍的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  8. 根据 isSuccess 的值,如果添加成功则通过 JSONUtil.toJSON(resp,Result.ok("添加成功")) 方法返回一个带有 “添加成功” 消息的成功 Result 对象,如果添加失败则通过 JSONUtil.toJSON(resp,Result.error("添加失败")) 方法返回一个带有 “添加失败” 消息的错误 Result 对象。

总的来说,这段代码负责处理添加宿舍信息的请求操作,首先从请求中获取宿舍相关的信息,然后判断是否存在空值,接着调用服务层的 add 方法执行添加操作,最后将添加操作的执行结果以 JSON 格式返回给前端页面。

6.8.6 deleteById(处理根据宿舍ID删除宿舍的请求操作)

这段代码是 DormitoryServlet 类中的 deleteById 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. deleteById 方法用于处理根据宿舍ID删除宿舍的请求操作。

  4. 通过 req.getParameter("id") 获取请求中的宿舍ID参数 id

  5. 通过调用 dormitoryService.deleteById(Integer.parseInt(id)) 方法,根据获取到的宿舍ID执行删除宿舍的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  6. 根据 isSuccess 的值,如果删除成功,则通过 JSONUtil.toJSON(resp,Result.ok()) 方法返回一个表示成功的 Result 对象,如果删除失败,则通过 JSONUtil.toJSON(resp,Result.error()) 方法返回一个表示失败的 Result 对象。

总的来说,这段代码负责处理根据宿舍ID删除宿舍的请求操作,首先从请求中获取宿舍ID,然后调用服务层的 deleteById 方法执行删除操作,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.8.7 deleteAll(处理删除所有选定宿舍的请求操作)

这段代码是 DormitoryServlet 类中的 deleteAll 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. deleteAll 方法用于处理删除所有选定宿舍的请求操作。

  4. 通过 req.getParameterValues("ids[]") 获取选定宿舍的ID数组,其中参数名为 “ids[]”。

  5. 通过调用 dormitoryService.deleteAll(ids) 方法,传递选定的宿舍ID数组,执行批量删除操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  6. 根据 isSuccess 的值,创建一个 Result 对象 result,如果删除成功则返回一个带有 “删除成功” 消息的成功 Result 对象,如果删除失败则返回一个带有 “删除失败” 消息的错误 Result 对象。

  7. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理批量删除选定宿舍的请求操作,首先从请求中获取选定宿舍的ID数组,然后调用服务层的 deleteAll 方法执行批量删除操作,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.8.8 selectByPage(处理分页查询宿舍的请求操作)

这段代码是 DormitoryServlet 类中的 selectByPage 方法的一部分。下面是对代码的详细解释:

  1. DormitoryServlet 类被 @WebServlet("/dormitory") 注解标记,表示该 Servlet 处理与宿舍(Dormitory)相关的请求。

  2. 在类中声明了一个 IDormitoryService 接口的实例 dormitoryService,通过 new DormitoryServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍信息的增删改查操作。

  3. selectByPage 方法用于处理分页查询宿舍的请求操作。

  4. 通过 req.getParameter("page") 获取请求中的页数参数 page,如果该参数为空或未设置,则将其设为默认值 1。

  5. 通过 req.getParameter("limit") 获取请求中的每页限制数参数 limit,如果该参数为空或未设置,则将其设为默认值 10。

  6. 将获取到的 pagelimit 参数转换为整数类型。

  7. 通过 req.getParameter("tag")req.getParameter("buildingTag") 获取请求中的宿舍标签和楼栋标签关键词。

  8. 根据获取到的 pagelimittagbuildingTag 构造一个 DormitoryQuery 对象 dormitoryQuery,该对象包含了分页信息和查询关键词。

  9. 通过调用 dormitoryService.selectByPage(dormitoryQuery) 方法执行分页查询操作,并将查询结果存储在 LayUITableResult 对象 layUITableResult 中。

  10. 最后,通过 JSONUtil.toJSON(resp, layUITableResult) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理分页查询宿舍的请求操作,通过获取请求中的分页信息和查询关键词,构造查询条件对象,然后调用服务层的 selectByPage 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.9 BuildingServlet(公寓楼)

6.9.1 service(根据传入的 method 参数来决定调用不同的方法来处理不同的请求操作)

这段代码是 BuildingServlet 类的一部分,其中根据传入的 method 参数来决定调用不同的方法来处理不同的请求操作。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与建筑物(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对建筑物信息的增删改查操作。

  3. 重写了 service 方法,根据传入的 method 参数来决定调用不同的方法来处理不同的请求操作。

  4. service 方法中使用了 switch 语句来根据不同的 method 值调用不同的方法,例如 queryAllocationqueryStudentNumselectByPagedeleteByIddeleteAlladdgetBuildingUpdatePageupdateselectAll 方法。

  5. 每个 case 分支对应了不同的请求处理逻辑,包括查询分配情况、查询学生数量、分页查询建筑物、根据ID删除建筑物、批量删除建筑物、添加建筑物、获取建筑物更新页面、更新建筑物信息和查询所有建筑物信息。

总的来说,这段代码负责根据传入的 method 参数调用不同的方法来处理不同的建筑物相关请求,根据具体的请求处理逻辑进行相应的操作,并返回处理结果。

6.9.2 selectAll(处理获取所有楼栋信息的请求操作)

这段代码是 BuildingServlet 类中的 selectAll 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与宿舍楼栋(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍楼栋信息的增删改查操作。

  3. selectAll 方法用于处理获取所有楼栋信息的请求操作。

  4. 通过 req.getParameter("gender") 获取请求中的性别参数 gender,该参数可能用于区分不同性别的宿舍楼栋信息。

  5. 在控制台打印获取到的性别信息,以便进行调试或验证。

  6. 通过调用 buildingService.selectAll(gender) 方法获取指定性别的所有楼栋信息,并将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理获取所有楼栋信息的请求操作,通过获取请求中的性别参数,调用服务层的 selectAll 方法获取相应性别的所有楼栋信息,并将结果以 JSON 格式返回给前端页面。

6.9.3 queryStudentNum(查询学生数量的请求操作)

这段代码是 BuildingServlet 类中的 queryStudentNum 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与楼栋(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对楼栋信息的增删改查操作。

  3. queryStudentNum 方法用于查询学生数量的请求操作。

  4. 通过调用 buildingService.queryStudentNum() 方法,执行查询学生数量的操作。

  5. 最后,通过 JSONUtil.toJSON(resp,buildingService.queryStudentNum()) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理查询学生数量的请求操作,通过调用服务层的 queryStudentNum 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.9.4 queryAllocation(处理查询宿舍楼栋分配情况的请求操作)

这段代码是 BuildingServlet 类中的 queryAllocation 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与宿舍楼栋(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍楼栋信息的查询操作。

  3. queryAllocation 方法用于处理查询宿舍楼栋分配情况的请求操作。

  4. 通过调用 buildingService.queryAllocation() 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

  5. 最后,通过 JSONUtil.toJSON(resp, buildingService.queryAllocation()) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理查询宿舍楼栋分配情况的请求操作,通过调用服务层的 queryAllocation 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.9.5 update(处理更新楼栋信息的请求操作)

这段代码是 BuildingServlet 类中的 update 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与楼栋(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对楼栋信息的增删改查操作。

  3. update 方法用于处理更新楼栋信息的请求操作。

  4. 通过 req.getParameter("id")req.getParameter("tag")req.getParameter("roomsMax")req.getParameter("note")req.getParameter("gender") 获取请求中的楼栋ID、标签、最大房间数、备注和性别等参数。

  5. 将获取到的参数转换为对应的数据类型,并使用这些参数构造一个 Building 对象 building

  6. 通过调用 buildingService.update(building) 方法,执行更新楼栋信息的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,创建一个 Result 对象 result,如果更新成功则返回一个带有 “修改成功” 消息的成功 Result 对象,如果更新失败则返回一个带有 “修改失败” 消息的错误 Result 对象。

  8. 最后,通过 JSONUtil.toJSON(resp, result) 方法将更新结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理更新楼栋信息的请求操作,通过获取请求中的楼栋相关信息,构造楼栋对象,然后调用服务层的 update 方法执行更新操作,最后将更新结果以 JSON 格式返回给前端页面。

6.9.6 getBuildingUpdatePage(获取公寓楼更新页面的请求操作)

这段代码是 BuildingServlet 类中的 getBuildingUpdatePage 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与建筑物(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对建筑物信息的增删改查操作。

  3. getBuildingUpdatePage 方法用于获取建筑物更新页面的请求操作。

  4. 通过 req.getParameter("id") 获取请求中的建筑物ID参数 id,并将其转换为整数类型。

  5. 通过调用 buildingService.selectById(Integer.parseInt(id)) 方法,根据获取到的 id 获取相应的建筑物信息,并将其存储在 Building 对象 building 中。

  6. 使用 req.setAttribute("building", building) 将获取到的建筑物信息设置为请求属性,以便在前端页面中可以获取和显示该建筑物信息。

  7. 通过调用 req.getRequestDispatcher("Building/building_update.jsp").forward(req, resp) 方法将请求转发到 building_update.jsp 页面,以便在该页面中展示要更新的建筑物信息。

总的来说,这段代码负责处理获取建筑物更新页面的请求操作,通过获取请求中的建筑物ID,然后根据该ID从数据库中获取相应的建筑物信息,并将其传递到前端页面以便进行展示和更新操作。

6.9.7 add(处理添加公寓楼的请求操作)

这段代码是 BuildingServlet 类中的 add 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与建筑物(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对建筑物信息的增删改查操作。

  3. add 方法用于处理添加建筑物的请求操作。

  4. 通过 req.getParameter("tag")req.getParameter("roomsMax")req.getParameter("note")req.getParameter("gender") 获取请求中的建筑物标签、最大房间数、备注信息和性别信息。

  5. 根据获取到的参数构造一个 Building 对象 building

  6. 通过调用 buildingService.add(building) 方法,将构造的 Building 对象作为参数传递进去执行添加建筑物的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,如果添加成功则通过 JSONUtil.toJSON(resp,Result.ok("添加成功")) 方法返回一个带有 “添加成功” 消息的成功 Result 对象,如果添加失败则通过 JSONUtil.toJSON(resp,Result.error("添加失败")) 方法返回一个带有 “添加失败” 消息的错误 Result 对象。

总的来说,这段代码负责处理添加建筑物的请求操作,通过获取请求中的建筑物相关信息,构造建筑物对象,然后调用服务层的 add 方法执行添加操作,并根据执行结果以 JSON 格式返回相应的操作结果。

6.9.8 deleteById(处理根据建筑物ID删除建筑物的请求操作)

这段代码是 BuildingServlet 类中的 deleteById 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与建筑物(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对建筑物信息的增删改查操作。

  3. deleteById 方法用于处理根据建筑物ID删除建筑物的请求操作。

  4. 通过 req.getParameter("id") 获取请求中的建筑物ID参数 id

  5. 将获取到的 id 转换为对应的数据类型。

  6. 通过调用 buildingService.deleteById(Integer.parseInt(id)) 方法,执行删除建筑物的操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  7. 根据 isSuccess 的值,如果删除成功,则通过 JSONUtil.toJSON(resp,Result.ok()) 方法返回一个表示成功的 Result 对象,如果删除失败,则通过 JSONUtil.toJSON(resp,Result.error()) 方法返回一个表示失败的 Result 对象。

总的来说,这段代码负责处理根据建筑物ID删除建筑物的请求操作,首先从请求中获取建筑物的ID,然后调用服务层的 deleteById 方法执行删除操作,最后根据执行结果以 JSON 格式返回相应的操作结果。

6.9.9 deleteAll(处理删除所有选定建筑物的请求操作)

这段代码是 BuildingServlet 类中的 deleteAll 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与建筑物(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对建筑物信息的增删改查操作。

  3. deleteAll 方法用于处理删除所有选定建筑物的请求操作。

  4. 通过 req.getParameterValues("ids[]") 获取选定建筑物的ID数组,其中参数名为 “ids[]”。

  5. 通过调用 buildingService.deleteAll(ids) 方法,传递选定的建筑物ID数组,执行批量删除操作,并将操作的执行结果存储在布尔类型的变量 isSuccess 中。

  6. 根据 isSuccess 的值,创建一个 Result 对象 result,如果删除成功则返回一个带有 “删除成功” 消息的成功 Result 对象,如果删除失败则返回一个带有 “删除失败” 消息的错误 Result 对象。

  7. 最后,通过 JSONUtil.toJSON(resp, result) 方法将结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理批量删除选定建筑物的请求操作,首先从请求中获取选定建筑物的ID数组,然后调用服务层的 deleteAll 方法执行批量删除操作,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.9.10 selectByPage(处理分页查询楼栋的请求操作)

这段代码是 BuildingServlet 类中的 selectByPage 方法的一部分。下面是对代码的详细解释:

  1. BuildingServlet 类被 @WebServlet("/building") 注解标记,表示该 Servlet 处理与楼栋(Building)相关的请求。

  2. 在类中声明了一个 IBuildingService 接口的实例 buildingService,通过 new BuildingServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对楼栋信息的增删改查操作。

  3. selectByPage 方法用于处理分页查询楼栋的请求操作。

  4. 通过 req.getParameter("page") 获取请求中的页数参数 page,如果该参数为空或未设置,则将其设为默认值 1。

  5. 通过 req.getParameter("limit") 获取请求中的每页限制数参数 limit,如果该参数为空或未设置,则将其设为默认值 10。

  6. 将获取到的 pagelimit 参数转换为整数类型。

  7. 通过 req.getParameter("tag")req.getParameter("gender") 获取请求中的楼栋标签和性别关键词。

  8. 根据获取到的 pagelimittaggender 构造一个 BuildingQuery 对象 buildingQuery,该对象包含了分页信息和查询关键词。

  9. 通过调用 buildingService.selectByPage(buildingQuery) 方法执行分页查询操作,并将查询结果存储在 LayUITableResult 对象 layUITableResult 中。

  10. 最后,通过 JSONUtil.toJSON(resp, layUITableResult) 方法将查询结果以 JSON 格式返回给前端页面。

总的来说,这段代码负责处理分页查询楼栋的请求操作,通过获取请求中的分页信息和查询关键词,构造查询条件对象,然后调用服务层的 selectByPage 方法执行查询操作,并将查询结果以 JSON 格式返回给前端页面。

6.10 BuildingManagerServlet(宿舍管理员)

6.10.1 service(根据传入的 method 参数值来调用不同的方法处理与宿舍管理员相关的请求操作)

这段代码是 BuildingManagerServlet 类的一部分,它包含一个 service 方法,用于根据传入的 method 参数调用相应的方法处理请求。下面是对代码的详细解释:

  1. BuildingManagerServlet 类被 @WebServlet("/buildingManager") 注解标记,表示该 Servlet 处理与宿舍管理员(Building Manager)相关的请求。

  2. 在类中声明了一个 IBuildingManagerService 接口的实例 buildingManagerService,通过 new BuildingManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍管理员信息的增删改操作。

  3. service 方法根据传入的 method 参数值决定调用哪个具体的方法来处理请求,它使用 switch 语句根据 method 的不同值来调用相应的方法。

  4. 如果 method 为 “add”,则调用 add 方法处理请求;如果 method 为 “delete”,则调用 delete 方法处理请求;如果 method 为 “change”,则调用 change 方法处理请求。

总的来说,这段代码负责根据传入的 method 参数值来调用不同的方法处理与宿舍管理员相关的请求操作。根据不同的操作类型,可以执行添加、删除或修改宿舍管理员信息的操作。

6.10.2 change(处理更改楼栋管理员信息的请求操作)

这段代码是 BuildingManagerServlet 类中的 change 方法的一部分。下面是对代码的详细解释:

  1. BuildingManagerServlet 类被 @WebServlet("/buildingManager") 注解标记,表示该 Servlet 处理与楼栋管理员(Building Manager)相关的请求。

  2. 在类中声明了一个 IBuildingManagerService 接口的实例 buildingManagerService,通过 new BuildingManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对楼栋管理员信息的更改操作。

  3. change 方法用于处理更改楼栋管理员信息的请求操作。

  4. 通过 req.getParameter("buildingId")req.getParameter("managerId") 获取请求中的楼栋ID和管理员ID参数。

  5. 如果获取到的 buildingIdmanagerId 为空或空字符串,通过 JSONUtil.toJSON(resp,Result.error("数据不能为空")) 方法返回一个包含错误信息的 Result 对象,并结束方法的执行。

  6. 如果获取到了非空的 buildingIdmanagerId,则将它们转换为整数类型,并构造一个 BuildingManager 对象 buildingManager

  7. 通过调用 buildingManagerService.change(buildingManager) 方法,执行更改楼栋管理员的操作。

  8. 根据更改操作的执行结果,如果操作成功,则通过 JSONUtil.toJSON(resp, Result.ok("更改成功")) 方法返回一个带有成功信息的 Result 对象,如果操作失败,则通过 JSONUtil.toJSON(resp,Result.error("更改失败")) 方法返回一个带有错误信息的 Result 对象。

总的来说,这段代码负责处理更改楼栋管理员信息的请求操作,通过获取请求中的楼栋ID和管理员ID,构造相应的对象,然后调用服务层的 change 方法执行更改操作,并根据操作结果以 JSON 格式返回相应的操作信息。

6.10.3 delete(用于处理删除宿舍管理员的请求操作)

这段代码是 BuildingManagerServlet 类中的 delete 方法的一部分。下面是对代码的详细解释:

  1. BuildingManagerServlet 类被 @WebServlet("/buildingManager") 注解标记,表示该 Servlet 处理与宿舍管理员(Building Manager)相关的请求。

  2. 在类中声明了一个 IBuildingManagerService 接口的实例 buildingManagerService,通过 new BuildingManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对宿舍管理员信息的增删改查操作。

  3. delete 方法用于处理删除宿舍管理员的请求操作。

  4. 通过 req.getParameter("buildingId") 获取请求中的宿舍管理员的建筑ID参数 buildingId

  5. 首先检查 buildingId 是否为空,如果为空,则通过 JSONUtil.toJSON(resp,Result.error("数据不能为空")) 方法返回一个包含错误信息的 Result 对象,并终止方法的执行。

  6. 构造一个 BuildingManager 对象 buildingManager,该对象包含要删除的宿舍管理员的建筑ID信息。

  7. 调用 buildingManagerService.delete(buildingManager) 方法执行删除操作,并根据删除操作的执行结果,通过 JSONUtil.toJSON(resp, Result.ok("删除成功"))JSONUtil.toJSON(resp,Result.error("删除失败")) 方法返回相应的操作结果信息。

总的来说,这段代码负责处理删除宿舍管理员的请求操作,通过获取请求中的建筑ID信息,构造宿舍管理员对象并调用服务层的删除方法,最后将删除操作的执行结果以 JSON 格式返回给前端页面。

6.10.4 add(处理添加楼栋管理员的请求操作)

这段代码是 BuildingManagerServlet 类中的 add 方法的一部分。下面是对代码的详细解释:

  1. BuildingManagerServlet 类被 @WebServlet("/buildingManager") 注解标记,表示该 Servlet 处理与楼栋管理员(Building Manager)相关的请求。

  2. 在类中声明了一个 IBuildingManagerService 接口的实例 buildingManagerService,通过 new BuildingManagerServiceImpl() 进行实例化。通常这是一个业务逻辑的接口,该接口的具体实现可能包含对楼栋管理员信息的增删改查操作。

  3. add 方法用于处理添加楼栋管理员的请求操作。

  4. 通过 req.getParameter("buildingId")req.getParameter("managerId") 获取请求中的楼栋ID和管理员ID参数。

  5. 首先进行数据的非空校验,如果任何一个参数为空,则通过 JSONUtil.toJSON(resp,Result.error("数据不能为空")) 方法返回一个带有 “数据不能为空” 消息的错误 Result 对象,并终止方法的执行。

  6. 如果数据非空,将获取到的楼栋ID和管理员ID封装为 BuildingManager 对象 buildingManager

  7. 通过调用 buildingManagerService.add(buildingManager) 方法,执行添加楼栋管理员的操作。

  8. 根据添加操作的执行结果,如果添加成功,则通过 JSONUtil.toJSON(resp, Result.ok("添加成功")) 方法返回一个带有 “添加成功” 消息的成功 Result 对象,如果添加失败,则通过 JSONUtil.toJSON(resp,Result.error("添加失败")) 方法返回一个带有 “添加失败” 消息的错误 Result 对象。

总的来说,这段代码负责处理添加楼栋管理员的请求操作,首先从请求中获取楼栋ID和管理员ID,并进行非空校验,然后调用服务层的 add 方法执行添加操作,并将添加操作的执行结果以 JSON 格式返回给前端页面。

7、注解

7.1 @WebServlet

@WebServlet 用于将一个类声明为 Servlet,该注解会在部署时被容器处理,容器根据其具体的属性配置将相应的类部署为 Servlet。
@WebServlet 属于类级别的注解,标注在继承了 HttpServlet 的类之上。常用的写法是将 Servlet 的相对请求路径(即 value)直接写在注解内,如下所示。

@WebServlet("/MyServlet") 
  • 1

7.2 @Override

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。

7.3 @WebFilter

@WebFilter 用于将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器。该注解具有下表给出的一些常用属性 ( 以下所有属性均为可选属性,但是 value、urlPatterns、servletNames 三者必需至少包含一个,且 value 和 urlPatterns 不能共存,如果同时指定,通常忽略 value 的取值 )

8、JSON数据格式

包含状态码、返回消息、数据

1. 列表数据

{
  "success": true,
  "code": 20000,
  "message": "成功",
  "data": {
    "items": [
      {
        "id": "1",
        "name": "刘德华",
        "intro": "热爱教育事业"
      }
    ]
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.分页数据

{
  "success": true,
  "code": 20000,
  "message": "成功",
  "data": {
    "total": 17,
    "rows": [
      {
        "id": "1",
        "name": "刘德华",
        "intro": "热爱教育事业"
      }
    ]
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.没有返回数据

{
  "success": true,
  "code": 20000,
  "message": "成功",
  "data": {}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4.失败

{
  "success": false,
  "code": 20001,
  "message": "失败",
  "data": {}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5.统一定义格式

{
  "success": 布尔, //响应是否成功
  "code": 数字, //响应码
  "message": 字符串, //返回消息
  "data": HashMap //返回数据,放在键值对中
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/525801
推荐阅读
相关标签
  

闽ICP备14008679号