使用SSH框架,完成“用户管理”模块的信息列表展示功能。
1、Struts配置
SSH的所有jar包下载链接: https://pan.baidu.com/s/1c1Rtenu 密码: 4ft6
引入Struts 必须的jar包,放到WEB-INF/lib目录下。如下图所示:
修改WEB-INF下的web.xml文件,增加struts2的配置
StrutsPrepareAndExecuteFilter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
StrutsPrepareAndExecuteFilter
*.action
StrutsPrepareAndExecuteFilter
*.jsp
添加struts配置文件,新建Struts.xml,并在文件中启动动态方法访问,并且定义包,具体内容如下:
2、Hibernate配置
引入Hibernate的jar包,放大WEB-INF/lib目录下。
创建Hibernate配置文件,在src下新建TdemoDept.hbm.xml作为hibernate连接数据库的配置文件。具体实现内容如下:
3、Spring配置
引入Spring的jar包,放大WEB-INF/lib目录下。
修改web.xml文件,对Spring进行配置,内容如下:
contextConfigLocation
classpath:applicationContext.xml
接着我们在src下创建applicationContext.xml文件,并给这个文件加上Spring的标头:
4、整合SSH
Spring和Sturts的整合其实就是吧Struts的Action类交给Spring来管理。配置web.xml,在文件中创建上下文加载监听器,具体实现内容如下:
org.springframework.web.context.ContextLoaderListener
Spring对Hibernate的整合,主要是对Hibernate中的session进行管理,包括Session的创建、提交、关闭整个生命周期。我们在applicationContext.xml中配置如下内容:
org.hibernate.dialect.MySQLDialect
true
到这里为止SSH框架搭建完成,我们可以启动Tomcat服务器看是否成功启动服务。
控制台反应结果表示我们的SSH框架已经搭建成功,服务器已经成功开启。
5、方法声明和例表展现数据库用户信息。
在实现具体的功能之前,我们首先创建数据库访问公共接口类,该类中声明我们需要实现的全部功能的方法。实现内容如下:
public interface IDaoService {
/* 查询数据 */
public List extends Object> query(String hql) throws Exception;
/*保存数据*/
public void save(Object object) throws Exception;
/*修改数据*/
public void update(Object object) throws Exception;
/*删除数据*/
public void delete(Object...objects) throws Exception;
}
接着我们需要创建数据库访问公共具体实现类,并在后面的实验步骤中,对实验 要求实现的功能进行逐个实现。
同时我们还需要创建用户管理的业务接口类,在类中同样声明我们需要实现的全部功能的方法,后面会在业务接口类的具体实现类中逐个实现。具体内容如下:
public interface IUserService {
/*查询所有用户数据*/
public List query() throws Exception;
/*添加用户信息*/
public void add(TDemoUser user) throws Exception;
/*删除用户信息*/
public void delete(int...ids) throws Exception;
/*修改用户信息*/
public void update(int...ids) throws Exception;
}
在数据库访问公共具体实现类DaoServiceImpl中获取会话Session并创建查询数据的对象等。具体的实现如下:
public List extends Object> query(String hql) throws Exception {
// 获得会话Session
Session session = getSession();
// 创建查询数据的对象
Query query = session.createQuery(hql);
// 查询返回数据集合
List extends Object> list = query.list();
// 关闭session
session.close();
return list;
}
接着在用户管理的业务具体实现类UserServiceImpl中,通过数据访问公共接口,查询用户数据。具体内容如下:
public List query() throws Exception {
//通过数据访问公共接口,查询用户数据
List list = (List)
idaoService.query("from TDemoUser "
+ "where isdel=0 order by opertime desc"); //from TDemoUser HQL语句
return list;
}
public String list() {
try {
//查询获得所有用户数据
List list = iuserService.query();
//数据添加Dao请求范围,数据转发给下一个视图页面
ActionContext.getContext().getContextMap().put("list", list);
return SUCCESS;
} catch (Exception e) {
e.printStackTrace();
}
return ERROR;
}
此时查看navicat中数据库用户信息如下图所示:
我们通过利用刚才实现的功能,通过页面来访问数据库信息。点击“用户管理”便可出现数据库中的用户信息。
6、“用户管理/添加”功能实现
在数据库访问公共具体实现类DaoServiceImpl中实现sava()方法,实现对象与Session的绑定等。具体的实现如下:
public void save(Object object) throws Exception {Session session = getSession();// 开启事务Transaction tx = session.beginTransaction();// 对象与Session绑定session.save(object);// 提交事务tx.commit();// 关闭sessionsession.close();}
接着在用户管理的业务具体实现类UserServiceImpl中,实现add()方法,封装通用字段的数据,并访问数据库,保存新用户数据。具体内容如下:
public void add(TDemoUser user) throws Exception {
//封装通用字段的数据
user.setIsdel("0");
user.setOpertime(new Timestamp(System.currentTimeMillis()));
//访问数据库,保存新用户数据
idaoService.save(user);
}
最后在用户管理的业务控制器类UserAction中指明业务逻辑,通过业务接口,添加新用户。具体内容如下:
public String add() {
//通过业务接口,添加新用户
try {
iuserService.add(user);
return list();
} catch (Exception e) {
e.printStackTrace();
}
return ERROR;
}
此时点击“用户管理”页面的“添加”按键。
在出现的“添加用户信息”页面中,输入新用户的信息,具体内容如下:
点击确定之后,页面返回“用户管理”,可以在用户列表中看到我们刚添加的用户,具体信息如下:
同时,我们回到navicat可视化工具,查看数据库的数据存储情况,可以看到数据库中也相应的添加了新建用户的相关信息。具体情况如下:
7、“用户管理/删除”功能实现
在数据库访问公共具体实现类DaoServiceImpl中实现delete()方法,对Id数据进行便利,循环绑定要删除的对象,选择对象之后进行数据的逻辑删除。具体的实现如下:
public void delete(Object... objects) throws Exception {
Session session = getSession();
Transaction tx = session.beginTransaction();
// 遍历id数组,循环绑定要删除的对象
for (Object object : objects) { session.update(object); // 虚拟删除、逻辑删除
}
tx.commit();
session.close();
}
接着在用户管理的业务具体实现类UserServiceImpl中,实现delete()方法,遍历数组,查询获得用户的集合,通过修改isdel属性来实现逻辑删除,确保数据库一定的安全性等。具体内容如下:
public void delete(int... ids) throws Exception {
//定义查询所有选中用户的HQL语句
String hql = "from TDemoUser where userId in(";
//遍历数组
for(int i=0; i list = (List) idaoService.query(hql);
//遍历集合,修改isdel(是否删除)属性
for(TDemoUser user: list) {
user.setIsdel("1");
}
//获得用户的数组
Object[] objects = list.toArray();
//访问数据库删除用户
idaoService.delete(objects);
}
最后在用户管理的业务控制器类UserAction中指明业务逻辑。具体内容如下:
public String delete() {
try {
iuserService.delete(ids);
return list();
} catch (Exception e) {
e.printStackTrace();
}
return ERROR;
}
此时,我们再回到才优备内部系统的“用户管理”页面中,选中我们刚才新建的用户,点击“删除”按钮。
确认删除之后,页面自动刷新,再次出现的“用户管理”页面中,没有了我们刚才新建的用户信息。
此时,我们再回到navicate可视化工具页面查看数据库中信息的存储情况,可以看到的是,新建用户的信息仍然存在,只是isdel属性被设置为了1,实现了用户数据的逻辑删除。具体情况如下:
8、“用户管理/修改”功能实现
再WEB-INF/admin/user路径下创建userupdate.jsp文件,具体实现内容和useradd.jsp文件类似不同的是相应路径。具体内容如下:
修改userlist.jsp文件如下:
function update() {
//获得选中记录的数量
var count = $("input[name=ids]:checked").size();
//判断是否选中一行记录,修改操作只能选中一行记录
if (count != 1) {
alert("请选中一条要修改的记录!");
return;
}
//获得表单对象
var form = $("#form2").get(0);
//设置提交路径
form.action = "admin/user/userupdate.jsp";
//提交表单
form.submit();
}
修改用户管理的业务控制器UserAction类内容如下:
public String update() {
try {
iuserService.delete(ids);
iuserService.add(user);
return list();
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
回到“用户管理”页面,选择要进行修改的用户信息,点击确定。
在出现的“修改用户信息”页面中,输入最新的用户信息,具体内容如下:
点击确定保存更改信息,并再次返回用户例表。可以看到修改成功。
查看navicat页面,也可看到相应的修改内容已经得到了保存。