实现管理员功能
分为超级管理员和普通管理员,超级管理员具有修改信息,删除信息等功能。普通管理员只能修改个人信息。
实体类
package com.po;
public class Admin {
private Integer id;
private String user;
private String pwd;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
Dao
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.po.Admin;
@Repository("adminDao")
public interface AdminDao {
public Integer login(Admin admin);
public List<Admin> findAdmin();
public Integer addAdmin(Admin admin);
public Integer selectuser(String user);
public Integer delAdmin(Integer id);
public Integer changeAdmin(Admin admin);
}
Mapper
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.AdminDao">
<select id="login" resultType="Integer">
SELECT id
FROM
admin
WHERE
user = #{user}
AND pwd = #{pwd}
</select>
<select id="findAdmin" resultType="Admin">
select id,user,pwd from admin
</select>
<insert id="addAdmin" parameterType="Admin" keyProperty="id"
useGeneratedKeys="true"><!-- useGenrate..不好使 -->
INSERT admin (user, pwd)
VALUES
(#{user}, #{pwd})
</insert>
<select id="selectuser" resultType="Integer">
select COUNT(id) from admin where user= #{user};
</select>
<delete id="delAdmin" parameterType="Integer">
delete from admin where id = #{id}
</delete>
<update id="changeAdmin" parameterType="Admin">
update admin
<set>
<if test="user != null and user != ''">
user=#{user},
</if>
<if test="pwd != null and pwd != ''">
pwd=#{pwd},
</if>
</set>
where id = #{id}
</update>
</mapper>
package com.controller;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.po.Admin;
import com.service.AdminService;
@Controller
public class AdminController {
@Autowired
private AdminService adminService;
/**
* 登录
*
* @param model
* @param session
* @param admin
* @return
*/
@RequestMapping("/login")
public String login(Model model, HttpSession session, Admin admin) {
Integer id = adminService.login(admin);
if (id != null) {// 登录成功
session.setAttribute("id", id);
session.setAttribute("user", admin.getUser());
return "redirect:/book";
} else {// 账号或密码错误
return "/pages/login.jsp?e=loginErr";
}
}
/**
* 注销登录
*
* @param session
* @return
*/
@RequestMapping("/logout")
public String logout(HttpSession session) {
/* 清除缓存信息 */
session.invalidate();
return "/pages/login.jsp";
}
@RequestMapping("/user")
public String user(Model model, HttpSession session) {
/*id 存到session中*/
Integer id = (Integer) session.getAttribute("id");
if (id != null) {
if (id == 1) {
List<Admin> list = adminService.findAdmin();
model.addAttribute("list", list);
return "/pages/admin.jsp";
} else {
/*非超级用户只能修改自己的密码查看不了其他admin的信息*/
return "/pages/changePwd.jsp";
}
} else {
return "/pages/login.jsp?e=loginErr";
}
}
@RequestMapping("/addAdmin")
public String addAdmin(Model model, Admin admin) {
Integer n = 0;
Integer ids;
ids = adminService.selectuser(admin.getUser());
if (ids == 0){
try {
n = adminService.addAdmin(admin);
} catch (Exception e) {// 主键冲突
model.addAttribute("e", "addForbid");
return "redirect:/user";
}
if (n != 0) {// 成功
model.addAttribute("e", "addOk");
} else {// 失败
model.addAttribute("e", "addErr");
}
} else {
model.addAttribute("e", "addErrrepeat");
}
return "redirect:/user";
}
@RequestMapping("/delAdmin/{id}")
public String delAdmin(Model model, @PathVariable Integer id) {
if (id == 1) {// 禁止删除
model.addAttribute("e", "delForbid");
} else {
Integer n = adminService.delAdmin(id);
if (n != 0) {// 删除成功
model.addAttribute("e", "delOk");
} else {// 删除失败
model.addAttribute("e", "delErr");
}
}
return "redirect:/user";
}
/**
* 修改信息
* @param model
* @param admin
* @return
*/
@RequestMapping("/changeAdmin/{id}")
public String changeAdmin(Model model, Admin admin) {
if (admin.getId() == 1) {// 禁止修改
model.addAttribute("e","supererro" );
return "redirect:/user";
}
Integer n = 0;
try {
n = adminService.changeAdmin(admin);
} catch (Exception e) {// 主键冲突bug 不好使
model.addAttribute("e", "changeForbid");
return "redirect:/user";
}
if (n != 0) {// 成功
model.addAttribute("e", "changeOk");
} else {// 失败
model.addAttribute("e", "changeErr");
}
return "redirect:/user";
}
@RequestMapping("/changePwd/{id}")
public String changePwd(Model model, HttpSession session, Admin admin, String newPwd) {
admin.setUser((String) session.getAttribute("user"));
Integer id = adminService.login(admin);
if (id != null) {// 密码正确
admin.setPwd(newPwd);// 设置新密码
adminService.changeAdmin(admin);
model.addAttribute("e", "pwdOk");
} else {// 密码错误
model.addAttribute("e", "pwdErr");
}
return "redirect:/user";
}
}
界面实现