热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaWeb项目开发(三):SSH框架

使用SSH框架,完成“用户管理”模块的信息列表展示功能。1、Struts配置SSH的所有jar包下载链接:https:pan.baidu.coms1c1Rtenu密码:4ft6引入Str

使用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的标头:

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:cOntext="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">


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 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 query(String hql) throws Exception {
// 获得会话Session
Session session = getSession();
// 创建查询数据的对象
Query query = session.createQuery(hql);
// 查询返回数据集合
List 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;
}

最后在用户管理的业务控制器类UserAction中指明业务逻辑,具体内容如下

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; ihql += ids[i];
if(ihql += ",";
}
}
hql += ")";
//查询获得用户的集合
List 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页面,也可看到相应的修改内容已经得到了保存。






推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
author-avatar
手机用户2502885897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有