13.5.2 用户管理

13.5.2 用户管理

本系统的所有JSP页面都放在WB-INF/jsp目录下,登录页面是loginForm.jsp。用户提交登录请求后,用户输入的登录名、密码被提交到UserControllerlogin方法, UserController将会根据请求参数决定呈现哪个视图资源。
处理用户的UserControlller代码如下:

UserController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package org.fkit.hrm.controller;

import java.util.List;
import javax.servlet.http.HttpSession;
import org.fkit.hrm.domain.User;
import org.fkit.hrm.service.HrmService;
import org.fkit.hrm.util.common.HrmConstants;
import org.fkit.hrm.util.tag.PageModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/**
* 处理用户请求控制器
*/
@Controller
public class UserController
{
/**
* 自动注入UserService
*/
@Autowired
@Qualifier("hrmService")
private HrmService hrmService;

/**
* 处理登录请求
* @param String loginname 登录名
* @param String password 密码
* @return 跳转的视图
*/
@RequestMapping(value = "/login")
public ModelAndView login(@RequestParam("loginname") String loginname,
@RequestParam("password") String password, HttpSession session,
ModelAndView mv)
{
// 调用业务逻辑组件判断用户是否可以登录
User user = hrmService.login(loginname, password);
if (user != null)
{
// 将用户保存到HttpSession当中
session.setAttribute(HrmConstants.USER_SESSION, user);
// 客户端跳转到main页面
mv.setViewName("redirect:/main");
} else
{
// 设置登录失败提示信息
mv.addObject("message", "登录名或密码错误!请重新输入");
// 服务器内部跳转到登录页面
mv.setViewName("forward:/loginForm");
}
return mv;

}

/**
* 处理查询请求
* @param pageIndex 请求的是第几页
* @param employee 模糊查询参数
* @param Model model
*/
@RequestMapping(value = "/user/selectUser")
public String selectUser(Integer pageIndex, @ModelAttribute User user,
Model model)
{
System.out.println("user = " + user);
PageModel pageModel = new PageModel();
if (pageIndex != null)
{
pageModel.setPageIndex(pageIndex);
}
/** 查询用户信息 */
List<User> users = hrmService.findUser(user, pageModel);
model.addAttribute("users", users);
model.addAttribute("pageModel", pageModel);
return "user/user";

}

/**
* 处理删除用户请求
* @param String ids 需要删除的id字符串
* @param ModelAndView mv
*/
@RequestMapping(value = "/user/removeUser")
public ModelAndView removeUser(String ids, ModelAndView mv)
{
// 分解id字符串
String[] idArray = ids.split(",");
for (String id : idArray)
{
// 根据id删除员工
hrmService.removeUserById(Integer.parseInt(id));
}
// 设置客户端跳转到查询请求
mv.setViewName("redirect:/user/selectUser");
// 返回ModelAndView
return mv;
}

/**
* 处理修改用户请求
* @param String flag 标记, 1表示跳转到修改页面,2表示执行修改操作
* @param User user 要修改用户的对象
* @param ModelAndView mv
*/
@RequestMapping(value = "/user/updateUser")
public ModelAndView updateUser(String flag, @ModelAttribute User user,
ModelAndView mv)
{
if (flag.equals("1"))
{
// 根据id查询用户
User target = hrmService.findUserById(user.getId());
// 设置Model数据
mv.addObject("user", target);
// 返回修改员工页面
mv.setViewName("user/showUpdateUser");
} else
{
// 执行修改操作
hrmService.modifyUser(user);
// 设置客户端跳转到查询请求
mv.setViewName("redirect:/user/selectUser");
}
// 返回
return mv;
}

/**
* 处理添加请求
* @param String flag 标记, 1表示跳转到添加页面,2表示执行添加操作
* @param User user 要添加用户的对象
* @param ModelAndView mv
*/
@RequestMapping(value = "/user/addUser")
public ModelAndView addUser(String flag, @ModelAttribute User user,
ModelAndView mv)
{
if (flag.equals("1"))
{
// 设置跳转到添加页面
mv.setViewName("user/showAddUser");
} else
{
// 执行添加操作
hrmService.addUser(user);
// 设置客户端跳转到查询请求
mv.setViewName("redirect:/user/selectUser");
}
// 返回
return mv;
}

/**
* 处理注销退出请求
* @param String flag 标记, 1表示跳转到添加页面,2表示执行添加操作
* @param User user 要添加用户的对象
* @param ModelAndView mv
*/
@RequestMapping(value = "/logout")
public ModelAndView logout(ModelAndView mv, HttpSession session)
{
// 注销session
session.invalidate();
// 跳转到登录页面
mv.setViewName("redirect:/loginForm");
return mv;
}
}

部署hrmapp这个Web应用,在浏览器中输入如下URL来测试应用:

1
http://localhost:8080/hrmapp

Spring MVC会跳转到初始登录页面loginForm.jsp
输入正确的登录名"admin"、密码”123456“,若登录成功,则跳转到人事管理系统界面。
单击左侧菜单”用户管理“下面的”添加用户“命令,跳转到”添加用户“界面。

输入需要添加的用户姓名状态登录名密码,单击”添加“按钮,若添加成功则跳转用户查询界面,显示所有用户信息。

  • 输入用户名、用户状态,单击”搜索”按钮可以完成**模糊查询**功能。
  • 选择每一行最后一列的”操作”按钮,可以进入修改页面,对选中的用户进行修改操作,
  • 选择每一行第一列的复选框,单击”删除”按钮,则可以对选中的用户进行删除操作。