|
|
@ -1,6 +1,5 @@
|
|
|
|
package com.itheima.controller;
|
|
|
|
package com.itheima.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.itheima.po.Admin;
|
|
|
|
import com.itheima.po.Admin;
|
|
|
|
import com.itheima.po.PageInfo;
|
|
|
|
import com.itheima.po.PageInfo;
|
|
|
|
import com.itheima.service.AdminService;
|
|
|
|
import com.itheima.service.AdminService;
|
|
|
@ -13,117 +12,148 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 用户控制器类
|
|
|
|
* 用户控制器类,用于处理与管理员相关的各类业务操作,如登录、查询、添加、删除、修改等,并和相应视图进行交互
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@Controller
|
|
|
|
@Controller
|
|
|
|
public class AdminController {
|
|
|
|
public class AdminController {
|
|
|
|
// 依赖注入
|
|
|
|
|
|
|
|
|
|
|
|
// 依赖注入,通过Spring框架自动装配AdminService的实例,方便在本类中调用其提供的业务方法
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private AdminService adminService;
|
|
|
|
private AdminService adminService;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 用户登录
|
|
|
|
* 用户登录的方法
|
|
|
|
*/
|
|
|
|
* 接收前端传入的包含用户名和密码等信息的Admin对象,以及Model、HttpSession、HttpServletRequest对象,用于后续的数据处理、会话管理和请求相关操作
|
|
|
|
/**
|
|
|
|
* 此方法的主要功能是验证用户登录信息并根据验证结果进行相应的页面跳转
|
|
|
|
* 将提交数据(username,password)写入Admin对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/login")
|
|
|
|
@RequestMapping(value = "/login")
|
|
|
|
public String login( Admin admin, Model model, HttpSession session, HttpServletRequest request) {
|
|
|
|
public String login(Admin admin, Model model, HttpSession session, HttpServletRequest request) {
|
|
|
|
// 通过账号和密码查询用户
|
|
|
|
// 通过账号和密码查询用户
|
|
|
|
|
|
|
|
// 对用户输入的密码进行MD5加密处理,保证密码在传输和存储过程中的安全性,使用MD5Util工具类的MD5EncodeUtf8方法进行加密
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
|
|
|
|
// 调用AdminService的findAdmin方法,根据传入的包含加密后密码的Admin对象去数据库等存储介质中查找对应的管理员信息
|
|
|
|
Admin ad = adminService.findAdmin(admin);
|
|
|
|
Admin ad = adminService.findAdmin(admin);
|
|
|
|
if(ad!=null){
|
|
|
|
// 如果查找到对应的管理员信息(即验证通过)
|
|
|
|
|
|
|
|
if (ad!= null) {
|
|
|
|
|
|
|
|
// 将查询到的管理员信息存入HttpSession中,方便在后续的页面访问中获取管理员相关数据,比如权限判断等
|
|
|
|
session.setAttribute("ad", ad);
|
|
|
|
session.setAttribute("ad", ad);
|
|
|
|
|
|
|
|
// 登录成功,返回"homepage"视图名称,通常会跳转到系统的首页等相关页面
|
|
|
|
return "homepage";
|
|
|
|
return "homepage";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 如果未找到对应的管理员信息(验证失败),向Model中添加错误提示信息,用于在登录页面展示给用户
|
|
|
|
model.addAttribute("msg", "用户名或密码错误,请重新登录!");
|
|
|
|
model.addAttribute("msg", "用户名或密码错误,请重新登录!");
|
|
|
|
|
|
|
|
// 返回"login"视图名称,即跳回登录页面,让用户重新输入登录信息
|
|
|
|
return "login";
|
|
|
|
return "login";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 退出登录
|
|
|
|
* 退出登录的方法
|
|
|
|
|
|
|
|
* 接收Admin对象、Model对象和HttpSession对象,主要功能是使当前的HttpSession失效,实现用户退出登录的操作,然后跳回登录页面
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/loginOut")
|
|
|
|
@RequestMapping(value = "/loginOut")
|
|
|
|
public String loginOut(Admin admin, Model model, HttpSession session) {
|
|
|
|
public String loginOut(Admin admin, Model model, HttpSession session) {
|
|
|
|
|
|
|
|
// 使当前的HttpSession失效,清除会话中存储的所有数据,如用户登录信息等,实现退出登录的效果
|
|
|
|
session.invalidate();
|
|
|
|
session.invalidate();
|
|
|
|
|
|
|
|
// 返回"login"视图名称,跳转到登录页面
|
|
|
|
return "login";
|
|
|
|
return "login";
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 分页查询
|
|
|
|
* 分页查询管理员信息的方法
|
|
|
|
|
|
|
|
* 接收用于筛选管理员信息的多个参数,如用户名、描述、管理员ID、当前页码、每页显示数量等,以及Model对象用于向视图传递数据
|
|
|
|
|
|
|
|
* 此方法通过调用AdminService的findPageInfo方法进行分页查询操作,并将查询结果传递给视图展示
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/findAdmin")
|
|
|
|
@RequestMapping(value = "/findAdmin")
|
|
|
|
public String findAdmin(String a_username, String a_describe,Integer pageIndex,
|
|
|
|
public String findAdmin(String a_username, String a_describe, Integer pageIndex,
|
|
|
|
Integer a_id ,Integer pageSize, Model model) {
|
|
|
|
Integer a_id, Integer pageSize, Model model) {
|
|
|
|
|
|
|
|
|
|
|
|
PageInfo<Admin> ai = adminService.findPageInfo(a_username,a_describe,
|
|
|
|
// 调用AdminService的findPageInfo方法,传入相应的筛选参数,获取包含分页后的管理员信息的PageInfo对象
|
|
|
|
a_id,pageIndex,pageSize);
|
|
|
|
PageInfo<Admin> ai = adminService.findPageInfo(a_username, a_describe,
|
|
|
|
model.addAttribute("ai",ai);
|
|
|
|
a_id, pageIndex, pageSize);
|
|
|
|
|
|
|
|
// 将包含管理员信息的PageInfo对象存入Model中,以便传递给视图(如"admin_list"页面)进行展示
|
|
|
|
|
|
|
|
model.addAttribute("ai", ai);
|
|
|
|
|
|
|
|
// 返回"admin_list"视图名称,跳转到展示管理员信息列表的页面
|
|
|
|
return "admin_list";
|
|
|
|
return "admin_list";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 导出Excel
|
|
|
|
* 导出Excel的方法
|
|
|
|
|
|
|
|
* 该方法接收POST请求,使用@ResponseBody注解表示返回的数据会直接作为响应体内容,通常以JSON等格式返回给客户端(此处返回管理员列表数据)
|
|
|
|
|
|
|
|
* 主要功能是获取所有管理员信息,以便后续进行Excel文件生成等相关导出操作
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/exportadminlist" , method = RequestMethod.POST)
|
|
|
|
@RequestMapping(value = "/exportadminlist", method = RequestMethod.POST)
|
|
|
|
@ResponseBody
|
|
|
|
@ResponseBody
|
|
|
|
public List<Admin> exportAdmin(){
|
|
|
|
public List<Admin> exportAdmin() {
|
|
|
|
|
|
|
|
// 调用AdminService的getAll方法获取所有管理员信息的列表
|
|
|
|
List<Admin> admin = adminService.getAll();
|
|
|
|
List<Admin> admin = adminService.getAll();
|
|
|
|
|
|
|
|
// 返回管理员信息列表,便于后续进行Excel文件生成等相关操作
|
|
|
|
return admin;
|
|
|
|
return admin;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 添加管理员信息
|
|
|
|
* 添加管理员信息的方法
|
|
|
|
|
|
|
|
* 接收一个包含管理员信息的Admin对象(通过@RequestBody注解从请求体中获取JSON等格式数据并转换为Admin对象),对密码进行MD5加密后,调用业务层方法进行添加操作,然后返回视图名称"admin_list"
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping(value = "/addAdmin" ,method = RequestMethod.POST)
|
|
|
|
@RequestMapping(value = "/addAdmin", method = RequestMethod.POST)
|
|
|
|
@ResponseBody
|
|
|
|
@ResponseBody
|
|
|
|
public String addAdmin( @RequestBody Admin admin) {
|
|
|
|
public String addAdmin(@RequestBody Admin admin) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 对要添加的管理员对象中的密码进行MD5加密处理,保证密码存储的安全性
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
|
|
|
|
// 调用AdminService的addAdmin方法,传入加密后密码的Admin对象,执行添加管理员信息到数据库等存储介质的操作
|
|
|
|
int a = adminService.addAdmin(admin);
|
|
|
|
int a = adminService.addAdmin(admin);
|
|
|
|
|
|
|
|
// 返回视图名称"admin_list",用于页面刷新等操作,展示添加后的管理员信息列表情况
|
|
|
|
return "admin_list";
|
|
|
|
return "admin_list";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 删除管理员信息;将请求体a_id写入参数a_id
|
|
|
|
* 删除管理员信息的方法
|
|
|
|
|
|
|
|
* 接收要删除的管理员的ID作为参数,调用业务层方法进行删除操作,并返回视图名称"admin_list"
|
|
|
|
|
|
|
|
* 此方法会将请求体中的a_id参数写入对应的参数变量a_id中,用于指定要删除的管理员记录
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping( "/deleteAdmin")
|
|
|
|
@RequestMapping("/deleteAdmin")
|
|
|
|
@ResponseBody
|
|
|
|
@ResponseBody
|
|
|
|
public String deleteAdmin(Integer a_id) {
|
|
|
|
public String deleteAdmin(Integer a_id) {
|
|
|
|
|
|
|
|
// 调用AdminService的deleteAdmin方法,传入要删除的管理员ID,执行删除操作
|
|
|
|
int a = adminService.deleteAdmin(a_id);
|
|
|
|
int a = adminService.deleteAdmin(a_id);
|
|
|
|
|
|
|
|
// 返回视图名称"admin_list",可能用于页面刷新等操作,展示删除后的管理员信息列表情况
|
|
|
|
return "admin_list";
|
|
|
|
return "admin_list";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 修改管理员信息
|
|
|
|
* 修改管理员信息的方法
|
|
|
|
|
|
|
|
* 接收包含修改后管理员信息的Admin对象,对密码进行MD5加密后,调用业务层方法进行更新操作,更新成功后重定向到分页查询管理员信息的方法对应的请求路径("/findAdmin"),以便刷新页面展示最新的管理员信息列表
|
|
|
|
|
|
|
|
* 此方法会将提交的包含管理员相关信息(如ID、用户名等)的数据写入Admin对象中,用于后续的更新操作
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
/**
|
|
|
|
@RequestMapping(value = "/updateAdmin", method = RequestMethod.POST)
|
|
|
|
* 将提交数据(a_id,a_username...)写入Admin对象
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@RequestMapping( value = "/updateAdmin", method = RequestMethod.POST)
|
|
|
|
|
|
|
|
public String updateAdmin(Admin admin) {
|
|
|
|
public String updateAdmin(Admin admin) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 对修改后的管理员对象中的密码进行MD5加密处理,保证密码存储的安全性
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
admin.setA_password(MD5Util.MD5EncodeUtf8(admin.getA_password()));
|
|
|
|
|
|
|
|
// 调用AdminService的updateAdmin方法,传入加密后密码的Admin对象,执行更新管理员信息到数据库等存储介质的操作
|
|
|
|
int a = adminService.updateAdmin(admin);
|
|
|
|
int a = adminService.updateAdmin(admin);
|
|
|
|
|
|
|
|
// 返回重定向的路径"/findAdmin",实现页面刷新展示更新后的管理员信息
|
|
|
|
return "redirect:/findAdmin";
|
|
|
|
return "redirect:/findAdmin";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据管理员Id搜索;将请求数据a_id写入参数a_id
|
|
|
|
* 根据管理员Id搜索管理员信息的方法
|
|
|
|
|
|
|
|
* 接收要查询的管理员的ID作为参数,调用业务层方法进行查询操作,将查询到的管理员信息存入HttpSession中,方便在后续的操作中(比如在不同请求之间共享数据)使用,然后返回视图名称"admin_edit",可能用于展示管理员信息以便进行编辑等操作
|
|
|
|
|
|
|
|
* 此方法会将请求数据中的a_id参数写入对应的参数变量a_id中,用于指定要查询的管理员记录
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
@RequestMapping( "/findAdminById")
|
|
|
|
@RequestMapping("/findAdminById")
|
|
|
|
public String findAdminById( Integer a_id,HttpSession session) {
|
|
|
|
public String findAdminById(Integer a_id, HttpSession session) {
|
|
|
|
Admin a= adminService.findAdminById(a_id);
|
|
|
|
// 调用AdminService的findAdminById方法,传入要查询的管理员ID,执行查询操作
|
|
|
|
session.setAttribute("a",a);
|
|
|
|
Admin a = adminService.findAdminById(a_id);
|
|
|
|
|
|
|
|
// 将查询到的管理员信息存入HttpSession中,便于后续在编辑等相关页面获取该管理员数据
|
|
|
|
|
|
|
|
session.setAttribute("a", a);
|
|
|
|
|
|
|
|
// 返回视图名称"admin_edit",用于展示管理员详细信息,可能是编辑页面等
|
|
|
|
return "admin_edit";
|
|
|
|
return "admin_edit";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|