基于Struts2框架的名片管理系统

目录

1、系统设计

2、数据库设计

3、系统管理

4、用户管理

5、名片管理


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

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

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

1、系统设计

1、系统功能需求

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

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

2、系统模块划分

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

名片管理系统功能

2、数据库设计

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

1、数据库概念结构设计

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

  • 用户

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

  • 名片

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

数据库概念结构图

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

2、数据库逻辑结构设计

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

用户信息表

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

名片信息表

3、系统管理

1、导入相关的jar包

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

所需JAR包

2、JSP页面管理 

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

  • 管理主页面

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

管理主页面
  • 程序报错页面

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

  • 无权限提示页面

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

  • 包文件和配置文件管理

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

包层次结构图

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

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

4、用户管理

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

1、Action的实现

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

2、注册

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










注册页面

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

3、登录

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









登录界面

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

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

4、修改密码

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









密码修改页面

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

5、基本信息

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









基本信息页面

5、名片管理

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

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

1、Action的实现

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

2、添加名片

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









添加名片页面

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

3、查询名片

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

查询页面

单击主页面中“名片管理”菜单的“查询名片”菜单项,打开查询页面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。名片详细信息页面如下图所示:

名片详情

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页面的运行效果如下图所示。

updateSelect.jsp页面

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

updateCard.jsp页面

 

5、删除名片

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

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

deleteSelect.jsp页面

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

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

请关注微信公众号,回复关键字:名片管理系统,获取源码~

关注公众号,发送关键字:Java车牌识别,获取项目源码。