当前位置: 首页 > 编程日记 > 正文

struts2+hibernate+Spring分层开发

web.xml中要加Spring的listener,struts2的filter的配置。
UI  struts2:      jsp   struts.xml   Action
Spring               Action Spring:applicationContent-actions.xml   Service   Spring:applicationContent-services.xml  DAO Entity 
DAL hibernate:   DAO Entity  .hbm.xml  数据库表
----------------------------------------------------------------------------------
DAL数据访问层-Hibernate
Hibernate根据数据库表,逆向工程生成实体类,*DAO类,*.hbm.xml.
数据库表---.hbm.xml---实体类
DAO类 extends BaseHibenateDAO得到session对象访问数据库表。
-------------------------------------------------------------------------------
BL业务逻辑层
自定义的一些Service类。(一般在其上加接口层,各Service类分别实现各接口)。各类有一些DAO类的私有变量、供UI层Action类调用的方法,实现时与实体数据库相关时调用DAO类私有变量的方法。Service类中不用显示的实例化DAO类变量--Spring。
-------------------------------------------------------------------------------
UI层-Struts2
Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,使得业务逻辑控制器能够与Servlet API完全脱离开.
浏览器发送一个请求。核心控制器FilterDispatcher根据请求决定调用合适的Action。
Action类:extends BaseAction extends ActionSupport, 有一些实体类/Service接口的私有变量,有set-getters,execute()方法。Action类中不用显示的实例化Service类(接口)的私有变量-Spring。
BaseAction类ActionSupport类均为struts2类库里自带,有HttpServletRequest/Response ,HttpSession ,ServletContext, PageContext .Page等类型的私有变量及get-setters。
*.jsp:
通过<%@ taglib prefix="s" uri="/struts-tags" %>引入struts2的标签库..jar.
通过<s:property value="serviceId"/>引用bean
通过<a href="...action?para='..'"/>、<form action="./..action" >、jQuery.post('./..action', params, function(){;}, 'json');请求。
struts.xml:
实现页面导航.<struts>下的<action>定义action名字与处理它的Action类,<action>下的<result>定义处理成功(等结果)后转向的jsp或action。还可设置全局的拦截器。
Struts2采用拦截器的机制来处理用户的请求,核心控制器FilterDispatcher根据请求查struts.xml调用匹配的Action。
默认执行Action类的execute()方法,return SUCCESS。
Action类里的私有变量可自动被赋值为页面请求携带的参数,页面通过<s:property value="..privateName"/>可直接调
用Action里的私有变量。?
///
Spring
spring是一个框架,他的最大特点是依赖注入DI-控制反转IoC。它相当于是struts和Hibernate的一个容器,管理着struts和Hibernate。
Spring的配置文件applicationContext.xml:
applicationContent-actions.xml:<beans>下许多<bean>:各Action类用到哪些Service类的实例  UI-BL
applicationContent-service.xml:各Service类的实例用到哪些DAO实例,各DAO实例属于的DAO类。BL-DAL
Service类中不用显示的实例化DAO类变量,Action类中不用显示的实例化Service类(接口)的私有变量,SpringIoC会把符合依赖关系的对象通过JavaBean属性(setter方法)或者构造函数传递给需要的对象。
-----------??????--------------------------------------------------------------------------------------------------------
Spring框架
为Hibernate延迟加载与DAO模式的整合提供了一种方便的解决方法。以一个Web应用为例,Spring提供了
OpenSessionInViewFilter和OpenSessionInViewInterceptor。
生成DAO类:extends HibernateDaoSupport,  initDao ,save, delete, findBy.. merge, attachDirty, attachClean, getFromApplicationContext方法.
事务处理?
1。DAO类的方法加事务处理:
public void save(Servicedecbyuser transientInstance) {
log.debug("saving Servicedecbyuser instance");
Transaction tx=null;
try {
tx=getSession().beginTransaction();
getSession().save(transientInstance);
tx.commit();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}finally{
getSession().close();
}
}
未加事务处理的原DAO,事务是未提交的:
public void save(Tags transientInstance) {
log.debug("saving Tags instance");
try {
getSession().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
2。Spring接管事务,how?

转载于:https://www.cnblogs.com/huapox/archive/2013/04/01/3251445.html

相关文章:

DataGrid鼠标事件处理

http://blog.csdn.net/bgu/完成功能是DataGrid的页面选中事件、鼠标事件、双击事件改变TR的色彩。代码很简单&#xff0c;只是一点JS操作。JS文件:GridControl.js/*------------ DataGrid鼠标事件处理 ------------功能:用于数据梆定后鼠标事件参数说明:obj:对像thisfontColor:…

《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站

本节书摘来自异步社区《精通 ASP.NET MVC 3 框架&#xff08;第三版&#xff09;》一书中的第2章&#xff0c;第1节&#xff0c;作者&#xff1a; 【美】Adam Freeman , Steven Standerson&#xff0c;译者&#xff1a; 林逸 , 李萍 &#xff0c; 更多章节内容可以访问云栖社区…

DataGrid鼠标事件方法

http://blog.csdn.net/bgu/ JS文件源码&#xff1a;GridColorControl.js/*-----------------调用说明-----------------说明&#xff1a;可用于架设页面事件。入口函数&#xff1a;OnFocusSet(....)如&#xff1a;OnFocusSet( "#000000","#FFFFFF","#…

张亚勤谈数字化3.0:由物理与生物世界的数字化构成 | WIC

11月23日至24日&#xff0c;一年一度的世界互联网大会互联网发展论坛如期召开。全球疫情冲击下&#xff0c;科技创新成为了海内外共同关注的焦点。其中&#xff0c;人工智能作为新一轮科技革命和产业变革的重要驱动力量&#xff0c;同样饱受关注。在24日上午的“人工智能&#…

print_r() 'ThinkPHP\Common\common.php 601

Fatal error: print_r() [<a hrefref.outcontrol>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers in D:\www\bjydf\ThinkPHP\Common\common.php on line 601 在thinkphp中用phpexcel导出数据错误<b>Fatal error<…

《Android传感器开发与智能设备案例实战》——导读

本节书摘来自异步社区《Android传感器开发与智能设备案例实战》一书中的目录&#xff0c;作者 朱元波&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录前 言 第1章 Android开发技术基础 第1章第1.1节智能手机操作系统介绍第1章第1.2节Android的巨大优势[…

详解基于busybox、dropbear、ngnix制作完整的嵌入式Linux系统

说明&#xff1a; 《一》&#xff1a;查看此博文&#xff0c;建议查看笔者上一篇博文(Linux启动过程)&#xff0c;因为只有在完全了解Linux系统启动流程及一些配置文件的相关性&#xff0c;在阅读此博文才能有思路&#xff0c;理解起来更容易写。 《二》&#xff1a;此…

CSDN湘苗培优,打造高素质技术人才

前言2020年长沙发出软件再出发号召&#xff0c;同时发布了《长沙市软件和信息技术服务业发展三年(2020-2022 年)行动计划》。当软件产业的生态逐渐建立&#xff0c;企业孵化培育的土壤逐渐肥沃&#xff0c;长沙软件产业焕发出前所未有的活力和生机&#xff0c;一大批软件产业项…

在ASP.NET 中实现单点登录

出自&#xff1a;【孟宪会之精彩世界】 发布日期&#xff1a;2005年1月27日 8点48分0秒 [有删改] 由于某些原因&#xff0c;在我们的应用中会遇到一个用户只能在一个地方登录的情况&#xff0c;也就是我们通常所说的单点登录。在ASP.NET中实现单点登录其实很简单&#xff0c;下…

《Unity着色器和屏幕特效》——2.2 进阶的透明效果

本节书摘来自华章计算机《Unity着色器和屏幕特效》一书中的第2章&#xff0c;第2.2节&#xff0c;作者&#xff3b;美&#xff3d;杰米迪恩&#xff08;Jamie Dean&#xff09;&#xff0c;译 周翀&#xff0c;张薇&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众…

机器模拟共情,情感AI正踏足诸多行业

作者 | 平凡来源 | CSDN作者简介&#xff1a;平凡&#xff0c;诺桑比亚大学计算机科学博士情感AI是一个跨学科领域&#xff0c;涉及计算机科学、 心理学和认知科学&#xff0c;旨在研发能够识别、解释、处理、模拟人类情感的系统。[虽然该学科最早可追溯至早期的哲学研究&#…

SQL Server 中各个系统表的作用

sysaltfiles 主数据库 保存数据库的文件syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据…

“批判”按劳取酬

“批判”按劳取酬<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Jack zhai按劳取酬的意思就是付出多少劳动&#xff0c;就获得多少报酬&#xff1b;这曾经是我认为最为合理的老板与员工之间的合约关系。然而近几年&#xff0c;…

《编译与反编译技术实战 》一2.3 编译器的设计与实现概述

本节书摘来自华章出版社《编译与反编译技术实战 》一书中的第2章&#xff0c;第2.3节&#xff0c;庞建民 主编 &#xff0c;刘晓楠 陶红伟 岳 峰 戴超 编著&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 编译器的设计与实现概述 根据不同的用…

U^2-Net跨界肖像画,完美复刻人物细节,GitHub标星2.5K+

来源 | Jack Cui头图 | CSDN下载自视觉中国今年提出的 U^2-Net 显著性检测算法&#xff0c;刷爆了 reddit 和 twitter&#xff0c;号称是 2020 年「地表最强」的静态背景分割算法&#xff0c;可以看下效果&#xff1a;你以为今天要讲分割&#xff1f;错&#xff01;U^2-Net 这两…

使用sourceInsight 提高代码编写效率

source Insight是一个强大的程序编写器和代码浏览器&#xff0c;它拥有内置的对C/C,C#和Java等程序的分析。本文总结了常用的快捷键&#xff0c;重要的宏的应用&#xff08;可以多行注释&#xff0c;自动补全&#xff0c;自动生成头文件和函数说明&#xff0c;修改说明……&…

php几个预定义变量$_SERVER['DOCUMENT_ROOT']

<?php echo documentroot:.$_SERVER[DOCUMENT_ROOT].<br>; //根目录,在apache的配置文件里定义&#xff1a;httpd.conf 比如&#xff1a;DocumentRoot "D:/work/php_root" echo httphost:.$_SERVER[HTTP_HOST].<br>; //域名&#xff0c;比如&#…

《用于物联网的Arduino项目开发:实用案例解析》—— 3.4 小结

本节书摘来自华章出版社《用于物联网的Arduino项目开发&#xff1a;实用案例解析》一 书中的第3章&#xff0c;第3.4节&#xff0c;作者&#xff3b;美&#xff3d;安德尔杰韦德&#xff08;Adeel Javed&#xff09;&#xff0c;更多章节内容可以访问云栖社区“华章计算机”公众…

HttpClient学习

HttpClient学习 &#xff08;1&#xff09;下面列举几个主要的Http相关概念的类 类名描述HttpClient建立请求客户端HttpGet代表请求方法&#xff0c;类似的还有HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace, HttpOptions等HttpResponse表示请求的响应&#xff08;包括…

赠书 | 新手指南——如何通过HuggingFace Transformer整合表格数据

作者 | Ken Gu翻译| 火火酱~&#xff0c;责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国*文末有赠书福利不可否认&#xff0c;Transformer-based模型彻底改变了处理非结构化文本数据的游戏规则。截至2020年9月&#xff0c;在通用语言理解评估&#xff08;General …

在HTML网页中巧用URL

http://www.cnbruce.com/blog/showlog.asp?cat_id5&log_id657 首先&#xff0c;先放出一个地址给大家测试http://cnbruce.com/test/htmlpro/?namecnbruce&emailcnbruce126.com 1&#xff0c;时下流行的&#xff08;可能是吧&#xff0c;因为最近问的人比较多&#xf…

《iOS 8应用开发入门经典(第6版)》——第1章,第1.6节小结

本节书摘来自异步社区《iOS 8应用开发入门经典&#xff08;第6版&#xff09;》一书中的第1章&#xff0c;第1.6节小结&#xff0c;作者 【美】John Ray&#xff08;约翰 雷&#xff09;&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 1.6 小结iOS 8应用开发…

用Visual C#创建Windows服务程序

一&#xff0e;Windows服务介绍&#xff1a; Windows服务以前被称作NT服务&#xff0c;是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前&#xff0c;编写Windows 服务程序需要程序员很强的C或C功底。然而现在在Visual Studio.Net下&a…

poj 3321 Apple Tree

树状数组 题意&#xff1a;一个树&#xff0c;以树枝连接两个点的形式给出&#xff0c;固定以1为整棵树的根。苹果长在树的节点上&#xff0c;节点上只可能0或1个苹果&#xff0c;一开始每个节点都有1个苹果 有两种操作&#xff0c;C表示更改某个节点的苹果数&#xff0c;0变1,…

人工智能在网络贷款中鲜为人知的事

作者 | Laksh Mohan翻译| 火火酱~&#xff0c;责编 | 晋兆雨出品 | AI科技大本营头图 | 付费下载于视觉中国现在&#xff0c;科技已经成为推动企业发展壮大的基本要素之一。人工智能&#xff08;AI&#xff09;就是一个证明此类技术在商业领域走红的好例子&#xff0c;比如网络…

《HTML5与CSS3实战指南》——2.5 构建The HTML5 Herald

本节书摘来自异步社区《HTML5与CSS3实战指南》一书中的第2章&#xff0c;第2.5节,作者&#xff1a; 【美】Estelle Weyl , Louis Lazaris , Alexis Goldstein 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 构建The HTML5 Herald 我们已经介绍了页面结构的基础以及…

用.NET创建Windows服务

用.NET创建Windows服务 译者说明&#xff1a;我是通过翻译来学习C&#xff03;的&#xff0c;文中涉及到的有Visual Studio.NET有关操作&#xff0c;我都根据中文版的VS.NET显示信息来处理的&#xff0c;可以让大家不致有误解。作者&#xff1a;Mark Strawmyer 我们将研究如何…

BGP local-preference MED属性实验

实验拓扑 实验配置 建立两个AS 65001、65000 AS65000内跑OSPF&#xff0c;并在R1上发布三个网段100.1.1.1 100.1.2.1 100.1.3.1 在R3 R5上聚合后发布给R4。 每台路由器都有一个对应的loopback地址。 实验过程 <R1>dis bgp ro Total Number of Routes: 10 BGP Local route…

加速产业生态算力升级,华为鲲鹏展翅福州

11月20日&#xff0c;为了让更多开发者了解鲲鹏计算生态体系&#xff0c;并且助力行业人才培养&#xff0c;由福建鲲鹏生态创新中心、福州市大数据基地开发有限责任公司联合举办的鲲鹏开发者训练营圆满完成。此次活动现场吸引到了大量的开发者参与&#xff0c;产、学、研各界人…

《CCNP TSHOOT 300-135认证考试指南》——2.2节故障检测与排除及网络维护工具箱

本节书摘来自异步社区《CCNP TSHOOT 300-135认证考试指南》一书中的第2章&#xff0c;第2.2节故障检测与排除及网络维护工具箱&#xff0c;作者 【加】Raymond Lacoste , 【美】Kevin Wallace&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看 2.2 故障检测与排…