基于SSH框架实现的管理系统(包含java源码+数据库)

news2024/9/19 10:43:43

资料下载链接

介绍

基于SSH框架的管理系统 简洁版 ;

实现 登录 、 注册 、  、  、  、  ;

可继续完善增加前端、校验、其他功能等;

可作为 SSH(Structs Spring Hibernate)项目 开发练习基础模型;

课程设计 、 毕业设计 开发基础;

任何复杂的框架都是简单的知识组合并延伸的,学好基础知识才是最重要的;

此项目简单,便于理解基本原理,为复杂SSM复杂项目的开发打下基础。

环境准备

开发平台:Idea 2019

数据库:MySQL 5.0.22

服务器:Tomcat 9.0.37

注意:需要安装IDEA开发平台、MySQL数据库和Tomcat服务器,版本不一定完全一致,做好版本适应性配置即可。

项目结构

1.数据库及Java代码文件 

输入图片说明

2.Jsp等前端代码 

输入图片说明

3.Tomcat服务器配置与运行

输入图片说明

4.MySQL数据库 

输入图片说明

基本原理

1. 相关技术

Structs

一、Structs1原理

1.Structs1原理图

输入图片说明

2.Structs1原理步骤

用户在视图层输入数据。

第一步:Structs框架总控制器,初始化,开始读取strusts-config.xml文件。Struts框架的总控制器ActionServlet是一个Servlet,在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为Struts中不同的模块初始化相应的对象。(面向对象思想)

第二步:视图层向总控制器发送Http请求,用户提交表单或者通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器

第三步:Form填充;structs的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

第四步:派发请求;控制器根据配置信息,对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。

第五步:处理业务;Action一般只包含一个excute()方法,负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。服务器通过ActionForward对象进行转发工作。

第六步:返回响应;Action将业务处理的不同结果返回一个目标响应对象给总控制器。

第七步:查找响应;总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。

第八步:响应用户;目标响应对象将结果传递给资源对象,将结果展现给用户。

3.Structs的优缺点

优点:

	①开源的框架,结构清晰

	②是MVC的经典实现(MVC是一种思想,而不是一种技术)

	③处理异常机制,实现国际化 

	④具有强大的标签库 

	⑤解决了JSP页面存在大量的JAVA代码,维护起来方便 

	⑥在formBean中会自动提交,不会去使用传统的get、set方法得到值、取值

缺点:

	①配置复杂 

	②测试不方便 

	③依赖web容器 

	④action是一个单例模式,必须设置为线程安全

二、Structs2原理

1.Structs2原理图

输入图片说明

2.Struct2原理步骤

第一步:客户端初始化一个指向Servlet容器(例如Tomcat)的请求

第二步:请求经过一系列的过滤器(Filter)

第三步:接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action

第四步:如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy

第五步:ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类

第六步:ActionProxy创建一个ActionInvocation的实例

第七步:ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

第八步:一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper

注意:在上述过程中所有的对象(Action,Results,Interceptors等)都是通过ObjectFactory来创建的

3.Structs2的优缺点

优点:

①大量的拦截器:Struts2本身提供了大量的可重用的拦截器,比如类型转换拦截器,很多时候从页面取得参数,这个时候它是String类型的,需要手动。

②基于插件的框架:Struts2是一个基于插件的框架,社区中提供了很多实用的插件,比如jfreechat/json等等,使用这些插件可以简化我们的开发,加快开发进度。Struts2最大的缺点莫过于在好多web服务器上支持不好,例如在websphere5.5,weblogic8.1及以前版本支持非常查,需要用最新的。

③多种视图的支持:多种视图的支持:jsp,freemarker,Veloctiy,甚至可以通过轻松的改造支持pdf,同一个项目中可以支持多种视图。

④更加的模块化:与Struts1.X 相比,Struts2更加的模块化,可以轻松将配置信息按功能界限拆分成多个文件,便于管理和团队协作开发。

⑤与Spring的集成:与Struts1.x相比,Struts2不必再自己编写singleton,进一步的降低了程序间的耦合性,就Struts2内部本身而言,降低了框架本身的偶合性。

⑥基于pojo易于测试:在Struts1.x中需要Mock出这两个Http对象,很难编写Action的单元测试,与Struts1.x相比,Struts2的Action 不再依赖于HttpServletRequest和HttpServletResponse对象,使我们能够更方便的针对Action编写单元测试。

缺点:

①Struts2中Action中取得从jsp中传过来的参数时麻烦。可以为Struts2的Action中的属性配置上Getter和Setter方法,通过默认拦截器,就可以将请求参数设置到这些属性中。但当请求参数很多时,Action类就显得很臃肿。Action中的属性不但可以用来获得请求参数还可以输出到Jsp中,会更乱。

②校验比较繁琐。如果校验出错的只能给用户提示一些信息。如果有多个字段,每个字段出错时返回到不同的画面,在Strut2框架下借助框架提供的校验逻辑就不容易实现。

③安全性有待提高。使用缩写的导航参数前缀时的远程代码执行漏洞,另一个是使用缩写的重定向参数前缀时的开放式重定向漏洞。

Spring

1.简介

Spring是一个开源框架,是2003年兴起的轻量级的Java开发框架,为解决企业应用开发的复杂性而创建的。简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。日常开发中IOC容器使用较多,可以装载Bean,即Java中的类,不用在每次使用类的时候初始化,很少出现关键字new。另外spring的AOP,事务管理等等也会经常使用。

IOC:控制反转,是一种降低对象之间耦合关系的设计思想。如:租赁房屋,平常租房需要自己逐个小区寻找房屋,然后使用了IOC之后,即需找一个租房中介,把对房屋的需求告诉中介,就可以直接找到合适的房屋。即把需求交给了第三方,有第三方帮助你完成你的需求,中介就相当于Spring容器。

AOP:面向切面编程,是面向对象开发的一种补充,允许开发人员在不改变原来模型的基础上动态的修改模型以满足新的需求,如:动态的增加日志、安全或异常处理等。AOP使业务逻辑各部分间的耦合度降低,提高程序可重用性,提高开发效率。

2.Spring的主要特征

①轻量级:Spring是一个轻量级的开发框架,基本版本大约只有2M

②IOC:控制反转,应用程序中对象之间的依赖是由Spring 来控制的

③AOP:面向切面编程,Spring支持面向切面编程,这样可以将业务逻辑和系统服务分开,分离

④容器:包含并管理应用程序中对象的生命周期和配置信息

⑤MVC思想:Spring也是基于MVC思想的框架,也遵循模型-视图-控制器这三个层次

⑥事务:spring提供一个持续化的接口,可以上至扩展到本地事务下至扩展到全局事务

⑦异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,hibernate,or JDO抛出的)转化为一致的unchecked 异常。

3.Spring优缺点

优点:

①Spring能有效地组织你的中间层对象。

②Spring能消除在许多工程中常见的对Singleton的过多使用。降低了系统的可测试性和面向对象的程度。

③通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消除各种各样自定义格式的属性文件的需要。

④通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编程习惯。 ⑤Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。

⑥使用Spring构建的应用程序易于单元测试。

⑦Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。

⑧Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实现。

⑨Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R mapping产品(如Hibernate)。

缺点:

①jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器

②Spring不支持分布式,这也是EJB仍然在用的原因之一。

Hibernate

1.hibernate的工作原理

第一步:Configuration.config() 来读取xml配置文件

第二步:Configuration.config()来读取配置文件里面的映射信息

第三步:创建会话工厂

第四步:打开会话

第五步:开启事务

第六步:持久化到数据库

第七步:关闭会话

第八步:关闭会话工厂

2.hibernate优缺点

优点:

①hibernate是基于ORMapping技术的开源的框架,对JDBC进行了轻量级的封装,使用面向对象的思维来操纵数据库。

②hibernate提供了session缓存和二级缓存,对于不需要进行复杂查询的系统,性能有提升。

③低侵入式设计

缺点:

①hibernate不容易上手,学习成本太高

②hibernate由于不直接对底层数据库进行操作,所以不适合复杂的查询(统计)

③不适合大量的聚集操作(存储过程)

2. 基本原理

SSH是 Struts、Spring、Hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架,用于构建灵活、易于扩展的多层Web应用程序。

SSH构建系统的基本业务流程:

Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使Struts和Hibernate更好地工作。

SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。

SSH框架的项目,该架构主要分为三个层次:

(1)Struts2:负责web层

(2)Spring:业务层的管理

(3)Hibernate:负责数据持久化

在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。

在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

页面展示

1.登录页面 

输入图片说明

2.注册页面 

输入图片说明

3.主页 

输入图片说明

4.新增页面 

输入图片说明

5.删除页面 

输入图片说明

6.修改页面 

输入图片说明

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

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

相关文章

维护平衡的艺术:如何与干系人建立和谐关系以确保项目成功

在项目管理领域中,干系人的作用是无法忽视的。他们的支持和参与往往是项目成功的关键。与干系人建立和维护良好的关系成为每一位项目经理必备的技能。接下来,我们将深入探讨如何有效地与干系人互动,从而为项目的成功奠定坚实基础。 干系人的…

中国“诺贝尔奖”未来科学大奖公布2023年获奖名单

未来科学大奖委员会于8月16日公布2023年获奖名单。柴继杰、周俭民因发现抗病小体并阐明其结构和在抗植物病虫害中的功能做出的开创性工作获得“生命科学奖”,赵忠贤、陈仙辉因对高温超导材料的突破性发现和对转变温度的系统性提升所做出的开创性贡献获得“物质科学奖…

2023骨传导耳机推荐,适合运动骨传导耳机推荐

相信很多人跟我一样,随着现在五花八门的耳机品种增多,选耳机的时候真是眼花缭乱,尤其还是网购,只能看,不能试,所以选择起来比较困难, 作为一个运动达人,为了让大家在购买耳机时少走弯…

YOLO系列解读DAY1—YOLOV1预训练模型

一、说在前面 小伙伴们好,博主很久没有写博客了,略感生疏,不到之处敬请谅解,欢迎指出文中错误,大家一起探讨。欲看视频讲解,可转至博主DouYin、B站,欢迎关注,链接如下: …

Cat(1):Cat入门

1 什么是调用链监控 1.1 架构的演进历史 单体应用 架构说明: 全部功能集中在一个项目内(All in one)。 在单体应用的年代,分析线上问题主要靠日志以及系统级别的指标。 微服务架构 架构说明: 将系统服务层完全独立…

亚马逊添加心愿单对卖家有什么好处

在亚马逊平台上,卖家可以从消费者的角度来看待心愿单的好处。消费者可以将自己感兴趣的商品添加到心愿单中,这对卖家来说也是有一些潜在好处的: 1、潜在销售机会增加:当消费者将商品添加到心愿单中,这可能表示他们对这…

mySQL 视图 VIEW

简化版的创建视图 create view 视图名 as select col ...coln from 表create view 视图名(依次别名) as select col ...coln from 表create view 视图名 as select col “别名1”,。。。col "别名n" from 表show tab…

Angular安全专辑之二——‘unsafe-eval’不是以下内容安全策略中允许的脚本源

一:错误出现 这个错误的意思是,拒绝将字符串评估为 JavaScript,因为‘unsafe-eval’不是以下内容安全策略中允许的脚本源。 二:错误场景 testEval() {const data eval("var sum2 new Function(a, b, return a b); sum2(em…

挖掘优质短视频超百万条,火山引擎DataLeap助力电商平台生态治理

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在人们的日常生活中,网购已经成为人们生活中不可或缺的购物形式。 根据《中国社交电商行业发展白皮书(2022)》的数据显示&#x…

古战策与现代项目: 孙子兵法在项目管理中的应用

项目管理在当今的商业环境中是至关重要的。从初创公司到世界500强,项目管理的策略和工具都在不断地演变。然而,我们是否可以从古老的战争策略中汲取智慧,并将它们应用于现代的项目管理实践中呢? 让我们通过孙子兵法,一个古老而又…

ui设计师工作总结及计划范文模板

ui设计师工作总结及计划范文模板【篇一】 白驹过隙,转眼间某某年已近结尾,时间伴随着我们的脚步急驰而去,到了个人工作总结的时候,蓦然回首,才发现过去的一年不还能画上圆满的句号,内心感慨万千&#xff0c…

【PySide】Pyside QtWebEngine网页浏览器打开Flash网页

说明 QWebEngineView 加载 flash插件,可成功显示Flash,如图 源代码 # -*- coding: utf-8 -*- """ @File : pyside_2.py @Time : 2023/8/17 0:11 @Author : KmBase @Version : 1.0 @Contact : @Desc : None """import…

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 摘要模型架构Embedding层Transformer Encoder层MLP Head 整体流程 摘要 虽然Transformer体系结构已经成为自然语言处理任务的事实上的标准,但它在计算机视觉方面的应用仍然有限。在视…

传统算法是如何在销补调计划中发挥作用的

本文分享了一个「传统机器学习算法」在实际业务中的使用场景。 前言 如果嫌麻烦,你可以直接跳到正题观看~ 最近无论是在工作中的交谈,还是在日常刷屏的新闻,铺天盖地的都是大模型。我横竖是看不明白,费了大劲终于从字缝里看到了两…

后端项目打包上传服务器记录

后端项目打包上传服务器记录 文章目录 后端项目打包上传服务器记录1、项目打包2、jar包上传服务器 本文记录打包一个后端项目,上传公司服务器的过程。 1、项目打包 通过IDEA的插件进行打包: 打成一个jar包,jar包的位置在控制台可以看到。 2、…

记录--JS 的垃圾回收机制

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 垃圾回收(Garbage Collection)是一种内存管理机制,用于检测和清理不再被程序使用的内存,这些不再被使用的内存就被称为垃圾。垃圾回收器会在 JS 引擎(浏览器或者 nodejs)内…

Baklib是比语雀、Notion、石墨文档更好用的在线知识库管理工具

在当今信息爆炸的时代,如何高效地管理和利用知识成为了每个人都面临的问题。在线知识库管理工具应运而生,帮助用户整理、存储和共享知识。在这篇文章中,我将介绍一个更好用的在线知识库管理工具——Baklib,并探讨它相对于其他知识…

Python爬虫——scrapy_多条管道下载

定义管道类(在pipelines.py里定义) import urllib.requestclass DangDangDownloadPipelines:def process_item(self, item, spider):url http: item.get(src)filename ../books_img/ item.get(name) .jpgurllib.request.urlretrieve(url, filename…

JAVA编程学习笔记

常用代码、特定函数、复杂概念、特定功能……在学习编程的过程中你会记录下哪些内容?快来分享你的笔记,一起切磋进步吧! 一、常用代码 在java编程中常用需要储备的就是工具类。包括封装的时间工具类。http工具类,加解密工具类&am…

上海亚商投顾:沪指震荡调整 房地产、券商板块逆势走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大股指今日继续调整,深成指尾盘跌近1%,科创50指数跌超1.7%。房地产板块逆势走强&#xf…