Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解

合集下载

Java Web编程实战宝典(JSP+Servlet+Struts 2+Hibernate+Spri

Java Web编程实战宝典(JSP+Servlet+Struts 2+Hibernate+Spri

20.2 掌握HQL和SQL技术
20.4 实战练习
21.1 什么是事务
21.3 应用查询缓存 (Query Cache)
21.5 学习过滤器
第3篇 Hibernate篇
21 Hibernate的高级技术
21.2 学习锁(Locking) 21.4 学习拦截器和事件
21.6 小结
第3篇 Hibernate 篇
3.4 其他客户端技术
3.6 学习AJAX技术
第1篇 Web开发基础篇
3.7 小 结
3.8 实 战练习
3 Web开发必会的客户端技 术
4.1 编写Servlet的 Helloworld程序 4.3 掌握
HttpServletResponse类
4.5 处理Cookie
第1篇 Web开发基础篇
4 Java Web的核心技术——Servlet
6.7 实战练习
第2篇 Struts 2篇
02
第2篇 Struts 2篇
7 编写Struts 2第一个程序
10 Struts 2的 类型转换
8 Struts 2进 阶
11 Struts 2的 输入校验
9 Struts 2的 拦截器
12 文件的上传 和下载
第2篇 Struts 2篇
14 Struts 2的标 签库
1.12 实战练习
1.11 小结
第1篇 Web开发基础篇
1 搭建开发环境
1.8 在Eclipse IDE for Java EE Developers中配置 Tomcat
1.9 下载与安装MySQL 5数据库
1.10 下载与安装数据库 客户端软件SQLyog
2.1 Web技术的发展

Struts、Spring、Hibernate三大框架的原理和优点

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点.Struts工作原理MVC即Model—View—Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

MVC的工作原理,如下图1所示:Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。

Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展.Struts的工作原理,视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库: Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。

控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。

ActionServlet是一个通用的控制组件。

这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。

它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。

另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。

动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。

最后动作类把控制权传给后续的JSP 文件,后者生成视图。

所有这些控制逻辑利用Struts-config.xml文件来配置。

模型:模型以一个或多个java bean的形式存在。

这些bean分为三类:Action Form、Action、JavaBean or EJB.Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。

Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。

struts2+spring3+hibernate整合教程

struts2+spring3+hibernate整合教程

Struts2+Spring3+hibernate3整合(2011年7月末,最新)上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。

想了想,我没老婆,难道没什么好写了!不难…献给我暗恋过的每一个女人!(嘿嘿…)如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!一,需要的框架包二,建立project,添加相应的.jar文件(重点)1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。

2,src中创建需要的类,这里以一个域模型为user的例子说明。

(现在建立这些类,可以方便我们在搭建时候随时测试!)User.javaIUserDao.javaUserDaoImpl.javaIUserService.javaUserServiceImpl.java3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。

4,拷贝spring运行中需要的其他jar文件,主要是mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。

ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar包)iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。

5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。

搭建SSH框架(Struts1,Spring2.5,Hibernate3)

搭建SSH框架(Struts1,Spring2.5,Hibernate3)

搭建SSH框架:Struts1.* + Spring2.5 + Hibernate3.0 一,项目结构:图(1)Jsp页面省略,主要是一些添删改查的页面;二,开始搭建项目环境,步骤如下:使用平台:MyEclipse6.0/6.5框架版本:Struts1.* + Spring2.5 + Hibernate3.0;1,添加过程:1>,新建项目: 打开MyEclipse,在Package Explorer视图下,右键单击New-> Web Project;注意:在新建项目时,JDK的版本最好要选择Java EE 5.0;因为版本过低,可能有些JSP方面的功能不支持;新建玩项目之后,把该导的包导入到下面,下图为SS H 框架所需要的Jar包,注意,该项目用的是ORACLE数据库;其中,activation与mail这两个包为Java发邮件的包;classes12为Oracle数据库的驱动包,如果不是Oracle数据库,可更换该Jar包;dwe为Ajax dwr 框架中的包;2>,接着就开始用MyEclipse辅助开发Struts,Spring,Hibernate了;3>,首先MyEclipse辅助开发Struts,方法:右键单击你所建的项目,出现一级菜单,选择Myeclipse,选择Myeclipse之后会出现二级菜单,接着选择Add Struts Capabilities;;接着具体操作如下面图示:点击Finish按钮完成;完成之后,可将包删除;在上图中,如果那个勾没有去掉的话,就会自动生产如下标签:当然,如果你觉得标签对你没什么用的话,可以删除;如果该勾去掉的话,就只生成标签,这是Struts的核心标签;4>,MyEclipse辅助开发Spring,方法跟上面的一样,选择Add Spring apabilities;;接着具体操作如下面图示:然后点击Next,具体操作如下图:接着点击 Finish按钮,完成此项操作;5>,,最后MyEclipse辅助开发Hibernate,在执行和上面类似方法之前,Hibernate 需要先做另外一件事情,那就是和数据建立连接,具体操作如下图:点击上图位置的或者右边的>> ,然后再选择MyEclipse Database Explorer切换到如下图页面:,然后右键单击,新建一个Database Driver;如下图:下面这个截图是该项目的数据库链接图:如图所示,测试数据库链接成功;然后可直接点击Finish完成;接着切换到窗口,按照上面第三小步的方法,选择Add Hibernate apabilities;;接着具体操作如下面图示:点击下一步:点击下一步:点击下一步:点击下一步:点击 Finish 完成;6>,最后一步,就是运用Hibernate的映射机制,把数据库的表与JAVA的对形成一个关系映射;在此之前,首先应该在项目SRC的目录下面新建一个包,如该项目所示,用来存放映射生成的POJO对象以及映射文件;如下图:有一点说一下,你生成的*.hbm.xml文件可能不止一个,对,你可以把它们整合到一个文件中;然后新建按第五小步的方法,把窗口切换到MyEclipse Database Explorer界面,然后打开右键刚才所建立的链接,选择属于你自己的用户;然后选择Tble;右键选择如上图的属性:接下来的操作如下图:点击 Next,进入下一步:点击 Next,进入下一步:至此,项目环境己经搭建完成;三,项目搭建完成,SSH各个部分配置文件的说明,以及它们之间存在的关系:1,首先是Struts的核心配置文件,即struts-config.xml:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""/dtds/struts-config_1_2.dtd"><struts-config><data-sources /><form-beans><!—建立Form表单,在此处进行登记 -→<form-bean name="userForm"type="erForm" /> </form-beans><global-exceptions /><global-forwards /><!—各个Action对应与之相对应的表单 -→<action-mappings><!-- 用户管理 --><action parameter="opers" attribute="userForm" name="userForm"path="/doUser" scope="request"><forward name="login_ok" path="/welcome.jsp"></forward><forward name="login_no" path="/index.jsp"></forward> </action></action-mappings><controllerprocessorClass="org.springframework.web.struts.DelegatingRequestProc essor"></controller><message-resourcesparameter="ermanagerview.struts.ApplicationResources"> </message-resources><!—Spring辅助Struts管理Struts-→<plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"value="/WEB-INF/action-servlet.xml" /></plug-in></struts-config>2,其次就是Springd的applicationContext.xml文件和action-servlet.xml文件:applicationContext.xml文件:<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.5.xsd"><!-- Session 工厂 --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"value="classpath:hibernate.cfg.xml"><!-- 可以不要配置文件(hibernate.cfg.xml),直接写在这个Spring的配置文件中 --></property></bean><!-- 模板 --><bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /> </bean><!-- 事务器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManage r"><property name="sessionFactory" ref="sessionFactory" /> </bean><!-- 对外代理 --><!-- 1,用户管理 --><bean id="userDaoImp"class="erDaoImp"><property name="hibernateTemplate" ref="hibernateTemplate" /> </bean><bean id="userServiceTarget"class="erServiceImp"> <property name="userdao"><ref local="userDaoImp" /></property></bean><bean id="userService"class="org.springframework.transaction.interceptor.TransactionProxyF actoryBean"><property name="transactionManager"><ref local="transactionManager" /></property><property name="target"><ref local="userServiceTarget" /></property><property name="transactionAttributes"><props><prop key="*">PROPAGATION_REQUIRED</prop></props></property></bean></beans>action-servlet.xml文件:<!—Spring辅助Struts管理Struts-<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.0.xsd"> <bean name="/doUser"class="erAction"scope="prototype"></bean></beans>3,最后就是Hibernate的hibernate.cfg..xml文件:<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="ername">wangxiaodong</property><property name="connection.url">jdbc:oracle:thin:@192.168.0.2:1521:ALIZEEDB</property><property name="dialect">org.hibernate.dialect.Oracle9Dialect</property><propertyname="myeclipse.connection.profile">Test</property><property name="connection.password">donny</property><property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property><mappingresource="com/ygkq/usermanager/model/entity/User.hbm.xml" /></session-factory></hibernate-configuration>该文件基本上不用动,都是自动生成的代码;当然,你也可以根据自己的需要添加代码,例如,你想在执行HQL语句的时候让它显示SQL语句,可将<property name="hibernate.show_sql">true</property>插入代码中;另外在图(1)中还有两个配置文件没有提到,那就是log4j.properties 与mytag.tld;其中log4j.properties是配置日志信息的;而mytag.tld主一个自定义标签;四,SSH框架搭建完成:SSH框架基本搭建完成,如果有不对或者不妥之处,请随时指教!~E-mail:jerry8059@。

SSH2详细(框架搭建)

SSH2详细(框架搭建)

struts2相关配置
struts.xml常用配置
为简化配置文件编写,struts2提供通配符支持,如下: <action name=“*” class=“com.demo.{1}Action”
method=“show”> </action>
同时,struts2还支持*/*的配置模式,在配置文件中 <struts>节点下配置如下:
第十三页,编辑于星期三:六点 八分。
整合spring后struts配置
struts.xml配置 在<struts>标签下配置: <constant name="struts.objectFacring"></constant> <constant
name="struts.objectFactory.spring.autoWire" value="name"></constant>
name: 可选 , 表示表的名称 . 默认地 , 表名和实体名称 一致 , 只有在不一致的情况下才需要指定表名
catalog: 可选 , 表示 Catalog 名称 , 默认为 Catalog(""). schema: 可选 , 表示 Schema 名称 , 默认为 Schema(“”). @id 必须 @id 定义了映射到数据库表的主键的属性 , 一个实体只能有
<param-value> classpath*:applicationContext*.xml
</param-value>
</context-param>
<listener>

SSH2框架的搭建及与SSH1的差别介绍(可编辑)

SSH2框架的搭建及与SSH1的差别介绍(可编辑)

SSH2框架的搭建及与SSH1的差别介绍SSH2框架搭建版本:struts2.1.6 spring2.5.6hibernate3.3.1SSH2与SSH1之简要比较SSH框架的优势开发效率高适应客户的需求随机变化SSH1框架的劣势繁琐的配置文件编写struts1.X Action线程安全,仅允许一个实例去处理所有请求Forward过于繁琐对Servlet依赖过强SSH2与SSH1之简要比较SSH2优势大量简化配置文件编写。

更大程度解耦合Struts不再依赖Servlet通配符配置注解使用struts2使用struts2借鉴webwork的成功之处,兼容struts1,集合两者优点,更易于整合spring及hibernate框架。

所需jar包:struts2相关配置web.xml文件配置与struts1不同,struts2采用Filter进行配置filter-namestruts/filter-namefilter-class //.uts2.//.ter.StrutsPrepareAndExecuteFilter/filter-classfilter-mappingfilter-namestruts/filter-nameurl-pattern*.do/url-pattern/filter-ma ppingstruts2相关配置struts.xml文件配置在项目src目录下添加struts.xml配置文件。

其基本配置如下:?xml version"1.0" encoding"UTF-8" ?!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "////.package name"default" extends"struts-default"namespace""struts2相关配置struts.xml常用配置为简化配置文件编写,struts2提供通配符支持,如下:action name“*” class“com.demo.1Action”method“show”同时,struts2还支持*/*的配置模式,在配置文件中节点下配置如下:constantname"//.shesInActionNames"value"true"则以上配置可改写为:action name“*/*” class “com.demo.1Action”method“2”struts2相关配置struts.xml常用配置struts2默认访问后缀为.action,不符合访问习惯,且过于繁琐,可在标签下配置如下:constantname"//.ension"value"do"则可使用习惯的.do方式访问整合spring框架添加spring核心包及struts2-spring-plugin-2.1.6.jar。

某集团公司机构信息管理系统

某集团公司机构信息管理系统

某集团公司机构信息管理系统前言在经济高速发展的今天,当今社会已经进入信息时代,信息技术革命使社会的各个领域都发生了翻天覆地的变化,每个企业都必须紧跟时代的步伐,加强企业竞争力和提升现代化企业的管理能力,以适应整个社会的发展变化。

企业对信息需求的增长,使计算机、网络技术已经渗透到企业的日常工作中。

传统的企业内部信息交流的方式早已不能满足企业对大量信息的快速传递和处理的需求,网络办公自动化管理系统的应用满足了企业的办公网络化、办公自动化的管理需求,提高了企业内部的管理水平,进而全面提升了企业在市场竟争中的综合竞争力。

我国的办公自动化自上世纪七十年代开始发展,大致经历了三个阶段:第一个阶段的主要标志是办公过程中普遍使用现代办公设备。

如传真机、打字机、复印机等;第二个阶段的主要标志是办公过程中谱表使用电脑和打印机,通过电脑和打印机进行文字处理、表格处理、文件盘版输出和进行人事财务等信息的管理等;第三个阶段的主要标志是办公过程中网络技术的普遍使用,这一阶段在办公过程中通过使用网络,实现了文件共享、网络打印共享、网络数据库管理等工作。

1、背景---------------------------------------------------------------------------------------------------32、项目的总体介绍-----------------------------------------------------------------------------------43、项目开发环境及相关应用技术---------------------------------------------------------------44、分别描述项目的每一个功能模块的具体结构和要求----------------------------------4 4.1组织机构管理--------------------------------------------------------------------------------------------44.1.1添加机构 ---------------------------------------------------------------------------------------------------------54.1.2修改机构 ----------------------------------------------------------------------------------------------------------54.1.3查询机构 ---------------------------------------------------------------------------------------------------------64.1.4删除机构 ---------------------------------------------------------------------------------------------------------6 4.2部门管理---------------------------------------------------------------------------------------------------64.2.1新增部门 ----------------------------------------------------------------------------------------------------------74.2.2修改部门 ---------------------------------------------------------------------------------------------------------74.2.3查询部门 ----------------------------------------------------------------------------------------------------------84.2.4删除部门 ----------------------------------------------------------------------------------------------------------8 4.3用户管理---------------------------------------------------------------------------------------------------84.3.1新增用户 ---------------------------------------------------------------------------------------------------------94.3.2修改用户 ----------------------------------------------------------------------------------------------------------94.3.3查询用户 ---------------------------------------------------------------------------------------------------------94.3.4删除用户 -------------------------------------------------------------------------------------------------------104.3.5恢复用户 -------------------------------------------------------------------------------------------------------104.3.6角色分配 -------------------------------------------------------------------------------------------------------104.4角色管理 ----------------------------------------------------------------------------------------------------------104.4.1增加角色 -------------------------------------------------------------------------------------------------------114.4.2修改角色 -------------------------------------------------------------------------------------------------------114.4.3查询角色 -------------------------------------------------------------------------------------------------------114.4.4删除角色 --------------------------------------------------------------------------------------------------------11 4.5功能模块管理-------------------------------------------------------------------------------------------124.5.1增加功能模块管理 ------------------------------------------------------------------------------------------124.5.2修改功能模块管理 -------------------------------------------------------------------------------------------124.5.3删除功能模块管理 ------------------------------------------------------------------------------------------13 4.6办公用品管理-------------------------------------------------------------------------------------------134.6.1办公用品统计--------------------------------------------------------------------------------------------------144.6.2办公用品信息维护 -------------------------------------------------------------------------------------------144.6.3办公用品入库--------------------------------------------------------------------------------------------------144.6.4办公用品出库 -------------------------------------------------------------------------------------------------144.6.5办公用品申请--------------------------------------------------------------------------------------------------154.6.6申请审核 -------------------------------------------------------------------------------------------------------154.6.6.1待审核列表 ----------------------------------------------------------------------------------------------154.6.6.2已审核列表 ----------------------------------------------------------------------------------------------15 4.7公告管理-------------------------------------------------------------------------------------------------164.7.1新增公告 -------------------------------------------------------------------------------------------------------164.7.2修改公告 -------------------------------------------------------------------------------------------------------164.7.3查询公告 -------------------------------------------------------------------------------------------------------174.7.4删除公告 -------------------------------------------------------------------------------------------------------171、背景办公自动化简称OA(Office automation),它利用先进的技术,使人的各种办公业务活动逐步由各种设备、各种人、机信息系统来协助完成,达到充分利用信息,提高工作效率和工作质量,提高生产率的目的。

杭州北大青鸟课程介绍

杭州北大青鸟课程介绍

以下是杭州北大青鸟课程介绍:1,ACCP产品特色针对培养学员的自身特点,确立以全面提升学生的就业能力为最根本的目标,采用多种手段,如:常态调研与动态调研结合形式跟踪企业的需求,根据各大软件企业对人才发展的要求,量身定做该套课程体系。

该体系着重强化学员的职业素质和项目能力的训练,强调“基本功”,尤其是基础理论、客户端、框架原理的理解,全面提升学生的学习能力、思维能力,以此来加强对技能点的灵活应用。

该课程体系在加强训练职业素质上,以训练学生学习能力、主动性、团队合作、沟通表达能力及责任感与稳定性为目标,最终满足企业最迫切的需要。

在强化技能点的训练上,以加大课时量,增加e-learning学习方式,来丰富学生的学习模式,采用训练、活动、户外、在线等多种形式,对COT(职业导向训练)的每一项技能反复训练,形成习惯。

该课程体系为确保学员达到训练目标,以高效训练为手段,针对IT技能学习特点,采用边讲边练的形式、加强测试环节、及时验证学生的学习效果和提供标准化的教学脚本等多种措施,提升学生的学习效果,以保障教学效果零衰减,零差异。

该课程体系为大幅提升学生的项目能力,通过全程积累项目开发经验。

以理解企业真实典型的业务为载体,强化对业务能力的理解,注重学生的文档编写能力,从而提高项目开发的规范性,还要求学生在开发项目的过程中树立质量意识,加强项目测试、项目评审环节的训练,从而实现全真模拟项目实战环境,全面提升学生的竞争力和就业率。

设计理念()ACCP6.0在ACCP5.0基础上,采用丰富的手段掌握企业的需求,来确定岗位标准,并依此确定培养目标。

ACCP6.0技能方面的培养目标在S1阶段不仅熟练语法,更强化逻辑训练,在S2阶段不仅打好基础,更强化面向对象,而到了Y2阶段不仅仅是面向应用,更强化对框架原理的理解与运用。

在Y2阶段按技术方向的差异,采取分方向,目的既让学员在S1,S2对各个技术点有所掌握,又做到学生到Y2阶段对所学技术方向有所专注,做到广而精,全而专的和谐统一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过一个实例,详细的为大家讲解如何实现全注解式的开发。

开发环境JDK1.6.0_18Eclipse3.2.1MyEclipse5.1.0Tomcat6.0.10MySQL5.0.27Navicat Lite for MySQL 8.1.20每个人的开发环境可能会有差异,但有一点我需要说明的是,JDK的版本不得低于1.5,因为用到了很多1.5版才支持的新特性。

Tomcat和MySQL请不要低于我所用的版本,因为我没在其它的版本上进行测试。

Navicat则是MySQL数据库的图形化操作工具。

我在这里假定各位目前已经设置好了开发环境,下面就开始详细的说明。

由于要阐述的内容比较多,大象决定将它们划分成个几章节来讲,这一章就主要来说说jar包的选择。

第一部分:选择必须的jar包新建一个web项目,然后将必要的jar包COPY到lib里面。

根据本文实例demo,大象给出下图中的最少jar包配置。

我对这些jar包进行一下说明,方便大家理解。

解压Struts2.1.6的lib文件夹,从中选出上面7个jar包添加到我们的工程库中。

commons-logging、freemarker、ognl、struts2-core、xwork这5个还是struts2的核心包。

但在Struts2.1.6这个版本中,还需要加上commons-fileupload包。

如果没有,则启动就会报错,不过不需要像网上传言的那样还得加上commons-io的jar包,这些大象都亲自做过测试。

在本实例中,我将对struts2也采取注解的方式,所以用到了struts2-convention-plugin-2.1.6.jar这个插件。

因为要与spring 整合,所以struts2-spring-plugin-2.1.6.jar也必不可少。

大象在这里偷个懒,直接将spring的完整jar包加了进来,如果各位想精简类库的话,就选取它的分类jar包吧。

比如本例使用struts2作为MVC框架,所以spring的webmvc就不可能用到了。

有想改的朋友请自己动手改下。

另外有点我想说下,如果采取完整spring的jar包,还需要Spring2.5.6\lib\concurrent文件夹中的backport-util-concurrent.jar,如果不加这个,spring会报错。

但是采取spring分类jar包的形式,这个可以不用加,至于具体使用什么需要依赖这个包,大象还没去测试过,这个有待验证。

还有lib\slf4j下的日志包,目前很多都开始采用基于slf4j 接口的日志器,它的好处就是日志器是根据slf4j的接口来进行实现,可以在不改变代码的情况下更换日志器。

最后Spring的源代码中使用的是commons-logging记录日志,因此这个包不能少,不过因为struts2也用到了,所以这里就省了。

Hibernate从3.3版开始,对jar包结构做了一次大的调整,我们只需要加入lib\required文件夹下面的6个jar包。

请注意这6个jar包都是使用Hibernate所必须的。

另外再加上hibernate核心包。

这里我将slf4j-api-1.5.2.jar换成了1.5.0,这是因为slf4j是一个通用日志接口,不提供任何实现,我在demo里面使用的是log4j,而hibernate包里面没有log4j的slf4j实现。

而且如果版本不一致,会有异常,因此我就采用Spring2.5.6\lib\slf4j里面提供的配套版本。

另外我将commons-collections-3.1.jar换成了Struts2.1.6里面的3.2版。

例子中使用Hibernate JPA来完成实体对象映射,所以上面这些包都必不可少。

使用注解的方式,可以不用写繁琐的配置文件,降低了出错机率。

而且现在很多人都喜欢这种方式。

大家可以去sourceforge 下载。

下载地址:/projects/hibernate/files/本例使用DBCP连接池来管理数据源。

MySQL数据库的连接驱动。

这个包的作用是创建动态代理对象。

比如在使用AOP方式管理spring事务时,如果我们的目标对象没有实现接口,而又要使用AOP来处理事务,这时就需要用到这个jar包。

可以在Spring2.5.6\lib\cglib 里面找到。

JSTL标签库,很经典的东东,如果需要可以将它们加入lib中。

大象在这里建议大家做开发的时候,不要过多的依赖MyEclipse提供的那些功能,多用手动的方式来做。

那样方便是方便了,但不利于学习。

比如加入上面这些开发所用的类库,这样可以更清楚的了解每个jar 包的作用,增加知识的积累,方便以后调试。

Ok,关于这部分的内容到这里就说完了,那么,我们下次继续。

本文为菠萝大象原创,如要转载请注明出处。

Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(二)在上一章中详细分析了JAR包的选择,那么这次我将对例子中的一些必须的配置文件进行下说明。

虽然这些配置在网上也很容易找到,但是很多都没有讲个因为所以出来,这样根本就得不到提高。

在此,大象为各位详细分析一下这些内容。

实例中涉及的配置文件有这么几个applicationContext.xmljdbc.propertieslog4j.propertiesstruts.xmlweb.xml我准备在本章中只讲applicationContext.xml、jdbc.properties和web.xml。

log4j的配置大同小异而且也不在本文范围。

至于struts.xml我准备留到后面与Action代码一起来讲,因为用的是struts2-convention-plugin插件来实现struts2的注解,所以这两个结合起来讲要好一些。

第二部分:分析配置文件1、jdbc.properties本例采用MySQL数据库,所以我设置了一个属性文件,用来存放一些连接信息和Hibernate相关的设置。

因为我们使用的是Hibernate来与数据库进行交互,把这些东西写在单独的文件里,是方便修改,如果你想换成SQL Server或是Oracle,只需要更改driver、url以及dialect,而且还可以自由控制sql语句的显示的开关,非常方便。

至于写在这里怎么用呢?请接着看下面的applicationContext.xml说明。

2、applicationContext.xml这个文件就是spring的主配置文件了,当然,本例也只有这么一个spring的配置文件,内容不多,但做的工作还是很多的,下面我给大家详细分析一下。

我把这两部分放在一起是因为这两者是相互联系的,而且也比较好说明。

可以这样来理解,PropertyPlaceholderConfigurer这个类就是读取jdbc. properties文件,并将它们设置到这个类的属性中。

然后再将下面数据源配置中定义的这些${jdbc.driver}、${jdbc.url}字符串换成属性文件中相同名称的值。

${}这种写法,是类里面方法解析用的,网上都说这是叫占位符,我看了源代码的,其实是把它们当成字符串截取前后的特殊字符,再根据里面定义的名称找属性文件中对应的值。

所以这个类只能读取properties格式的文件,你如果还有其它需要加入的属性文件,可以在list之间加入,写在value标签里面。

根据base-package指定的路径,扫描其下所有包含注解的Bean,并自动注入。

比如@Repository,@Service这些都是注解,前者表示持久层,后者表示业务层。

这可是非常非常好的一个功能,是从Spring2.5开始加入的一个非常棒的特性。

有了它,我们将不用再去写那繁琐的<bean id="" class="" />。

本文的主旨就是全注解,就是为了告诉大家不用写配置文件(当然不是绝对不写)来怎样进行开发工作。

关于这部分的具体情况,在后面代码章节中会详细讲解。

这就是在Spring中定义Hibernate相关的配置,Spring已经集成了这部分功能。

通过class里面定义的类名称我们很容易就能理解,这是使用注解的方式映射实体以及创建HiberanteSessionFactory。

${hibernate.dialect}、${hibernate.show_sql}和上面的数据源配置获取方式一样,当applicationContext.xml定义好之后,就不用再对它进行修改,而是将修改对象变成了jdbc.properties文件。

另外在Spring2.5.6版中,加入了一个很有用的小功能,就是packagesToScan属性,它是根据value 中定义的路径来扫描其下所有的注解实体类。

大象对这个路径做了多种测试,另外又看了源代码,发现它只能匹配某一类型的路径,而不是所有路径。

比如上面的value值表示,扫描entity包下面的所有包中的注解类,如果你将类直接放在entity包下,那么服务器启动和程序运行时都不会报错,但是当你的代码需要用到这个类的时候,就会出现异常,提示你找不到实体。

这是事务定义,而且是使用注解方式定义事务(@Transactional),proxy-target-class="true"表示采用动态代理类来管理事务,如果是false表示采用接口代理来管理事务(默认值为false)。

什么意思呢?就是说对于需要加入事务处理的类,如果是实现接口,那么将采用Spring的默认事务管理(Spring默认方式为接口),如果不采用接口,而直接使用类,那么就需要cglib类库的支持,它通过动态的创建目标类(就是你需要加入事务的类)的子类,然后对这子类中的方法(当然是从目标类中继承来的)进行事务管理。

这其实就是AOP切面,而且从中可以看出来,需要加入事务的方法不能为private、static、final 的方法。

这样说也不是很严格,说它不能加入事务,是说它不能主动的启动一个事务,如果某个private方法是被某个public方法调用的,而public方法是可以被动态代理加入事务的,所以这个private方法也一样被加入了事务,只是它处在public方法的事务之中。

但是static和final这两类方法因为不能被子类覆盖,所以无法加入事务。

如果这两类型的方法不被其它的事务方法所调用,那么它们就会以无事务的方式运行,因此很容易造成隐患,这一点请大家特别注意。

相关文档
最新文档