SSH

http://www.cnblogs.com/hoobey/p/5512924.html

 

 

 

struts   ---  控制器

hibernate   操作数据库

spring        解耦

Struts 、 spring 、 Hibernate 在各层的作用

1 ) struts 负责 web 层 .

ActionFormBean 接收网页中表单提交的数据,然后通过 Action 进行处理,再 Forward 到对应的网页。

在 struts-config.xml(struts1的配置文件,Struts.xml 是Struts2的) 中定义 <action-mapping>, ActionServlet 会加载。

2 ) spring 负责业务层管理,即 Service (或 Manager).

1 . service 为 action 提供统计的调用接口,封装持久层的 DAO.

2 .可以写一些自己的业务方法。

3 .统一的 javabean 管理方法

4 .声明式事务管理

5. 集成 Hiberante

 

3 ) Hiberante ,负责持久化层,完成数据库的 crud(增删改查) 操作

hibernate 为持久层,提供 OR/Mapping 。

它有一组 .hbm.xml 文件和 POJO(类), 是跟数据库中的表相对应的。然后定义 DAO ,这些是跟数据库打交道的类,它们会使用 PO 。

 

在 struts+spring+hibernate 的系统中,

对象的调用流程是: jsp-> Action - > Service ->DAO ->Hibernate 。

数据的流向是 ActionFormBean 接受用户的数据, Action 将数据从 ActionFromBean 中取出,封装成 VO 或 PO,

再调用业务层的 Bean 类,完成各种业务处理后再 forward 。而业务层 Bean 收到这个 PO 对象之后,会调用 DAO 接口方法,进行持久化操作。

   --

spring:Aop管理事务控制,IoC管理各个组件的耦合,DaoTemplate作为常规持久层的快速开发模板! 

struts:控制层Action,页面标签和Model数据,调用业务层 

Hibernate:负责数据库和对象的映射,负责DAO层(Data Access Object:数据访问) 

 

spring整合hibernate和struts,只要在配好了applicationContext.xml,在struts的action中直接调用就可以了。hibernate访问数据库的操作都在spring中实现了,spring的调用又在stuts的action中实现了。这个ssh框架就连到了一起……

一个简单的SSH例子

配置文件

/SSHLoginDemo/WebRoot/WEB-INF/struts.xml

代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm"
type="com.qdu.sun.struts.form.LoginForm" />

</form-beans>

<global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp"
name="loginForm" path="/login" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/success.jsp" />
<forward name="fail" path="/fail.jsp" />
</action>

</action-mappings>

<message-resources
parameter="com.qdu.sun.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>

</struts-config>

 

转载于:https://www.cnblogs.com/iOS-mt/p/6023135.html

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

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

相关文章

C#halcon点拟合圆形函数

public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R){t

MyBatis 实践 -配置

MyBatis 实践标签&#xff1a; Java与存储 Configuration mybatis-configuration.xml是MyBatis的全局配置文件(文件名称随意),其配置内容和顺序例如以下: properties : 属性(文件)载入/配置settings : 全局配置參数typeAliases : 定义类型别名typeHandlers : 类型处理器objectF…

DM365视频处理流程/DM368 NAND Flash启动揭秘

DM365的视频处理涉及到三个相关处理器&#xff0c;分别是视频采集芯片、ARM处理器和视频图像协处理器&#xff08;VICP&#xff09;&#xff0c;整个处理流程由ARM核协调。视频处理主要涉及三个处理流程&#xff0c;分别是视频采集、视频编码和对编码后的视频的处理&#xff0c…

系统的Drawable(四)-LayerListDrawable

系统的Drawable(四)-LayerListDrawable 学习自 https://blog.csdn.net/u014695188/article/details/52815444 LayerListDrawable 漫谈 使用layer-list可以将多个drawable按照顺序层叠在一起显示&#xff0c;默认情况下&#xff0c;所有的item中的drawable都会自动根据它附上vie…

图像处理:镜头频率(衍射极限) 和 相机采样:显微镜的采样定理

采样定理大家都知道&#xff0c;相信不用多说。 我自己写下来给自己看。 下面&#xff0c;我总结 大家平时照相的镜头或者显微镜的物镜的情况下&#xff1a; 采样频率是指图像在数字化的时候的过程&#xff0c;实际上就是我们相机感光元件CCD或者CMOS的一个个小像元把模拟的连续…

【练习】使用事务控制语句

1.使用show engines 命令确定系统中是否有任何事务存储引擎可用以及哪个是默认引擎。 2.使用set autocommit 语句启用autocommit。 3.为使用world数据库做准备&#xff0c;确认city表使用事务存储引擎innodb。 4.使用start transaction 语句显式启动新事务。 5.删除一行。 6.使…

老男孩Day1作业(一):编写登录接口

要求&#xff1a;编写登录接口 1. 输入用户名和密码 2. 认证成功后显示欢迎信息 3. 输错三次后锁定 1&#xff09;编写思路 编写思路参考下面GitHub链接中的流程图 https://github.com/ChuixinZeng/PythonStudyCode/blob/master/PythonCode-OldBoy/Day1/作业/Day1_作业_登录接口…

hashcat源码分析1

typedef struct hash{void *digest;salt_t *salt;void *esalt;void *hook_salt; // additional salt info only used by the hook (host)int cracked;hashinfo_t *hash_info;char *pw_buf;int pw_len;} hash_t;一.1. 信号 函数&a…

Davinci及U-boot的一些介绍

TI推出的数字多媒体平台DM系列&#xff0c;集成了ARM与DSP双核处理器&#xff1a;DSP处理器运行DSP/BIOS操作系统&#xff0c;负责音视频编解码算法以及其他图形处理算法&#xff1b;ARM处理器运行MontaVista Linux操作系统&#xff0c;负责设备初始化、用户图形界面管理。ARM处…

像素越多越好?像元的面积越小越好?为何底大一级压死人?

像素越多越好&#xff1f;像素点的面积越小越好&#xff1f;为何底大一级压死人&#xff1f; 像素是&#xff1a;图像最小单元的数量&#xff0c;例如6000*4000&#xff0c;像素数量就是24*10^6。 像素太少当然图像就看不见了&#xff0c;看不清晰了。 但是现在几乎所有手机和相…

设计模式(5)--工厂模式

//5.工厂模式 //ver1 //回顾简单工厂模式 class OperationFactory { public:static Operation createOperation(char chOper){Operation * op NULL;switch(chOper){case :op new OperationAdd();break;case -:op new OperationSub();break;default:break;}return *op;} };vo…

对于多属性类型系统的数据库设计

主要是以下几类系统: 生活信息系统, 内容:小, 属性:大,电商商品系统, 内容:大, 属性:大,风控征信系统, 内容:小, 属性:大,新闻系统, 内容:大, 属性:小,这些系统共同的特点, 都是在主体内容上会携带多个属性, 并且属性需要随时能调整, 并且要求能兼容旧属性, 还需要频繁的通过属…

linux环境部署常用命令

1.  查看当前所属目录&#xff1a;pwd2.  回到上级目录&#xff1a;cd ../回到上两级目录&#xff1a;cd ../ ../3.  查看当前目录下有哪些文件&#xff1a;ls4.  查看最后100行日志&#xff1a;tail -100 catalina.out动态重看操作日志&#xff1a;tail -f catalina.o…

DM6446开发攻略:V4L2视频驱动和应用分析

针对DAVINCI DM6446平台&#xff0c;网络上也有很多网友写了V4L2的驱动&#xff0c;但只是解析Montavistalinux-2.6.10 V4L2的原理、结构和函数&#xff0c;深度不够。本文决定把Montavista 的Linux-2.6.18 V4L2好好分析一下&#xff0c;顺便讲解在产品中的应用&#xff0c;满足…

相机像素尺寸(像元大小)和成像系统分辨率之间的关系

相机像素尺寸&#xff08;像元大小&#xff09;和成像系统分辨率之间的关系 在显微成像系统中&#xff0c;常常会用分辨率来评价其成像能力的好坏。这里的分辨率通常是指光学系统的极限分辨率以及成像探测器的图像分辨率。最终图像所呈现出的实际分辨率&#xff0c;取决于二者的…

H5网页播放器播不了服务器上的mp4视频文件

打开IIS&#xff0c;在功能视图里找到MIME类型菜单&#xff0c;打开该菜单后鼠标右键添加.mp4扩展名的MIME类型video/mp4 其他视频文件播放不了估计也得在IIS里添加对应的MIME类型&#xff08;从服务器下载文件时也得添加对应的MIME类型&#xff09; 转载于:https://www.cnblog…

不定宽度居中

一、传统方法 <div class"wrap"><div class"inner">html &#xff1a; 让 inner 居中</div> </div> .wrap {float: left; /* 自适应内容宽度 */position: relative;left: 50%; } .inner {position: relative;left: -50%; } 二、…

文章目录自动生成器

提供一个插件&#xff0c;可以实现segmentfault的文章目录效果啦~~ 不止点击跳转还滚动激活当前链接 demo地址 使用很简单 <!-- 文章容器 --> <div id"kCatelog"></div> <!-- 目录容器 --> <div class"k-catelog-list" id"…

基于ARM+DSP进行应用开发-经验共享

针对当前应用的复杂性&#xff0c;SOC芯片更好能能满足应用和媒体的需求&#xff0c;集成众多接口&#xff0c;用ARM做为应用处理器进行多样化的应用开发和用户界面和接口&#xff0c;利用DSP进行算法加速&#xff0c;特别是媒体的编解码算法加速&#xff0c;既能够保持算法的灵…

工业相机之全局曝光与卷帘曝光

曝光方式包括两种&#xff1a; 全局曝光&#xff08;global shutter&#xff09;卷帘曝光&#xff08;rolling shutter&#xff09; CCD相机都是全局曝光&#xff0c;CMOS相机既有全局曝光也有卷帘曝光 全局曝光 全局曝光的方式比较简单。也就是说光圈打开后&#xff0c;整个图…