SSH框架(Struts + Spring + Hibernate)是一种广泛应用的Java企业级开发框架组合,它将Struts、Spring和Hibernate三个优秀的框架有机地结合在一起,提供了一套完整的解决方案,可以帮助开发人员快速构建可扩展、可维护的Java应用程序。
SSH框架是由Struts、Spring和Hibernate三个独立的开源框架组合而成。每个框架都有自己的特点和优势,通过结合使用,可以充分发挥各自的优势,实现更高效的开发和部署。
Struts是一个基于MVC(Model-View-Controller)设计模式的Web应用程序框架。它通过将应用程序的不同层次进行分离,提供了更好的代码结构和可维护性。Struts的核心是一个控制器,负责接收用户请求、路由请求并调度处理程序进行处理,最后将处理结果返回给用户。Struts具有良好的扩展性和易于使用的特点,可以帮助开发人员快速构建功能丰富的Web应用程序。
在项目中对应的struts.xml文件,其可以配置页面显示的内容,比如:
<!-- 购物车的action-->
<action name="cart_*" class="cartAction" method="{1}">
<result name="addCart">/WEB-INF/jsp/cart.jsp</result>
<result name="clearCart">/WEB-INF/jsp/cart.jsp</result>
<result name="removeCart">/WEB-INF/jsp/cart.jsp</result>
<result name="myCart">/WEB-INF/jsp/cart.jsp</result>
</action>
在上面示例的代码中,通过“name=“cart_*””进行匹配,并且跳转到对应.jsp页面中。比如在对应的业务模块中实现ActionSupper类。在这里通过调用service层进行逻辑处理。
例如代码块:
public class IndexAction extends ActionSupport {
//注入一级分类的service
private CatagoryService catagoryService;
public void setCatagoryService(CatagoryService catagoryService) {
this.catagoryService = catagoryService;
}
//进入商品的service
private ProductService productService;
public void setProductService(ProductService productService) {
this.productService = productService;
}
public String execute(){
//查询所有一级分类的方法实现
List<Category> cList=catagoryService.findAll();
//将一级分类存入道session的范围
ActionContext.getContext().put("cList",cList);
//查询热门商品
List<Product> hList= productService.findHot();
//保存道值栈中
ActionContext.getContext().getValueStack().set("hList",hList);
//查询最新商品:
List<Product>nList= productService.findNew();
//保存到值栈中
ActionContext.getContext().getValueStack().set("nList",nList);
return "index";
}
}
这里需要注意的是当创建新的action类后,并且在该类中注入了对应的service,同时在applicationContext.xml文件中注入service,例如:
<bean id="indexAction" class="main.java.cn.itcast.user.action.IndexAction" scope="prototype">
<property name="catagoryService" ref="CatagoryService"/>
<property name="productService" ref="ProductService"/>
</bean>
Spring是一个轻量级的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)容器框架。它通过将对象之间的依赖关系交由容器管理,降低了组件之间的耦合度,提高了代码的可测试性和可扩展性。Spring还提供了丰富的功能,如事务管理、安全性等。开发人员可以使用Spring来管理JavaBean、进行依赖注入、实现面向切面的编程等。
public class MyBean {
private String message;
// Getter and setter methods for message
public void init() {
// 初始化方法
}
public void destroy() {
// 销毁方法
}
}
Hibernate是一个强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互。通过Hibernate,开发人员可以使用面向对象的方式操作数据库,而不必关心底层的SQL语句和数据库细节。Hibernate提供了丰富的持久化功能,包括对象的CRUD操作、事务管理、缓存机制等。通过使用Hibernate,可以大大提高数据访问的效率和灵活性。
Hibernate可以理解为是实体部分。在代码中需要写实体类,并编写对应的hbm.xml文件
例如:实体类
public class OrderItem {
private Integer itemid;
private Integer count;
private Double subtotal;
private Product product; //外键
private Order order;}
这里省略了get和set方法
然后在编写对一个hbm.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="main.java.cn.itcast.order.vo.OrderItem" table="orderitem" >
<id name="itemid">
<generator class="native"/>
</id>
<property name="count"/>
<property name="subtotal"/>
<!-- 关联关系;与订单的关系-->
<many-to-one name="order" class="main.java.cn.itcast.order.vo.Order" column="oid"/>
<!--关联关系:与商品的关系-->
<many-to-one name="product" class="main.java.cn.itcast.product.vo.Product" column="pid"/>
</class>
</hibernate-mapping>
在此文件中体现了表该实体对应的表,以及对应的表关系。
SSH框架(Struts + Spring + Hibernate)是一种广泛应用的Java企业级开发框架组合,它将Struts、Spring和Hibernate三个优秀的框架有机地结合在一起,提供了一套完整的解决方案,用于开发可扩展、可维护的Java应用程序。下面对SSH框架进行总结和分析:
优点:
模块化和分层架构:SSH框架采用MVC(Model-View-Controller)设计模式,将应用程序的不同层次进行分离,有助于代码结构清晰,易于维护和扩展。
高效的开发:每个框架都有自己的特点和优势,通过结合使用,可以充分发挥各自的优势,提高开发效率。
松耦合和可测试性:Spring框架通过IoC容器实现了依赖注入,降低了组件之间的耦合度,提高了代码的可测试性和可扩展性。
数据持久化和ORM支持:Hibernate框架简化了Java应用程序与数据库之间的交互,通过对象关系映射(ORM)实现了面向对象的数据持久化操作,提高了开发效率和灵活性。
Web应用程序支持:Struts框架提供了强大的Web应用程序开发支持,通过控制器、视图和模型的分离,实现了可维护和可扩展的Web应用程序。
灵活性和可扩展性:
SSH框架提供了各种配置选项和扩展点,可以根据项目需求进行定制和扩展,满足不同规模和复杂度的应用程序开发需求。
可以与其他开源框架和工具进行集成,如Spring Boot、Spring Security等,进一步提升开发效率和功能扩展性。
学习曲线和复杂性:
SSH框架相对于单个框架而言,学习曲线可能较陡峭,因为需要掌握并理解三个框架的概念、用法和配置。
框架的复杂性可能增加了系统的复杂性,对于小型项目而言,可能会增加不必要的开销。
社区支持和成熟度:
SSH框架在Java开发社区有着广泛的应用和大量的资料和资源,可以从社区获得丰富的支持和解决方案。
由于SSH框架已经经过多年的发展和演进,因此在稳定性、性能和安全性方面具有较高的成熟度和可靠性。
综上所述,SSH框架通过结合Struts、Spring和Hibernate三个框架的优势,提供了一套完整的解决方案,用于开发可扩展、可维护的Java应用程序。它具有高效的开发、灵活的定制和扩展能力,同时也具备一定的学习曲线和复杂性。对于大型、复杂的企业级应用程序而言,SSH框架是一种强大而可靠的选择。
文章浏览阅读936次,点赞22次,收藏26次。React核心基础
文章浏览阅读2k次。linux系统查看磁盘空间的命令是【df -hl】,该命令可以查看磁盘剩余空间大小。如果要查看每个根路径的分区大小,可以使用【df -h】命令。df命令以磁盘分区为单位查看文件系统。本文操作环境:red hat enterprise linux 6.1系统、thinkpad t480电脑。(学习视频分享:linux视频教程)Linux 查看磁盘空间可以使用 df 和 du 命令。df命令df 以磁..._df -hl
文章浏览阅读923次。uses ComObj;var ExcelApp: OleVariant;implementationprocedure TForm1.Button1Click(Sender: TObject);const // SheetType xlChart = -4109; xlWorksheet = -4167; // WBATemplate xlWBATWorksheet = -4167_range[char(96 + acolumn) + inttostr(65536)].end[xlup]
文章浏览阅读2.3k次。上图为任务代码,在任务具体执行的方法中使用,一定要写在方法内使用SpringContextUtil.getBean()方法实例化Spring service类下边是ruoyi-quartz模块中util/SpringContextUtil.java(已改写)import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.s..._ruoyi-quartz无法引入ruoyi-admin的service
文章浏览阅读2w次,点赞10次,收藏77次。yum,全称“Yellow dog Updater, Modified”,是一个专门为了解决包的依赖关系而存在的软件包管理器。可以这么说,yum 是改进型的 RPM 软件管理器,它很好的解决了 RPM 所面临的软件包依赖问题。yum 在服务器端存有所有的 RPM 包,并将各个包之间的依赖关系记录在文件中,当管理员使用 yum 安装 RPM 包时,yum 会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的 RPM 包并进行安装。_centos7配置yum源
文章浏览阅读828次,点赞21次,收藏8次。今天学长向大家分享一个毕业设计项目毕业设计 基于深度学习的抽烟行为检测算法实现(源码分享)毕业设计 深度学习的抽烟行为检测算法实现通过目前应用比较广泛的 Web 开发平台,将模型训练完成的算法模型部署,部署于 Web 平台。并且利用目前流行的前后端技术在该平台进行整合实现运营车辆驾驶员吸烟行为检测系统,方便用户使用。本系统是一种运营车辆驾驶员吸烟行为检测系统,为了降低误检率,对驾驶员视频中的吸烟烟雾和香烟目标分别进行检测,若同时检测到则判定该驾驶员存在吸烟行为。进行流程化处理,以满足用户的需要。
文章浏览阅读3.7k次,点赞3次,收藏14次。多个定时器同步触发启动是一种比较实用的功能,这里将对此做个示例说明。_stm32 定时器同步
文章浏览阅读348次。出处 : http://www.cnblogs.com/mythou/p/3187881.html本来想分析AppsCustomizePagedView类,不过今天突然接到一个临时任务。客户反馈说机器界面的图标很难点击启动程序,经常点击了没有反应,Boss说要优先解决这问题。没办法,只能看看是怎么回事。今天分析一下Launcher启动APP的过程。从用户点击到程序启动的流程,下面针对WorkSpa..._回调bubbletextview
文章浏览阅读6.2k次。Ubuntu 12 最快的两个源 个人感觉 163与cn99最快 ubuntu下包过慢 1、首先备份Ubuntu 12.04源列表 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup (备份下当前的源列表,有备无患嘛) 2、修改更新源 sudo gedit /etc/apt/sources.list (打开Ubuntu 12_un.12.cc
文章浏览阅读5.8k次,点赞6次,收藏86次。1.思路(1)动态添加路由肯定用的是addRouter,在哪用?(2)vuex当中获取到菜单,怎样展示到界面2.不管其他先试一下addRouter找到router/index.js文件,内容如下,这是我自己先配置的登录路由现在先不管请求到的菜单是什么样,先写一个固定的菜单通过addRouter添加添加以前注意:addRoutes()添加的是数组在export defult router的上一行图中17行写下以下代码var addRoute=[ { path:"/", name:"_vue动态路由权限
文章浏览阅读8.9k次。 关键词: JSTL 之变量赋值标签 /* * Author Yachun Miao * Created 11-Dec-06 */关于JSP核心库的set标签赋值变量,有两种方式: 1.日期" />2. 有种需求要把ApplicationResources_zh_CN.prope
文章浏览阅读3.1k次,点赞3次,收藏2次。1.1ZY5621概述ZY5621是VGA音频到HDMI转换器芯片,它符合HDMI1.4 DV1.0规范。ZY5621也是一款先进的高速转换器,集成了MCU和VGA EDID芯片。它还包含VGA输入指示和仅音频到HDMI功能。进一步降低系统制造成本,简化系统板上的布线。ZY5621方案设计简单,且可以完美还原输入端口的信号,此方案设计广泛应用于投影仪、教育多媒体、视频会议、视频展台、工业级主板显示、手持便携设备、转换盒、转换线材等产品设计上面。1.2 ZY5621 特性内置MCU嵌入式VGA_vga转hdmi带音频转换器,转接头拆解