struts2通配符_基于Struts2框架的名片管理系统

ba1fb8722a5c7015a2dd2928a895fda5.png

本篇博文将分享一款基于Struts2框架的名片管理系统,JSP引擎为Tomcat9.0,数据库采用的是MySQL5.5,集成开发环境为Eclipse IDE for Java EE Developers。

名片管理系统主要包括用户管理和名片管理功能。用户功能主要包括:用户注册、用户登录、修改密码和修改基本信息功能;名片管理主要包括:添加名片、查询名片、修改名片、删除名片功能。

希望通过本篇的学习,朋友们不仅能掌握Struts 2应用开发的流程、方法和技术,还能够熟悉名片管理的业务需求、设计以及实现。

1、系统设计

1、系统功能需求

名片管理系统主要包含以下功能:

  • 非注册用户可以注册为注册用户;
  • 成功注册的用户,可以登录系统;
  • 成功登录的用户,可以添加、修改、删除以及浏览自己客户的名片信息;
  • 成功登录的用户,可以在个人中心查看自己的基本信息和修改密码。

2、系统模块划分

用户登录成功后,进入管理主页面(main.jsp)可以对自己的客户名片进行管理。系统模块划分,如下图所示。

bc24a0758d2d19d173e65fdb1f3d004c.png

2、数据库设计

系统采用加载纯Java数据库驱动程序的方式连接MySQL5.5数据库。在MySQL5.5的数据库card中,共创建两张与系统相关的数据表:usertable和cardinfo。

1、数据库概念结构设计

根据系统设计与分析,可以设计出如下数据结构:

  • 用户

包括用户名和密码,注册用户名唯一。

  • 名片

包括ID、名称、电话、邮箱、单位、职务、地址、Logo以及所属用户。其中,ID唯一,“所属用户”与“1.用户”关联。根据以上的数据结构,结合数据库设计的特点,可画出如下图所示的数据库概念结构图。

8c474d7fad27a50e6cfe100fb0314a83.png

其中,ID为正整数,值是从1开始递增的序列。

2、数据库逻辑结构设计

将数据库概念结构图转换为MySQL数据库所支持的实际数据模型,即数据库的逻辑结构。用户信息表(usertable)的设计,如下表所示:

f561c438f178a1e5f47fd95ef1e2bd22.png

名片信息表(cardinfo)的设计,如下表所示:

06a2f7d822b1b3df512dfaba7a2168a9.png

3、系统管理

1、导入相关的jar包

新建一个Struts 2应用cardManage,在所有JSP页面中尽量使用EL表达式和JSTL标签,又因为系统采用纯Java数据库驱动程序连接MySQL5.5以及JSON数据转换。所以,需要将对应的JAR包复制到WebContentWEB-INFlib的目录下,JAR包如下图所示:

a9176ef5c5931bb2d8670115749947c0.png

2、JSP页面管理

由于篇幅受限,这里仅附上运行效果图,所有实现见源代码。

  • 管理主页面

注册用户在浏览器地址栏中输入http://localhost:8080/struts2cardManage/login.jsp访问登录页面,登录成功后,进入管理主页面(main.jsp),main.jsp的运行效果如下图所示:

852377c8e2898463c27c0b0abf7c407c.png
  • 程序报错页面

当Java程序运行出现异常时,系统会执行全局页面error.jsp。

  • 无权限提示页面

在没有成功登录的情况下,对名片进行增、删、改、查等操作时,系统执行无权限操作,提示页面nologin.jsp。

  • 包文件和配置文件管理

本系统的包文件和配置文件层次结构如下图所示:

8740e27b70d2979cf25a3c1db8f9ffe8.png

所需包文件说明如下所示:

action包该包是系统中所有Action类,包括名片管理的Action类和个人中心的Action类。Conf文件夹该文件夹的xml文件是本系统所有Action类的配置。“card.xml”是名片管理Action类的配置,“user.xml”是个人中心Action类的配置。这些xml文件需要在struts.xml文件中包含进来。dao包dao包中存放的Java程序是实现数据库的操作。其中BaseDao是一个父类,该类负责连接数据库;CardDao是BaseDao的一个子类,有关名片管理的数据访问在该类中;UserDao是BaseDao的另一个子类,有关用户的数据访问在该类中。另外,该包中还有一个名为“jdbc.properties”的文件,该文件是有关数据库的配置。包括驱动类名、数据库URL、用户名以及密码等。entity包该包中有1个实体类:Card,封装名片信息。interceptor包该包中有1个拦截器类:LoginValidateInterceptor,进行权限控制。util包该包中MyUtil类是获得一个时间字符串的工具类。所需配置文件文件说明如下所示:struts.xml在软件系统开发中,模块化设计是最常用的一种方式。为了方便管理,本系统也不例外,将不同模块的配置分别放在不同的配置文件中。然后,在struts.xml文件中,通过include引入这些配置文件。user.xml该配置文件负责配置和用户有关的Action。card.xml该配置文件负责配置个人中心有关的Action,在此处使用了通配符“*”动态匹配Action的请求名称。

4、用户管理

用户功能主要包括:用户注册、用户登录、修改密码和修改基本信息功能。

1、Action的实现

UserAction类负责处理“会员注册”、“会员登录”、“安全退出”以及“个人中心”的功能。

2、注册

在系统默认主页index.jsp,单击“注册”链接,打开注册页面register.jsp,效果如下图所示:

79c04d153b56117755dfdf3ec8a50d7c.png

在deleteSelect.jsp页面所示的注册页面中,输入“姓名”后,系统会根据Ajax异步请求路径“jsontest/isUse.action”检测“姓名”是否可用。输入合法的用户信息后,单击“注册”按钮,实现注册功能。

3、登录

在系统默认主页index.jsp,单击“登录”链接,打开登录页面login.jsp,效果如下图所示:

0b00e2845990c9b7a8b1ab8341b9b757.png

用户输入姓名和密码后,系统将对姓名和密码进行验证。如果姓名和密码同时正确,则成功登录,将用户信息保存到session对象,并进入系统管理主页面(main.jsp);如果姓名或密码有误,则提示错误。

单击登录界面中“确定”按钮,通过请求路径“user/login.action”,将登录请求提交给Action。配置文件user.xml根据请求路径找到对应Action类UserAction(6.1节)的login方法处理登录请求。

4、修改密码

单击主页面中“个人中心”菜单的“修改密码”菜单项,打开密码修改页面updatePWD.jsp。页面效果如下图所示:

7c1da259331a46c66f2f30c25ac8da8b.png

在密码修改页面中输入“新密码”和“确认新密码”后,单击“修改密码”按钮,将请求通过“user/updatePwd.action”提交给Action。配置文件user.xml根据请求路径找到对应Action类UserAction(6.1节)的updatePwd方法处理密码修改请求。

5、基本信息

单击主页面中“个人中心”菜单的“基本信息”菜单项,打开基本信息页面userInfo.jsp。页面效果如下图所示:

c92f8c08c9b861cf0e3fbb705021a972.png

5、名片管理

与系统相关的JSP页面、CSS和图片位于WebRoot目录下。在第3节中,已经介绍了系统的数据库操作,所以本节只是介绍JSP页面和Action的实现。

名片管理主要包括:添加名片、查询名片、修改名片、删除名片功能。

1、Action的实现

CardAction类负责处理“名片管理”的功能,包括添加、修改、删除、查询等。

2、添加名片

用户输入客户名片的姓名、电话、E-Mail、单位、职务、地址、Logo后,单击“提交”按钮实现添加。如果成功,则跳转到查询页面;如果失败,则回到添加页面。addCard.jsp页面实现添加名片信息的输入界面,如下图所示:

eb433430e77a6586d13c1e6599f7349c.png

单击上图中“提交”按钮,将添加请求通过“card/addCard.action”提交给Action处理。配置文件card.xml根据请求路径找到对应Action类CardAction(5.1节)的add方法处理添加功能。添加成功跳转到查询Action;添加失败回到添加页面。

3、查询名片

管理员登录成功后,进入名片管理系统的主页面,在主页面中初始显示查询页面queryCards.jsp,查询页面运行效果如下图所示:

6b091480f1e914945df36906bd268235.png

单击主页面中“名片管理”菜单的“查询名片”菜单项,打开查询页面queryCards.jsp。“查询名片”菜单项超链接的目标地址是个Action。该Action的请求路径为“card/queryCard.action”,配置文件card.xml根据请求路径找到对应Action类的query方法处理查询功能。在该方法中,根据动作类型(“修改查询”、“查询”以及“删除查询”),将查询结果转发到不同页面。

在queryCards.jsp页面中单击“详情”超链接,打开名片详细信息页面detail.jsp。“详情”超链接的目标地址是个Action。该Action的请求路径为“card/selectACard.action”。配置文件card.xml根据请求路径找到对应Action类的selectA方法处理查询一个名片功能。将查询结果转发给详细信息页面detail.jsp。名片详细信息页面如下图所示:

3997285bff3b529013bef9d3c29c0368.png

4、修改名片

单击主页面中“管理名片”菜单的“修改名片”菜单项,打开修改查询页面updateSelect.jsp。“修改名片”菜单项超链接的目标地址是个Action。找到对应Action类CardAction的方法query,在该方法中,根据动作类型,将查询结果转发给修改查询页面。

单击updateSelect.jsp页面中的“修改”超链接打开修改名片信息页面updateCard.jsp。“修改”超链接的目标地址是个Action。找到对应Action类CardAction的方法selectA,在该方法中,根据动作类型,将查询结果转发给updateCard.jsp页面显示。

输入要修改的信息后,单击“提交”按钮,将名片信息提交给Action,找到对应Action类CardAction的方法update,在方法中执行修改的业务处理。修改成功,进入查询名片。修改失败,回到updateCard.jsp页面。updateSelect.jsp页面的运行效果如下图所示。

04b0fa043d6e7e279fa35abe27771392.png

updateCard.jsp页面的运行效果如下图所示:

bf8bec38812852c46461456a0dc3d052.png

5、删除名片

单击主页面中“管理名片”菜单的“删除名片”菜单项,打开删除查询页面deleteSelect.jsp。

“删除名片”菜单项超链接的目标地址是个Action。找到对应Action类CardAction的方法query,在该方法中,根据动作类型,将查询结果转发给deleteSelect.jsp页面,页面效果如下图所示:

9eabe1bbf8b6d08cf779cdbd7a18961f.png

在上图的复选框中选择要删除的名片,单击“删除”按钮,将要删除名片的ID提交给控制器Action。找到对应Action类CardAction的方法delete,在该方法中,根据动作类型执行批量删除的业务处理。

单击上图中的“删除”超链接,将当前行的名片ID提交给控制器Action,找到对应Action类CardAction的方法delete,在该方法中,根据动作类型执行单个删除的业务处理。删除成功后,进入删除查询页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

音视频处理 Clion搭建ffmpeg开发环境

参考链接 Ubuntu 20.04 搭建 CLion FFmpeg 开发环境_TYYJ-洪伟的博客-CSDN博客 安装CLion 首先到 jetbrains 官网 https://www.jetbrains.com/clion/ 下载 CLion 安装包 CLion-2021.1.tar.gz使用finalshell和ubuntu之间配置ssh链接将Clion-2022.1.tar.gz 使用move移动到 /hom…

音视频处理 ffmpeg中级开发 H264编码

开发介绍 libavcodec/avcodec.h常用的数据结构 AVCodec 编码器结构体AVCodecContext 编码器上下文AVFrame 解码后的帧结构体内存的分配和释放 av_frame_alloc 申请av_frame_free() 释放avcodec_alloc_context3() 创建编码器上下文avcodec_free_context() 释放编码器上下文解码…

音视频处理 ffmpeg中级开发 视频转图片

操作流程 目的:使用FFmpeg将视频的每一帧数据转换为图片1,打开输入的多媒体文件,检索多媒体文件中的流信息2,查找视频流的索引号,通过索引号获取数据流;通过解析视频流中的编码参数得到解码器ID&#xff0…

企业知识库与知识管理:如何统一战略与实践

在知识密集型的现代企业中,知识已经成为了一种宝贵的资产。如何有效地管理和利用这一资产,成为企业持续发展与创新的关键。企业知识库与知识管理作为知识经济的两大支柱,它们的重要性不言而喻。但很多时候,我们发现企业的知识管理…

音视频处理 ffmpeg中级开发 AAC编码

介绍 编码流程类似于视频编码,1,查找编码器;2,设定参数,打开编码器;3,数据编码编码函数 avcodec_encode_audio2 已经被弃用FFmpeg 过时 Api 汇总整理 - 灰色飘零 - 博客园 未成功使用 旧版本i…

虚拟机为Ubuntu分配空间

当虚拟机里面的创建的ubuntu镜像需要更大的空间,将ubuntu关掉之后,对应调整硬盘的空间大小,由先前的20G上调至50G,但是先前的20G内存空间映射的位置是/dev/sda,后面增加的这段内存空间30G映射到/dev/sda1因此&#xff…

为什么人会摆高姿态_Yo , 你为什么喜欢冲浪?

“你为什么喜欢冲浪?” 那天木木突然问我。我愣住了。此时一道碧波恰从防泼堤(jetty)的那头升起,木木转头望去,视线追着那道浪缓缓向西,直至它破碎成白色的浪花。我瞥见他眼神中的光亮,就和小孩…

音视频处理 ffmpeg初级开发 命令行工具-实用命令

参考链接 ffmpeg Documentation作者:smallest_one 链接:FFmpeg命令行工具-实用命令 - 简书 目录 1,help命令使用 1.1 ffmpeg命令的语法结构1.2 获取详细的help信息1.3 打印帮助或者支持能力的信息1.4 全局选项1.5 文件选项1.6 视频/音频/字…

不同的电脑打印预览不同怎么解决_条码打印软件中标签预览正常打印无反应怎么解决...

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。一、预览正常情况下,打印没反应(1)在条码打印软件中设计好标签之后&#…

MP4文件格式的相关内容

参考链接 FFmpeg中mp4的demuxer(mov.c)代码阅读 - 简书mp4文件格式解析 - 简书mp4封装格式各box类型讲解及IBP帧计算_青丶空゛的博客-CSDN博客5分钟入门MP4文件格式 - 程序猿小卡 - 博客园​关于M4A文件的随机访问 - 云社区 - 腾讯云 MP4文件格式相关内容 MP4文件由许多box组…

华三交换机如何进入配置_学校机房项目交换机的如何配置,理解这篇,交换机配置不再难...

弱电项目中,交换机的配置是无法避免的,大部分的项目都有可能会涉及到,尤其是机房等网络项目,本期我们就通过一个实际项目案例来详细了解交换机在项目中的应用配置,如果我们平时对交换机配置不熟,这个案例可…

百度地图迁徙大数据_百度地图大数据:五一高速拥堵不似预期,广深成热门迁出入地...

五一假期在即,你是否做好了“出行功课”?高速拥堵水平降低、公众出门不出城、公园成踏青赏景热门目的地……在全国疫情防控仍未松懈的时刻,2020年的五一或许注定与往年不同。近日,百度地图发布2020五一假期安全出行大数据&#xf…

音视频的基础知识 视频播放器原理/封装格式/视频音频编码数据/视频像素数据/音频采样数据

参考链接 FFMpeg视频播放器的制作-雷霄骅(去除电流音版本)_哔哩哔哩_bilibili 视频播放器原理 播放视频文件的流程YUV是一张屏幕中像素点的数值封装格式 MP4 RMVB TS FLV AVI将视频和音频码流按照一定的格式存储在一个文件中封装格式分析工具&#xf…

科立捷7代写频软件_天大厦大“两硕士论文雷同”通报,代写买卖论文

澎湃新闻记者 薛莎莎天津大学、厦门大学7月10日晚就“两硕士论文雷同”一事,分别发出调查处理通报。通报称,涉事两名学生存在由他人代写、买卖论文的学术作假的行为,均撤销其所获硕士学位,收回、注销硕士学位证书。澎湃新闻注意到…

FFMpeg命令行基础

参考链接 FFMpeg视频播放器的制作-雷霄骅(去除电流音版本)_哔哩哔哩_bilibili音视频处理 ffmpeg初级开发 命令行工具-实用命令_MY CUP OF TEA的博客-CSDN博客 介绍 FFMpeg是视频播放和转码的内核 使用 win中ffmpeg.exe用于视频转码简单命令&#xff1…

悲观锁和乐观锁_面试必备之乐观锁与悲观锁

何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。大家可以点击加群【JAVA架构知识学习讨论群】47398464…

Microsoft Visual Studio2019环境下搭建FFmpeg开发环境

参考链接 《基于 FFmpeg SDL 的视频播放器的制作》课程的视频_雷霄骅的博客-CSDN博客_雷霄骅ffmpeg视频教程小学期课程资料 - 基于FFmpegSDL的视频播放器的制作.zip_免费高速下载|百度网盘-分享无限制辅助参考链接使用VS2019创建项目,添加文件和库地址_MY CUP OF …

vue process.env获取不到_从文档开始,重学vue(下)源码级别

此篇文章主要是从应用及源码层面讲解vue部分常用api,阅读起来可能略有难度,新手可以看《从文档开始,重学vue(上)》示例代码均在vue-cli3中完成Vue.extend()可以使用 extend 创建一个子类,该方法通常用于构建全局组件,如弹框组件等,下面我们就用它来制作个全局alert组件吧首先我…

Microsoft Visual Studio2019环境下搭建SDL开发环境

参考链接 《基于 FFmpeg SDL 的视频播放器的制作》课程的视频_雷霄骅的博客-CSDN博客_雷霄骅ffmpeg视频教程小学期课程资料 - 基于FFmpegSDL的视频播放器的制作.zip_免费高速下载|百度网盘-分享无限制辅助参考链接VS自动链接到Windows上随vcpkg安装的SDL2库 | 码农俱乐部 - G…

不关注公众号可以获取openid吗_微信公众号粉丝迁移

目录 [toc] 微信公众号迁移 正常的公众号迁移直接通过微信操作就可以,如下图。但是因为udb数据里面存的是迁移前公众号的openid以及unionid,需要自行获取新旧openid以及unionid。 旧的用户信息要在迁移之前获取,第三步点击同意之后就公众号的接口就调不通…