一、需求分析
1、功能需求
(1)登录验证功能
(2)用户实现查询个人信息功能
(3)系统管理员功能
- 用户的查询、增加、修改、删除
- 部门的查询、增加、修改、删除
2、数据库需求
(1)用户信息表
- 存放用户的id(登录名)、名字、性别、出生日期、工作日期、密码、部门、照片、简介
(2)部门信息表
- 存放每个部门创建时间、部门介绍、部门总人数
二、系统设计
1、系统功能结构图
2、数据库设计
(1)用户表(tb_userinfo)
(2)部门表(tb_deptinfo)
三、详细设计
1、登录模块设计
(1)登录页面
(2)用户登录流程图
(3)登录模块相关文件
- 用户信息Bean:User.java
- 用户信息Bean映射文件:Userhbm.xml
- 用户操作类:UserDao.java
- 登录页面:index.jsp
- 用户登录控制器类:UserLoginController.java
(4)设计思路与主要代码
设计思路
- 创建用户实体类及映射文件
- 创建Hibernate配置文件hibernate.properties
- 创建Spring配置文件spring.xml
- 创建基于注解的事务管理类UserDao.java
1.在web.xml文件中加载spring.xml并配置核心控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<!-- 定义Servlet名称 -->
<servlet-name>dispatcherServlet</servlet-name>
<!-- Servlet具体实现类 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化上下文对象 -->
<init-param>
<!--参数名称-->
<param-name>contextConfigLocation</param-name>
<!--加载配置文件-->
<param-value>classpath:spring.xml</param-value>
</init-param>
<!--设置启动优先级-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--采用通配符映射所有以html类型的请求-->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<!-- spring编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 编码方式 -->
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<!-- 强行进行编码转换 -->
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
</web-app>
2.创建hibernatre.properties文件:src/hibernatre.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3366/db_database18?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
3.创建spring配置文件:src/spring.xml
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath:hibernate.properties</value>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${hibernate.connection.driver}"/>
<property name="url" value="${hibernate.connection.url}"/>
<property name="username" value="${hibernate.connection.username}"/>
<property name="password" value="${hibernate.connection.password}"/>
</bean>
<!-- 配置session工厂 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>model/User.hbm.xml</value>
</list>
</property>
</bean>
<!-- 定义事物处理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDao" class="model.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 表单控制器 -->
<bean name="/index.html" class="controller.UserLoginController">
<property name="commandClass" value="model.User"/>
<property name="formView" value="login.jsp"/>
<property name="successView" value="index.jsp"/>
<property name="userDao" ref="userDao"/>
</bean>
4.创建User持久化类:src/model/User.java
public class User {
private int number;//用户编号
private String id;//登录编号
private String name;//用户姓名
private String sex;//用户性别
private String birthday;//用户出生日期
private String come;//用户入职日期
private String pwd;//用户登陆密码
private int dept;//用户所在部门编号
private String face;//照片路径
private String remark;//个人介绍
//这里省略set、get方法
}
5.创建映射文件:src/model/User.hbm.xml
<class name="model.User" table="tb_userinfo">
<!-- id值 -->
<id name="number" column="number" type="int">
<generator class="native"/>
</id>
<property name="id"/>
<property name="name"/>
<property name="sex"/>
<property name="birthday"/>
<property name="come"/>
<property name="pwd"/>
<property name="dept"/>
<property name="face"/>
<property name="remark"/>
</class>
6.创建用户信息的dao类:src/model/UserDao.java
public class UserDao {
//注入SessionFactory对象
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession(){
return sessionFactory.openSession();
}
/**
* 登录验证该用户是否存在
* @param user
* @return
*/
@Transactional(propagation= Propagation.REQUIRED,readOnly=true)
public User fiandByIdAndPwd(User user) {
String hql="from User u where u.id=? and u.pwd=?";
Query query=this.getSession().createQuery(hql);
query.setParameter(0, user.getId());
query.setParameter(1, user.getPwd());
User user2=(User)query.uniqueResult();
return user2;
}
/**
* 查找所有用户
* @return
*/
public List findAll() {
Query query=this.getSession().createQuery("from User u,Dept d where u.dept=d.number order by u.number");
List list = query.list();
return list;
}
}
7.创建用户登录控制类:src/controller.UserLoginController
public class UserLoginController extends SimpleFormController {
@Autowired
private UserDao userDao;
private DeptDao deptDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
public ModelAndView onSubmit(Object command) throws Exception{
User user=(User)command;
Map map=new HashMap();
//判断用户名与密码是否正确
user=userDao.fiandByIdAndPwd(user);
if(user==null){
map.put("error", "用户名或密码错");
return new ModelAndView(getFormView(),"map",map);
} else if(user.getNumber()==1) {
map.put("user", user);
return new ModelAndView(getSuccessView(),"map",map);
}
}
}
2、管理员—登录子模块设计
(1)管理员登录后首页面
(2)在spring.xml中配置以下内容
- 视图解释器
- URL映射控制器
- 文件名映射控制器
- 表单控制器
<!-- 配置视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!-- URL映射控制器 -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/admin.html">forwardController</prop>
<prop key="/top.html">forwardController</prop>
<prop key="/left.html">forwardController</prop>
<prop key="/main.html">forwardController</prop>
<prop key="/bottom.html">forwardController</prop>
<prop key="/userInfo.html">forwardController</prop>
<!--用户登录-->
<prop key="/index.html">userLogin</prop>
<!--部门-->
<prop key="/deptOperation.html">deptOperation</prop>
<prop key="/insertOrUpdateDept.html">insertOrUpdateDept</prop>
<!--用户-->
<prop key="/userOperation.html">userOperation</prop>
</props>
</property>
</bean>
<!-- 文件名映射控制器 -->
<bean id="forwardController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
<!--表单控制器-->
<bean name="userLogin" class="controller.UserLoginController">
<property name="commandClass" value="model.User"/>
<property name="sessionForm" value="true"/>
<property name="formView" value="index"/>
<property name="successView" value="admin"/>
<property name="userDao" ref="userDao"/>
<property name="deptDao" ref="deptDao"/>
</bean>
(3)添加子模块jsp页面:web/WEB-INF/jsp/index.jsp
<body>
<div align="center">
<table width="500" height="195" align="center">
<tr><td> </td></tr>
</table>
<form action="" method="post">
<table width="500" height="195" align="center" background="images/login.jpg">
<tr>
<td width="214"> </td>
<td align="center" colspan="2">${map.error}</td>
</tr>
<tr>
<td width="214"> </td>
<td align="right">用户名:</td>
<td><input type="text" name="id"/></td>
</tr>
<tr>
<td width="214"> </td>
<td align="right">密 码:</td>
<td><input type="password" name="pwd"/></td>
</tr>
<tr>
<td width="214"> </td>
<td align="center" colspan="2"><input type="submit" value="登录"/></td>
</tr>
</table>
</form>
</div>
</body>
(4)在jsp文件下添加管理员登录页面:web/WEB-INF/jsp/admin.jsp
<frameset rows="167,*,73" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="top.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" />
<frameset cols="196,*" frameborder="no" border="0" framespacing="0">
<frame src="left.html" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" />
<frame src="main.html" name="mainFrame" id="mainFrame" />
</frameset>
<frame src="bottom.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" />
<frame>
</frameset>
<noframes>
<body></body>
</noframes>
(5)在jsp文件下添加普通用户登录页面:web/WEB-INF/jsp/userInfo.jsp
<body>
<table width="765" height="710" align="center" background="images/userInfo.jpg">
<tr>
<td>
<div>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr>
<td height="24" colspan="5" align="center" bgcolor="#FFFFFF"><span class="STYLE6">用户信息</span></td>
</tr>
<tr>
<td height="24" rowspan="4" align="center" valign="middle" bgcolor="#FFFFFF"><img src="face/${map.user.face}"/></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">用户姓名:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.name}</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">用户性别:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.sex}</span></td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">出生日期:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.birthday}</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">入职日期:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.come}</span></td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">个人简介:</span></td>
<td height="24" colspan="3" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.remark}</span></td>
</tr>
</table>
<br>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr>
<td height="24" colspan="4" align="center" bgcolor="#FFFFFF" class="STYLE6">所在部门信息</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门名称:</td>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.name}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">建立时间:</td>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.createDate}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门总人数:</td>
<td height="24" colspan="3" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.totalnumber}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门介绍:</td>
<td height="24" colspan="3" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.remark}</td>
</tr>
</table>
<br>
<center><a href="index.html">退出</a></center>
</div>
</td>
</tr>
</table>
</body>
3、管理员—部门管理模块设计
(1)部门管理页面
(2)登录模块相关文件
- 部门信息Bean:Dept.java
- 部门信息Bean映射文件:Dept.hbm.xml
- 基于注解的部门操作类:DeptDao.java
- 部门信息模块页面:WEB-INF/jsp/dept/showDept.jsp、insertOrUpdateDept.jsp
- 部门操作控制器类:DeptOperationController
(3)设计思路与主要代码
设计思路
- 创建部门实体类及映射文件
- 创建Spring配置文件spring.xml
- 创建基于注解的事务管理的DeptDao
- 创建部门模块jsp页面文件
- 创建部门信息模块多动作控制器
1.创建实体类Dept和映射文件Dept.hbm.xml
private int number;
private String name;
private String createDate;
private String remark;
private Integer totalnumber;
<class name="dept.Dept" table="tb_deptinfo">
<!-- id值 -->
<id name="number" column="number" type="int">
<generator class="native"/>
</id>
<property name="name"/>
<property name="createDate"/>
<property name="remark"/>
<property name="totalnumber" type="java.lang.Integer"/>
</class>
2.在WEB-INF\jsp下创建文件夹dept,在其下showDept.jsp页面,用于显示所有部门记录
<body>
<table background="images/23_03.gif" width="755px" height="27px" border="0" align="left" cellpadding="0" cellspacing="0">
<tr>
<td width="20px"> </td>
<td><span class="STYLE1">当前位置->部门管理首页</span></td>
</tr>
</table>
<br>
<br>
<table width="775">
<tr>
<td height="40" align="center"><a href="insertOrUpdateDept.html">注册新部门</a></td>
</tr>
</table>
<table style="position: relative;top: 0px;left: 50px" width="650" border="1" cellpadding="0" cellspacing="1" bordercolor="#F0F4FF" bgcolor="#999999">
<tr>
<td height="24" bgcolor="#F0F4FF"><div align="center" class="STYLE5">部门编号</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE5">部门名称</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE5">部门成立日期</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE5">部门介绍</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE5">部门总人数</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE5">操作</div></td>
</tr>
<c:forEach items="${list}" var="item" varStatus="i">
<tr>
<td height="24" bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<c:out value="${item.number}"/>
</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<c:out value="${item.name}"/>
</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<c:out value="${item.createDate}"/>
</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<c:out value="${item.remark}"/>
</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<c:out value="${item.totalnumber}"/>
</div></td>
<td bgcolor="#F0F4FF"><div align="center" class="STYLE3">
<a href="deptOperation.html?method=findById&number=${item.number}">修改</a>
<a href="deptOperation.html?method=deleteDept&number=${item.number}">删除</a></div></td>
</tr>
</c:forEach>
</table>
</body>
3.创建部门Dao类:src/dept.DeptDao.java
public class DeptDao {
//注入SessionFactory对象
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession(){
return sessionFactory.openSession();
}
//查找所有部门信息
public List<Object> findAll() {
Query query = this.getSession().createQuery("from Dept");
List list = query.list();
return list;
}
}
4.在spring.xml配置文件中修改如下:
<!--部门信息多动控制器-->
<bean id="deptOperation" class="controller.DeptOperationController">
<property name="deptDao" ref="deptDao"/>
<property name="userDao" ref="userDao"/>
<property name="methodNameResolver" ref="methodNameResolver"/>
</bean>
<!-- 方法名解析器 -->
<bean id="methodNameResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="method"/>
</bean>
在< URL映射控制器 >中添加
<!--部门-->
<prop key="/deptOperation.html">deptOperation</prop>
<prop key="/insertOrUpdateDept.html">insertOrUpdateDept</prop>
5.注册部门信息的
在showDept.jsp中提交:insertOrUpdateDept.html
URL映射控制器:
< prop key="/insertOrUpdateDept.html">insertOrUpdateDept< /prop>
通过参数映射控制器转发到页面:dept/insertOrUpdateDept.jsp中输入数据
< !-- 参数映射控制器 -->
< bean id=“insertOrUpdateDept”
class=“org.springframework.web.servlet.mvc.ParameterizableViewController”>
< property name=“viewName” value=“dept/insertOrUpdateDept” />
< /bean>
输入数据后提交到多动作控制器deptOperation中:deptOperation.html?method=insertOrUpdateDept
多动作控制器DeptOperationCotroller中添加插入方法insertOrUpdateDept
//部门的插入与修改
public ModelAndView insertOrUpdateDept(HttpServletRequest request,HttpServletResponse response){
Dept dept = new Dept();
dept.setCreateDate(request.getParameter("createDate"));
dept.setName(request.getParameter("name"));
dept.setNumber(Integer.valueOf(request.getParameter("number")));
dept.setRemark(request.getParameter("remark"));
dept.setTotalnumber(Integer.parseInt(request.getParameter("totalnumber")));
if(dept.getNumber()==0){
deptDao.insert(dept);
}else {
deptDao.save(dept);//其它情况直接保存
}
return showDept(request,response);
}
在DeptDao中添加插入和更新的方法
//插入部门信息
public void insert(Dept dept) {
getSession().save(dept);
}
//保存部门信息
public void save(Dept dept) {
Session session = getSession();
session.update(dept);
session.flush();//更新到数据库
}
6.修改和删除部门信息
在showDept.jsp中提交:deptOperation.html?method=findById
先按部门编号(number)查找,并将查找结果作用Model返回到dept/insertOrUpdateDept
//修改部门
public ModelAndView findById(HttpServletRequest request,HttpServletResponse response){
Dept dept = deptDao.findById(Integer.valueOf(request.getParameter("number")));
return new ModelAndView("dept/insertOrUpdateDept","dept",dept);
}
在showDept.jsp中提交:deptOperation.html?method=deleteDept
注意:
(1) 先查询该部门中是否存在员工,若存在,则返回不能删除的信息,若不存在则删除。
(2) 在UserDao中添加部门查询方法(findBydept),查询该部门是否有人员,并在DeptDao中添加删除方法(delete)
/**
* 查询指定部门中是否有人员
* @param number
* @return
*/
public boolean findBydept(Integer number) {
Query query=this.getSession().createQuery("from User where dept="+number);
List list = query.list();
if (list.isEmpty()){
return true;
}
return false;
}
//删除部门信息
public void delete(Integer number) {
Session session = getSession();
Dept dept = (Dept) session.load(Dept.class, number);
session.delete(dept);
session.flush();//更新到数据库
}
(3)在配置文件spring.xml中添加如下
<!--部门信息多动控制器-->
<bean id="deptOperation" class="controller.DeptOperationController">
<property name="deptDao" ref="deptDao"/>
<property name="userDao" ref="userDao"/>
<property name="methodNameResolver" ref="methodNameResolver"/>
</bean>
(4)将UserDao注入到DeptOperationController
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
(5)在DeptOperationController中添加deleteDept方法实现删除部门功能
//删除部门
public ModelAndView deleteDept(HttpServletRequest request,HttpServletResponse response) throws Exception{
//先获取要删除的部门编号
Integer number = Integer.valueOf(request.getParameter("number"));
//在删除部门之前先查询该部门中有没有员工,如果有则不能删除该部门
boolean bool = userDao.findBydept(number);
String message = ""; //提示信息
if(bool){
//部门中没有员工,可以删除
deptDao.delete(number); //调用删除的方法
message = "部门删除成功!";
}else{
//有员工属于该部门
message = "不能删除有员工的部门!";
}
PrintWriter out = response.getWriter(); //获取our对象
out.print("<script type='text/javascript'>");
out.print("alert('"+message+"');"); //输出提示信息
out.print("window.location='deptOperation.html?method=showDept';"); //转入部门管理首页
out.print("</script>");
out.close(); //关闭out对象
return null;
}
4、管理员—用户管理模块设计
(1)用户管理页面
(2)设计思路与主要代码
设计思路:
- 修改Spring配置文件spring.xml
- 在UserDao类中添加插入、修改、删除操作
- 创建用户模块jsp页面文件
- 创建用户信息模块多动作控制器
1.修改spring.xml配置文件
<!-- 参数映射控制器 -->
<bean id="insertOrUpdateDept"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="dept/insertOrUpdateDept"/>
</bean>
<!--用户-->
<prop key="/userOperation.html">userOperation</prop>
<!--用户信息多动控制器-->
<bean id="userOperation" class="controller.UserOperationController">
<property name="deptDao" ref="deptDao"/>
<property name="userDao" ref="userDao"/>
<property name="methodNameResolver" ref="methodNameResolver"/>
</bean>
2.添加多动作控制器类UserOperationCotroller
public class UserOperationController extends MultiActionController {
//注入dao类
private DeptDao deptDao;
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
//显示所有用户
public ModelAndView showUser(HttpServletRequest request, HttpServletResponse response){
List list = userDao.findAll();
return new ModelAndView("user/showUser","list",list);
}
//查找指定用户
public ModelAndView findById(HttpServletRequest request,HttpServletResponse response){
String number = request.getParameter("number");
List list = deptDao.findAll();
/***
* 创建新用户
*/
if(number==null || number.equals("")){
return new ModelAndView("user/insertUser","map",list);
}
/***
* 修改用户信息
*/
else {
User user = userDao.findNumber(Integer.valueOf(number));
Map map = new HashMap();
map.put("user",user);
map.put("list",list);
return new ModelAndView("user/updateUser","map",map);
}
}
//插入用户信息
public ModelAndView insertUser(HttpServletRequest request,HttpServletResponse response) throws IOException {
User user = getUser(request,response);
//判断用户id是否可用
if(userDao.findId(user)){
//该用户名可用
userDao.Insert(user);
return showUser(request,response);
}else {
// 登录账号已经被使用
PrintWriter out = response.getWriter(); // 获取out对象
out.print("<script type='text/javascript'>");
out.print("alert('不能用此登录账号注册,此账号已经被使用!');");// 输出提示信息
out.print("window.history.go(-1);"); // 后退网页
out.print("</script>");
out.close();
}
return null;
}
//修改用户信息
public ModelAndView updateUser(HttpServletRequest request,HttpServletResponse response){
User user = getUser(request,response);
user.setNumber(Integer.valueOf(request.getParameter("number")));
userDao.update(user);
return showUser(request,response);
}
//删除用户信息
public ModelAndView deleteUser(HttpServletRequest request,HttpServletResponse response){
Integer number = Integer.valueOf(request.getParameter("number"));
userDao.delete(number);
return showUser(request,response);
}
//获取浏览器中输入的用户信息
private User getUser(HttpServletRequest request, HttpServletResponse response) {
User user = new User();
user.setBirthday(request.getParameter("birthday"));
user.setCome(request.getParameter("come"));
user.setDept(Integer.valueOf(request.getParameter("dept")));
user.setFace(request.getParameter("face"));
user.setId(request.getParameter("id"));
user.setName(request.getParameter("name"));
user.setPwd(request.getParameter("pwd"));
user.setRemark(request.getParameter("remark"));
user.setSex(request.getParameter("sex"));
return user;
}
}
3.在UserDao类中添加插入、修改、删除操作方法
/**
* 判断用户登录名是否已经存在
* @param user
* @return
*/
public boolean findId(User user) {
String hql="from User where id="+user.getId();
Query query=this.getSession().createQuery(hql);
List list = query.list();
if (list.isEmpty()){
//表示没有同名的用户,该名可用
return true;
}
return false;
}
public void Insert(User user) {
getSession().save(user);
}
public void update(User user) {
Session session = this.getSession();
session.update(user);
session.flush();
}
//删除用户信息
@Transactional(propagation = Propagation.REQUIRED)
public void delete(Integer number){
Session session = this.getSession();//开启session
User user = (User)session.load(User.class,number);
session.delete(user);//删除数据
session.flush();
}
5、普通用户模块设计
(1)修改controller.UserLoginController,注入DeptDao类用来显示所处部门信息
private DeptDao deptDao;
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
public ModelAndView onSubmit(Object command) throws Exception{
User user=(User)command;
Map map=new HashMap();
//判断用户名与密码是否正确
user=userDao.fiandByIdAndPwd(user);
if(user==null){
map.put("error", "用户名或密码错");
return new ModelAndView(getFormView(),"map",map);
} else if(user.getNumber()==1) {
map.put("user", user);
return new ModelAndView(getSuccessView(),"map",map);
} else {
Dept dept = deptDao.findById(user.getDept());
map.put("user", user);
map.put("dept",dept);
return new ModelAndView("userInfo","map",map);
}
}
(2)添加普通用户页面:WEB-INF/jsp/userInfo.jsp
<body>
<table width="765" height="710" align="center" background="images/userInfo.jpg">
<tr>
<td>
<div>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr>
<td height="24" colspan="5" align="center" bgcolor="#FFFFFF"><span class="STYLE6">用户信息</span></td>
</tr>
<tr>
<td height="24" rowspan="4" align="center" valign="middle" bgcolor="#FFFFFF"><img src="face/${map.user.face}"/></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">用户姓名:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.name}</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">用户性别:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.sex}</span></td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">出生日期:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.birthday}</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">入职日期:</span></td>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.come}</span></td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF"><span class="STYLE6">个人简介:</span></td>
<td height="24" colspan="3" bgcolor="#FFFFFF"><span class="STYLE6">${map.user.remark}</span></td>
</tr>
</table>
<br>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#000000">
<tr>
<td height="24" colspan="4" align="center" bgcolor="#FFFFFF" class="STYLE6">所在部门信息</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门名称:</td>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.name}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">建立时间:</td>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.createDate}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门总人数:</td>
<td height="24" colspan="3" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.totalnumber}</td>
</tr>
<tr>
<td height="24" bgcolor="#FFFFFF" align="center" class="STYLE6">部门介绍:</td>
<td height="24" colspan="3" bgcolor="#FFFFFF" align="center" class="STYLE6">${map.dept.remark}</td>
</tr>
</table>
<br>
<center><a href="index.html">退出</a></center>
</div>
</td>
</tr>
</table>
</body>
四、运行结果
1、登陆错误页面:
2、普通用户登录:
3、管理员登录:
4、部门管理:
5、注册新部门:
6、修改部门信息:
7、删除部门:
8、用户管理:
9、注册新用户:
10、修改用户信息:
11、删除用户信息:
注意:源码可到个人博客资源下载里面自行下载哈!!!