Strutsibatisspring项目整合档示例

合集下载

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发

基于STRUTS2.0+SPRING+IBATIS技术的WEB开发摘要:随着b/s多层应用已成为web开发的主流,本文首先介绍了struts2.0、spring、ibatis这三种框架,随后介绍了如何使用这三种框架组合来实现web开发。

关键词:b/s struts2.0 spring ibatis随着中国软件的发展,不同于c/s软件,用户不需要在每台电脑上安装客户端软件,b/s软件只需要在联网电脑的浏览器中输入网址就可以访问远程的信息,因此b/s软件越来越受到用户的欢迎。

b/s 软件的开发有很多种方式,有不同的语言,本文主要介绍在struts2.0、spring、ibatis三种框架组合的基础上实现高校宿舍智能化、信息化管理的研究与实现。

1、struts2.0struts2的体系使用了webwork的设计核心,并大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与servlet api分离。

从数据流图上来看,struts2与webwork相差不大,struts2同样使用拦截器作为处理,以用户的业务逻辑控制器为目标,创建一个控制器代理。

控制器代理负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值将决定了struts 2将怎样的视图资源呈现给用户。

2、springspring是目前java ee 领域中比较流行的一个开源框架,它的目的是为了解决企业应用程序开发的复杂性。

spring框架的分层架构允许在不同的层次上选择各种组件,所以spring可以和hibernate、struts以及jsf等框架结合起来。

spring框架是一个分层架构,由7个定义良好的模块组成。

spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。

组成spring框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。

3、ibatisibatis是以sql为中心的持久化层框架。

Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例

Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例

前言:这个例子的view层用到了struts,DAO层用到了hibernate,由于逻辑及其简单(只是往数据库添加一条记录),所以暂时没有用到spring。

一、使用eclipse+struts+spring+hibernate+myeclipse+mysql开发配置过程。

1.jdk的安装:安装文件:jdk-1_5_0_15-windows-i586-p.exe说明:最好用jdk1.5,可以去sun主页下载,我这里已经下了,可以提供。

注意:最好在新装系统下安装,并且此前没有装过java相关的软件,以免出现版本或者path问题。

过程:可以直接安装到c盘根目录下即可,注意要记住安装路径,以后可能会用到。

2.web应用服务器tomcat的安装:安装文件:apache-tomcat-5.5.26.exe说明:要想构建jsp应用,web应用服务器是必须要有的,asp服务器为IIS,php服务器为Apache,jsp服务器比较多有weblogic和websphere(两者是商业级的,比较强大,但要收费),tomcat和resin(免费的,比较适用中小级应用,如果是大型应用则须考虑集群)。

在这里,我选用tomcat,因为它使用较广泛,网上相关的资料也比较多。

我并没有选择最新版本,原因是次新版本往往比最新版本更加稳定。

注意:必须先装jdk,否则不能安装tomcat(原因之一是tomcat在对jsp进行编译时用到了jdk,并且jdk是tomcat正常工作的前提)。

过程:可以直接安装到c盘默认路径,选择前面安装的jdk路径,并且修改端口8080为80(tomcat默认端口为8080,而一般我们通过IE访问时端口为80,需要注意的是要保证没有其他程序已经占用80端口(比如你已经装了iis或者apache),否则tomcat不能正常启动),控制台页面的管理员admin帐号暂时不设置密码。

测试页面http://127.0.0.1,检测是否安装成功,如果进入欢迎页面就表示tomcat安装成功。

Struts2、spring2、hibernate_的整合

Struts2、spring2、hibernate_的整合

一.struts 2 与spring2struts2 本身就采用了类似于spring的IOC容器机制,可以利用struts2官方提供的插件struts2-spring-plugin-2.0.11.1.jar,直接与spring进行整合,配置文件中只需要设置struts.objectFactory=spring这样,就将struts2的对象管理交给了spring2的IOC容器。

在struts.xml中配置的action<package name="maintaince" extends="struts-default"><action name="serverInfoList" class="serverInfoService" method="getAllServersInfo"><result name="list">/jsp/server_info/server_info_list.jsp</result></action>在spring的配置文件中配置的bean<bean id="serverInfoService" class="com.wod.service.impl.ServerInfoServiceImpl"><property name="serverInfoDao" ref="serverInfoDao"/><property name="sib" ref="serverInfoBean"/></bean>可以看出,struts2可以直接只用在spring2中配置的bean,引用过来作为action。

Struts-Hibernate-Spring的整合配置

Struts-Hibernate-Spring的整合配置

Struts-Hibernate-Spring的整合1. Struts2的配置(struts2.1.6 其他版本不同):A:加入包:B:在web.xml中加入Struts的监听:<!-- Struts2过滤器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-clas s></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>C:在src目录下加入:struts.xml文件;2. Spring的配置;A:加入包:还要:struts2-spring-plugin.jar;具体aspectjrt.jar和aspectjweaver.jar可以到:B:在web.xml中加入Spring的监听:<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>更多具体配置:/2.x/docs/spring-plugin.htmlC:在WEB-INF/添加:applicationContext.xml文件:(介绍两个相关工具:1. Ant :下载地址A:下载完后,解压.B:配置环境变量:和配置java环境大体相同ANT_HOME:具体路径path=%ANT_HOME%/libC:测试是否成功!2. Xdoclet:xdoclet-plugins-1.0.3.rarA:下载完后解压;3. 应用这两个工具;A:在项目中建立一build.xml内容:<?xml version="1.0" encoding="GBK"?><project name="OA系统构建脚本" default="生成Hibernate配置文件" basedir="."><property name="src.dir" value="${basedir}/src" /><property name="xdoclet.home" value="E:/xdoclet[i1]-1.2.3" /><!-- build classpath 加载xdoclet所需的所有jar包 --><path id="xdoclet.task.classpath"><fileset dir="${xdoclet.home}/lib"><include name="**/*.jar" /></fileset></path><!—制定一个任务 ---><taskdef name="xdoclet" classname="org.xdoclet.ant.XDocletTask"classpathref="xdoclet.task.classpath" /><target name="生成Hibernate配置文件"><xdoclet><fileset dir="${src.dir}/com/oa/model"[i2]><include name="**/*.java" /></fileset><componentclassname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"destdir="${src.dir}" version="3.0" hbm2ddlauto="update"jdbcurl="jdbc:mysql://localhost:3306/oa" jdbcdriver="com.mysql.jdbc.Driver"jdbcusername="root" jdbcpassword="liaogaohua"dialect="org.hibernate.dialect.MySQLDialect" showsql="true" />[i3]</xdoclet></target><target name="生成Hibernate映射文件"><xdoclet><fileset dir="${src.dir}/com/oa/model"><include name="**/*.java" /></fileset><componentclassname="org.xdoclet.plugin.hibernate.HibernateMappingPlugin" version="3.0"destdir="${src.dir}" /></xdoclet></target>[i4]</project>B:在项目中使用ant工具,生成文件,刷新;4. 加入Hibernate支持;A:导入所需的包.B:配置web.xml在原有基础;1. <!-- 配置Spring的配置文件的路径--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext-*.xml[i5]</param-value></context-param>2. <!-- 用于自动管理Hibernate中的session的关/闭,不用人为去管理--><filter><filter-name>hibernateFilter</filter-name><filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class></filter><filter-mapping><filter-name>hibernateFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>3. <!-- 字符编码过滤--><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>C:在applicationContext-commons.xml中配置;<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.5.xsd /schema/aop/schema/aop/spring-aop-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!-- 配置SessionFactory --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property></bean>[i6]<!-- 配置事物管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"><ref bean="sessionFactory"/></property></bean>[i7]<!-- 配置事物的传播性 --><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes><tx:method name="add*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="modify*" propagation="REQUIRED" /><tx:method name="*" read-only="true" /></tx:attributes></tx:advice>[i8] <!-- 那些类的哪些方法参与事物 --><aop:config><aop:pointcut id="allManagerMethod" expression="execution(*org.test.*.*(..))[i9]" /><aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice" /> </aop:config></beans>5. 测试,能够把表建立,则Hibernat---Spring成功!能够访问action,则Spring---Struts成功![i1]Xdoclet路径[i2]所要生产*.hbm.xml文件的java文件[i3]hibernate.nbm.xml文件的生成信息[i4]把生成的*.hbm.xml文件添加到hibernate.nhm.xml[i5]Spring的配置文件在src目录下.并且为多个时.若为一个且在WEB-INF下时则:/WEB-INF/applicationContext-*.xml;[i6]用于取得session对象;[i7]创建session对象实例化;用于管理session对象的开关,不用人为去控制;[i8]对象session的可执行的方法;[i9]Dao,DaoImpl类5:测试,经测试成功!。

struts+spring+ibatis框架集成

struts+spring+ibatis框架集成

Spring2.5、Struts2、Ibatis开发框架搭建(一)一、框架下载1.1 Struts2框架Struts2框架发展于WebWork,现在捐献给了Apache开源组织,最新版本的Struts2框架可以从位于Apache官方网站的Struts2项目中获取,Struts2框架的项目主页地址为:/ ,下载页面地址为: /download.cgi,打开下载地址以后自己选择最新发布的版本即可,新手的话下载Full Distribution的版本,例如/download.cgi#struts2014中的struts-2.0.14-full.zip。

为了让struts2能够支持json格式的返回数据,还需要下载json插件,下载地址为/p/jsonplugin/,下载文件为jsonplugin-0.31.jar 文件。

1.2 Spring2.5 框架Spring框架的官方网站地址:/,下载页面为:/download ,打开下载页面以后选择Get the latest Spring releases here中的发行包去下载使用,注意Spring官方网站中包含的框架有很多,包括流程处理、安全、Web服务等很多种框架,我们需要下载的框架是Spring FrameWork 的某个版本,不是其它的那些框架。

1.3 Ibatis框架iBATIS框架的主页是/,在打开的网站界面中选择选择左边的Get software中的for java连接,在打开的界面中选择下载连接。

1.4 其它(数据库缓冲池框架等)如果需要使用Ms Sql Server数据库的话,还需要在项目中加入jtds的JDBC驱动程序,下载地址/,找到download连接,按提示信息下载即可。

下载DBCP数据库缓冲池框架,下载地址为/dbcp/,下载最新版本即可,因为DBCP框架是apache开源软件组织的众多框架中的一部分,要让DBCP工作的话,还需要common-pool框架,自行到apache官方网站下载。

Struts+Spring+Ibatis整合框架搭建配置文档

Struts+Spring+Ibatis整合框架搭建配置文档

Struts + Spring +ibatis 整合开发步骤:框架配置-ActionContextCleanUp<!—过滤器,struts2用于销毁某些不再使用的对象等!--》<filter><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></filter><!-- 要保证在struts2核心过滤器映射之前配置这一项--> <filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>/*</url-pattern></filter-mapping>框架配置-FilterDispatcher<!-- 配置Struts 2框架的核心Filter --><filter><!-- 配置Struts 2核心Filter的名字--><filter-name>struts</filter-name><!-- 配置Struts 2核心Filter的实现类--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><!-- 配置Filter拦截的URL --> <filter-mapping><!-- 配置Struts 2的核心FilterDispatcher拦截所有用户请求--> <filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 向监听器类中传递初始化参数,以获取beanFactory对象--> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 使用监听器初始化Spring的beanFactory,并将其放入到Context中,在使用时将其取出,以获取IOC容器中的bean --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>框架配置-Ibatis<!--===IBATIS属性配置===--><bean id="SqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="classpath:sqlMapConfig.xml"/> <property name="dataSource" ref="DataSource"/></bean>一.添加Spring 、Struts框架对web.xml文件的修改1.添加Spring框架2.在web.xml中引入Spring配置文件(注意:applicationContext.xml文件的路径)<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/conf/applicationContext.xml</param-value></context-param><servlet><servlet-name>context</servlet-name><servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class><load-on-startup>1</load-on-startup></servlet>3.添加Struts框架4.在web.xml中引入Spring配置文件(注意:struts-config.xml文件的路径)<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/conf/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>5.web.xml自动添加的*.jsp文件起始路径(注意:jsp文件的访问路径)<welcome-file-list><welcome-file>/WEB-INF/jsp/emp.jsp</welcome-file></welcome-file-list>二、对Spring配置文件applicationContext.xml文件的修改1.配置JDBC数据源驱动文件jdbc.properties(服务器、端口、账户、密码因具体情况而定)MySql:jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/testername=rootjdbc.password=adminOracle:jdbc.driver=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orclername=scottjdbc.password=tigerMS Sql Server:jdbc.driver=com.microsoft.jdbc.sqlserver.SQLServerDriverjdbc.url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mssqlername=sajdbc.password=sa2.将JDBC驱动源文件部署到ApplicationContext.xml配置文件中<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"><list><value>/WEB-INF/conf/jdbc.properties</value></list></property></bean>3.将Data Source配置到ApplicationContext文件中<bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"><value>${jdbc.driver}</value></property><property name="url"><value>${jdbc.url}</value></property><property name="username"><value>${ername}</value></property><property name="password"><value>${jdbc.password}</value></property><property name="minIdle"><value>1</value></property><property name="maxActive"><value>25</value></property><property name="maxIdle"><value>5</value></property></bean>4.在Spring配置中注入3中的datasource数据源<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"><ref local="dataSource"/></property></bean>5.引入具体的sql语句配置文件(注意:sqlMapConfig.xml文件的路径)<bean id="sqlMapClient"c lass="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation"><value>/WEB-INF/conf/sqlMapConfig.xml</value></property><property name="dataSource"><ref local="dataSource"/></property></bean>6.注入操作数据库的dao(empDao是举例)<bean id="empDao" class="com.web.ssi.emp.dao.EmpDaoImpl"><property name="sqlMapClient"><ref local="sqlMapClient"/></property></bean>三.对Struts配置文件struts-config.xml文件的修改1.填写form-bean<form-beans><form-bean name="empForm" type="com.web.ssi.emp.form.EmpForm"/></form-beans>2.填写action-mapping<action-mappings><actionname="empForm"path="/queryEmp"type="org.springframework.web.struts.DelegatingActionProxy"scope="request" ><forward name="queryEmp" path="/jsp/emp.jsp"/></action></action-mappings>3.填写message-resource 和plug-in(注意:action-servlet.xml文件路径)<message-resources parameter="com.web.ssi.ApplicationResources"/><plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-propertyproperty="contextConfigLocation"value="/conf/applicationContext.xml" /> </plug-in>4.Spring与Struts相对用的配置applicationContext.xml<beans><bean name="/queryEmp" class="com.web.ssi.emp.action.EmpAction" singleton="false"> <property name="empService"><ref bean="empService" /></property></bean></beans>附一:配置文件示意图如下附二:包结构建这么一个工程是我做毕业设计的前奏,我打算用myeclipse把毕业设计做一下。

Struts+Hibernate+Spring整合

Struts+Hibernate+Spring整合<1>在eclipes中,新建一个Web项目:<2>添加Spring支持,也就是导入Spring1.2的所有jar包步骤:工程右键--->选择MyEclipes--->Add Spring Capabilities--->进行添加Spring支持选择Spring1,导入Spring1.2所有jar包,把导入的jar包放在/WebRoot/WEB-INF/lib目录下,之后点击下一步,在此我们不改变Spring核心配置文件名称,依然叫applicationContext.xml 之后我们点击Finish完成,此时添加Spring支持完成<3>此时添加Spring支持完成,接下来在工程中创建两个包,名称分别为:(1)org.totti.hibernate:用于存放HibernateSessionFactory类的,利用HibernateSessionFactory可以获取到Sessin对象以及对Sesson进行管理,从而可以通过Session对数据持久化进行操作(2)org.totti.bean:1.此包中用于存放Hibernate通过表产生的映射文件*.hbm.xml2.存放与表产生映射关系的POJO类3.存放Hibernate中DAO框架的实现类,此类中封装着许多写好的对数据操作的方法在此我们配置数据库连接:<4>添加Hibernate支持,,进行对Hibernate和Spring的整合步骤:工程右键--->选择MyEclipes--->Add Hibernate Capabilities--->进行添加Hibernate 支持<5>★在添加Hibernate支持时,我们要导入Hibernate3.1的所有jar包,以及Hibernate3.1的DAO框架,还有与Spring整合的Spring1.2jar,把jar包放在/WebRoot/WEB-INF/lib目录下之后我们点击下一步(Next)<6>★在这一步中我们要注意了,在此我们要选择生成Hibernate中主配置文件的方式,在这里我们选择利用Spring配置文件生成Hibernate的主配置文件(hibernate.cfg.xml)之后我们点击下一步(Next)<7>★在这里我们选择已有的Spring配置文件(也就是一开始我们添加的Spring支持),我们根据他生成Hibernate支持,这样就对Spring和Hibernate进行了整合,在次我们要为我们创建的SessionFactory起一个名字,在这里我们叫做:sessionfactory,此sessionfactory的生成,会在Spring主配置文件中配置,利用IoC依赖注入进行创建之后我们点击下一步(Next)<8>★在这里我们主要是配置数据源,也就是数据库连接,首先要为Bean Id起一个名字,我们叫做datasource,之后我们选择我们之前配置好的数据库连接之后我们点击下一步(Next)<9>在这里我们选择创建SessionFactory类,且把它放在org.totti.hibernate包下,此类主要是用于管理session的创建销毁以及事务处理的<10>★之后我们点击Finish完成,此时会弹出一个提示框,问你是否加载新的jar包,在此我们点击Keep Existing(保持原有),这是因为在Hibernate中包括的一些jar包,Spring 中也存在,在这里我们就不需要再次导入新了jar包了,因此选择Keep Existing<11>此时我们打开Spring的配置文件--applicationContext.xml文件,在其中已经加入了Hibernate的配置,例如:SessionFactory的创建,数据库连接的创建此时Spring和Hibernate整合完毕<12>对数据库中的表进行映射--->产生映射文件*.hbm.xml、产生映射的POJO类以及对应表映射之后的DAO框架在此我们要切换视图,切换到:MyEclipse Database Explorer在这里我们要选择:1.我们映射的工程以及映射类放在那个目录下2.创建*.hbm.xml文件,以及对Hibernate配置文件进行修改(把映射后信息进行添加)3.之后我们产生表的映射类(他是一个POJO类),在此我们不生成他的抽象类4.我们选择添加DAO框架,利用Spring DAO实现,在此Spring配置文件中回为我们配置Hibernate中DAO框架的信息(DAO框架只在Hibernate3之后才存在)之后我们点击下一步(Next)在这里我们要选择数据库表的主键的生成形式,在这里为子增长类型在添加完主键生成形式之后,我们点击下一步(Next)在此我们不需要做任何选择,因为此时我们只有一张表,并没有主外键关系以及一对多或一多一等映射关系(单向关联,双向关联),所以我们直接点击完成(Finish)此时数据库中表的映射就完成了,生成了对应表的的映射文件,映射类以及DAO框架此时我们Hibernate对数据库表的映射完成了<13>之后我们添加Struts支持步骤:工程右键--->选择MyEclipes--->Add Struts Capabilities--->进行添加Struts支持在这里我们选择Struts1.2,且把配置文件以及对应资源文件放入org.totti.struts包下此时添加Struts支持完成(所需要的Struts Jar包全部导入程序中)<14>之后在Struts配置文件(struts-config.xml)建立"三合一"所谓"三合一"就是创建jsp页面以及对应的action和actionform<15>在建立"三合一"之后,我们此时做一个添加用户的操作,因此我们要建立一个Jsp页面,,页面上含有两个struts控件分别是:userName和userPassword,我们生成此JSP 页面之后点击下一步(Next)在此页面中我们不许要修改任何东西,直接点击完成即可(Finish)此时"三合一"配置完成<16>之后我们再创建两个JSP页面,分别为success.jsp(成功页面)和error.jsp(失败页面)我们在addUser对应action中进行业务处理,添加用户成功,则根据success跳转到success.jsp页面,如果用户添加失败,则根据原error跳转到error.jsp页面<17>我们打开添加用户的addUsers(action),进行业务逻辑的处理//执行添加用户操作,根据DAO框架实例化对象调用其save方法实现usersDAO.save(users);returnStr="success";}catch(Exception e){e.printStackTrace();}//根据操作结果进行跳转页面return mapping.findForward(returnStr);}}如图所示,这就是我们在action中进行的业务处理<18>接下来我们修改struts-config.xml文件(Struts配置文件)此时进行Struts和Spring的整合★我们把type中对应的action所在的包.类名复制到Spring配置文件中,1.此时我们要在Spring配置文件中创建一个<bean>标签,把Struts中<action标记的>type中的值复制到Spring中<bean标记中>class中,2.之后把Spring中<bean标记>所对应的name属性中的值为Struts配置文件中<action标记>中path属性中的值3.在Spring中创建的<bean>标记中添加属性,其中属性名称为之前action类中我们设置的属性UsersDAO,而我们注入这个属性的值是通过引用DAO框架在配置文件中创建的值<!--创建Hibernate中DAO框架的实例化对向--><bean id="UsersDAO"class="ersDAO"> <property name="sessionFactory"><ref bean="sessionfactory"/></property></bean><!--创建对应actin对象,其中name中的值为用户请求Strust配置文件中path所对应的值其中属性为usersDAO,此属性在action类中有,他是通过引用之前创建的DAO框架对象之后通过setter注入到action属性中取得--><bean name="/addUser"class="org.totti.struts.action.AddUserAction"> <property name="usersDAO"><ref bean="UsersDAO"/></property></bean><19>★之后把Struts配置文件type中的值改为:org.springframework.web.struts.DelegatingActionProxy(固定值)<forward name="success"path="/success.jsp"/><forward name="error"path="/error.jsp"/></action></action-mappings><message-resourcesparameter="org.totti.struts.ApplicationResources"/><!--配置plug-in插件,使得在服务器加载时就进行了对Spring配置文件的解析,把所有类创建好了以及注入--><!--其中className为固定值表示在初始化时加载这个插件property也为固定值,标识在上下文初始化时对此文件进行加载value表示Spring配置文件所在路径,对其进行加载解析--><plug-inclassName="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation"value="/WEB-INF/applicationContext.xml"/> </plug-in></struts-config><21>★最后我们把Spring的配置文件放入/WebRoot/WEB-INF目录下即可之前忘记操作数据库连接的操作了,在此不上<22>此时Struts与Spring整合完成也就意味着我们Struts+Hibernate+Spring整合完成在这里我们说一下SSH整合后程序执行的过程:<1>在服务器启动之后,Spring配置文件(applicationContext.xml)已经被加载解析到容器之后了,也就是我此时所有IoC注入已经完成,Spring配置文件能在服务器启动时就进行初始化是因为我们在Sturts配置文件中设置了Plug-in插件,此插件可以使Spring配置文件在服务器启动初始化<2>当用户发送请求,例如添加用户操作,此时由于表单提交过来的请求名称为*.do此时回被ActionServlet(Struts核心控制器接管),他会到struts-config.xml (Struts主配置文件)配置文件中去查找对应用户请求的path,找到之后也就找到了对应的action标记,之后根据action标记中的attribute属性去执行formbean(struts标记)的填充之后调用type中指定的action,但是此时由于我们已经交给Spring进行代理执行了,此时调用type中指定包.类名的话,回查找到Spring配置文件<3>在后在Spring配置文件中执行,此时我们并不知道要执行那一个<bean>标记中,以及执行那个action,这是就要通过bean标记中name属性进行指定,name属性中的值和Struts中action标记中path属性中的值是相同的,这也就意味着用户发送请求会根据请求路径在Spring中找到对应<bean>标记,之后找到对应要执行的action,且在此<bean>标记中要进行属性的setter注入<4>在根据Spring找到action类之后,对action类进行操作(控制层),在此进行数据封装之后,会去调用相应模型层进行业务逻辑操作,在业务逻辑操作的过程中我们会进行Hibernate 持久化操作,进行持久层操作,持久层操作完之后返回给模型层,之后返回给控制层,控制层根据返回的结果进行相应的页面跳转,返回给用户。

struts2+ibatis+spring整合开发

Struts2+ibatis+spring整合开发1.工程结构图2.配置文件web.xml<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext.xml</param-value> </context-param><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>如图:Struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.objectFactory.spring.autoWire" value="type" /><constant name="struts.objectFactory" value="spring" /><include file="struts-default.xml"/><package name="struts2" extends="struts-default"><default-interceptor-ref name="paramsPrepareParamsStack" /> <!-- aciton的class为applicationContext.xml中的注册名 --><action name="login" class="LoginAction"><result name="success">/success.jsp</result><result name="input">/login.jsp</result></action><action name="save" class="LoginAction" method="save"><result name="success"type="redirect-action">show.action</result><result name="error">/error.jsp</result></action><action name="edit" class="LoginAction" method="edit"><result name="success">update.jsp</result></action><action name="update" class="LoginAction" method="update"> <result name="success"type="redirect-action">show.action</result><result name="error">/error.jsp</result></action><action name="delete" class="LoginAction" method="delete"> <result name="success"type="redirect-action">show.action</result><result name="error">/error.jsp</result></action><action name="show" class="LoginAction" method="findAllUser"> <result name="success">/list.jsp</result><result name="error">/error.jsp</result></action></package></struts>如图:Struts.properties#struts.url.http.port=8080struts.devMode=truestruts.configuration.xml.reload=truestruts.locale=zh_CNstruts.i18n.encoding=UTF-8struts.objectFactory=spring如图:sql-map-config.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfigPUBLIC "-////DTD SQL Map Config 2.0//EN""/dtd/sql-map-config-2.dtd"><sqlMapConfig><sqlMap resource="cn/hsw/model/user.xml"/></sqlMapConfig>如图:applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans default-autowire="byType"xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://127.0.0.1:3306/debug" /><property name="username" value="root" /><property name="password" value="123456" /></bean><bean id="client"class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="dataSource"><ref local="dataSource"/></property><property name="configLocation"><value>classpath:sql-map-config.xml</value></property></bean><!-- bean中的class为实现接口的类;property的name为类中引用的属性名称;ref 为spring注册的名称,如上面的client--><bean id="userDao"class="erDAO"><property name="client" ref="client" /></bean><bean id="userService"class="erService"><property name="userDAO" ref="userDao"></property> </bean><bean id="LoginAction" class="cn.hsw.action.Login"><property name="userService" ref="userService"></property> </bean></beans>如图:3.Login.javapackage cn.hsw.action;import java.util.List;import er;import cn.hsw.service.IUserService;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.opensymphony.xwork2.Preparable;public class Login extends ActionSupport implements ModelDriven<User>,Preparable {private IUserService userService=null;private String id;private int pageIndex=1;private String pageBar;private List<User> list;private User user;public void prepare()throws Exception{if(id==null||id.length()==0){user=new User();}else{user=getUserService().getUserById(Integer.parseInt(id));}}public String execute()throws Exception{if(getUserService().isLogin(user)){return SUCCESS;}return INPUT;}public String save()throws Exception{if(getUserService().insertUser(user)){return SUCCESS;}return ERROR;}public String edit(){return SUCCESS;}public String update()throws Exception{if(getUserService().updateUser(user)){return SUCCESS;}return ERROR;}public String delete()throws Exception{if(getUserService().deleteUser(Integer.parseInt(id))){return SUCCESS;}return ERROR;}public String findAllUser()throws Exception{try {list=getUserService().getAllUser();} catch (Exception e) {}return SUCCESS;}public String getId() {return id;}public void setId(String id) {this.id = id;}public int getPageIndex() {return pageIndex;}public void setPageIndex(int pageIndex) { this.pageIndex = pageIndex;}public String getPageBar() {return pageBar;}public void setPageBar(String pageBar) { this.pageBar = pageBar;}public List<User> getList() {return list;}public void setList(List<User> list) {this.list = list;}public User getUser() {return user;}public void setUser(User user) {er = user;}public void setUserService(IUserService userService) { erService = userService;}public IUserService getUserService() {return userService;}public User getModel() {// TODO Auto-generated method stubreturn user;}}如图:IUserDAO.javapackage cn.hsw.dao;import java.util.List;import er; public interface IUserDAO {public List<User> getAllUser();public User getUserById(Integer id);public boolean isLogin(User user);public boolean insertUser(User user);public boolean updateUser(User user);public boolean deleteUser(Integer id);}如图:UserDAO.javapackage cn.hsw.dao;import java.util.List;import org.springframework.orm.ibatis.SqlMapClientTemplate;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import er;import com.ibatis.sqlmap.client.SqlMapClient;public class UserDAO implements IUserDAO {private SqlMapClient client = null;public boolean deleteUser(Integer id) {try {client.delete("deleteUser", id);return true;} catch (Exception e) {return false;}}public List<User> getAllUser() {List<User> list=null;try{list=client.queryForList("getAllUser");}catch(Exception e){e.getStackTrace();}return list;}public User getUserById(Integer id) {User user=null;try {user=(User) client.queryForObject("getUserById",id);return user;} catch (Exception e) {e.getStackTrace();}return user;}public boolean insertUser(User user) {try{client.insert("insertUser",user);return true;}catch(Exception e){return false;}}public boolean isLogin(User user) {try {User u=(User) client.queryForObject("checkUser",user);if(u!=null){return true;}} catch (Exception e) {e.getStackTrace();}return false;}public boolean updateUser(User user) {try {client.update("updateUser",user);return true;} catch (Exception e) {return false;}}public void setClient(SqlMapClient client) { this.client = client;}}如图:User.javapackage cn.hsw.model;public class User {private int id;private String username;private String password;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) { ername = username;}public String getPassword() {return password;}public void setPassword(String password) { this.password = password;}}如图:user.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapPUBLIC "-////DTD SQL Map 2.0//EN""/dtd/sql-map-2.dtd"><sqlMap namespace="User"><typeAlias alias="user" type="er"/><!-- 查询表中记录条数 --><select id="recordCount" resultClass="int"><![CDATA[select count(*) from user]]></select><select id="getUserById" parameterClass="int" resultClass="user"> <![CDATA[select * from user where id =#id#]]></select><select id="getAllUser" resultClass="user"><![CDATA[select * from user]]></select><select id="checkUser" parameterClass="user" resultClass="user"> <![CDATA[select * from user where username =#username# and password =#password#]]></select><!-- --><select id="firstPage" resultClass="user" parameterClass="user"> <![CDATA[select top $pagesize$ * from user order by id desc ]]></select><delete id="deleteUser" parameterClass="int"><![CDATA[delete from user where id= #id#]]></delete><update id="updateUser" parameterClass="user"><![CDATA[update user set username= #username#,password= #password# where id =#id#]]></update><insert id="insertUser" parameterClass="user"><![CDATA[insert into user(username,password)values(#username#,#password#)]]></insert></sqlMap>如图:IUserService.javapackage cn.hsw.service;import java.util.List;import er;public interface IUserService {public List<User> getAllUser();public User getUserById(Integer id);public boolean isLogin(User user);public boolean insertUser(User user);public boolean updateUser(User user);public boolean deleteUser(Integer id); }如图:UserService.javapackage cn.hsw.service;import java.util.List;import cn.hsw.dao.IUserDAO;import erDAO;import er;public class UserService implements IUserService { private IUserDAO userDAO=null;public void setUserDAO(UserDAO userDAO) { erDAO = userDAO;}public boolean deleteUser(Integer id) {return userDAO.deleteUser(id);}public List<User> getAllUser() {return userDAO.getAllUser();}public User getUserById(Integer id) {return userDAO.getUserById(id);}public boolean insertUser(User user) { return userDAO.insertUser(user); }public boolean isLogin(User user) { return userDAO.isLogin(user); }public boolean updateUser(User user) { return userDAO.updateUser(user); }}如图:4.页面adduser.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP 'adduser.jsp' starting page</title></head><body><s:form action="save" method="post"><s:textfield label="username" name="username"/><s:password label="password" name="password"/><s:submit value="save"/></s:form></body></html>如图:error.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP 'error.jsp' starting page</title></head><body>This is my JSP page. <br></body></html>如图:list.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP 'list.jsp' starting page</title></head><body><s:form action="show" method="post"><table width="50%" align="center"><tr><td align="center">userid</td><td align="center">username</td><td align="center">password</td></tr><s:iterator value="list" id="user" status="st"><tr><td align="center"><s:property value="id"/></td><td align="center"><s:property value="username"/></td><td align="center"><s:property value="password"/></td><td align="center"><s:url id="update" action="edit"><s:param name="id"><s:property value="id"/></s:param></s:url><s:a href="%{update}">update</s:a></td><td align="center"><s:url id="delete" action="delete"><s:param name="id"><s:property value="id" /></s:param></s:url><s:a href="%{delete}">delete</s:a></td></tr></s:iterator><tr><td colspan="4"><s:property value="#request.pageBar" escape="false"/> </td></tr></table></s:form> </body></html>如图:login.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP 'login.jsp' starting page</title></head><body><s:form action="login" method="post"><s:textfield label="username" name="username"/><s:password label="password" name="password"/><s:submit value="submit"/></s:form></body></html>如图:success.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>success</title></head><body><a href="show.action">显示用户列表</a></br><a href="adduser.jsp">添加用户</a></body></html>如图:update.jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib prefix="s" uri="/struts-tags" %><html><head><title>update.jsp</title></head><body><s:form action="update" method="post"><s:textfield name="id" label="ID" value="%{id}" readonly="true"/> <s:textfield name="username" label="UserName" value="%{username}" required="true"/><s:textfield name="password" label="Password" value="%{password}" required="true"/><s:submit value="update"/></s:form></body></html>如图:5.jar包6.表userCREATE TABLE `user` (`id` int(11) NOT NULL auto_increment,`username` varchar(20) NOT NULL default '',`password` varchar(11) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk。

人事管理

Struts2+Spring+Ibatis整合的简单人事管理系统作者:李红首先,用MyEclipse 新建一个web project(包com.bjnt.ibatis.map(存放ibatis配置文件) com.bjnt.ibatis.domian(存放实体类) com.bjnt.)一.Ibatis先是Ibatis的配置:1.把ibatis-2.3.4.726.jar复制到项目的WEB-INFO/lib下刷新eclipse2.建立ibatis的包,在此我创建了com.bjnt.ibatis.map包(存放ibatis配置文件).3.建立包com.bjnt.ibatis.domain 并建立PO类TDept.java 和TEmployee.java:Java代码public class TDept {private Integer IDeptId; //部门IDprivate String vcDeptCode; //部门编号private String vcDeptName; //部门名称private String vcDeptAddress; //部门地址private String vcDeptTelphone; //部门电话private String vcDeptDesc; //部门简介private List<TEmployee> employees; //部门所属员工}public class TEmployee{private Integer IEmpId;private String vcEmpName;}4.在com.bjnt.ibatis.map包中新建一个dept.xml 和employee.xml(这里省略)内容如下:dept.xml文件Xml代码<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-////DTD SQL Map 2.0//EN""/dtd/sql-map-2.dtd"><sqlMap namespace="deptEntity"><typeAlias alias="employee"type="com.bjnt.ibatis.domain.TEmployee" /><typeAlias alias="dept" type="com.bjnt.ibatis.domain.TDept" /><resultMap id="get-dept-result" class="dept"><result property="IDeptId" column="DEPTID" jdbcType="int" javaType="ng.Integer" /><result property="vcDeptCode" column="DEPTCODE" jdbcType="VARCHAR(30)" javaType="ng.String" /><result property="vcDeptName" column="DEPTNAME" jdbcType="VARCHAR(10)" javaType="ng.String" /><result property="vcDeptAddress" column="ADDRESS" jdbcType="VARCHAR(50)" javaType="ng.String" /><result property="vcDeptTelphone" column="TELPHONE" jdbcType="VARCHAR(20)" javaType="ng.String" /><result property="vcDeptDesc" column="DESC" jdbcType="VARCHAR(255)" javaType="ng.String" /><result property="employees" column="DEPTID" select="findEmpByDeptId" /></resultMap><parameterMap id="insert-dept-full-paramter" class="dept" ><parameter property="IDeptId" jdbcType="int"/><parameter property="vcDeptCode" jdbcType="VARCHAR(30)"/><parameter property="vcDeptName" jdbcType="VARCHAR(10)"/><parameter property="vcDeptAddress" jdbcType="VARCHAR(50)"/><parameter property="vcDeptTelphone" jdbcType="VARCHAR(20)"/><parameter property="vcDeptDesc" jdbcType="VARCHAR(255)"/> </parameterMap><select id="findDeptById" parameterClass="int" resultMap="get-dept-result"> select *from T_DEPT as dept<dynamic prepend="WHERE"><isNotEmpty property="value">dept.DEPTID= #value#</isNotEmpty> </dynamic></select><select id="findEmpByDeptId" parameterClass="int"resultClass="employee"><![CDATA[select emp.EMPID as IEmpId,emp.EMPNAME as vcEmpName,emp.GENDER as IEmpGender,emp.AGEas IEmpAge ,emp.IDCARD as vcEmpIdCard,emp.PARTY as vcEmpParty,emp.SCHOOLas vcEmpSchool,emp.MAJOR as vcEmpMajor,emp.TITLE as vcEmpTitle,emp.POST as vcEmpPostfrom T_EMPLOYEE as empwhere emp.DEPTID= #value#]]></select><select id="findDeptByName" parameterClass="ng.String"resultMap="get-dept-result">select *from T_DEPT as dept<dynamic prepend="WHERE"><isNotEmpty property="value">dept.DEPTNAME= #value#</isNotEmpty> </dynamic></select><select id="findDeptByDeptCode" parameterClass="ng.String"resultMap="get-dept-result">select *from T_DEPT as dept<dynamic prepend="WHERE"><isNotEmpty property="value">dept.DEPTCODE= #value#</isNotEmpty> </dynamic></select><insert id="insertDept" parameterMap="insert-dept-full-paramter">insert into T_DEPT (DEPTID,DEPTCODE,DEPTNAME,ADDRESS,TELPHONE,`DESC`) values(?,?,?,?,?,?)</insert></sqlMap>5.创建com.bjnt.ibatis.dao 并创建数据库dao接口TDeptDao.java:Java代码public interface TDeptDao {/*** 查找所有的部门* @return*/public List<TDept> findAllDept();/*** 根据部门Id 查找特定部门* @param deptId* @return*/public TDept findDeptById(Integer deptId);/*** 根据部门名称查找特定部门* @param deptName* @return*/public TDept findDeptByName(String deptName);/*** 根据部门编号查找特定部门* @param deptCode* @return*/public TDept findDeptByCode(String deptCode);/*** 新插入一个部门* @param dept* @return*/public Integer insertDept(TDept dept);}6.在com.bjnt.ibatis.dao.impl 实现这个接口,TDeptDaoImpl.java:Java代码public class TDeptDaoImpl extends SqlMapClientDaoSupport implements TDeptDao { @SuppressWarnings("unchecked")@Overridepublic List<TDept> findAllDept() {return (List<TDept>)getSqlMapClientTemplate().queryForList("findDeptById");}@Overridepublic TDept findDeptById(Integer deptId) throws DataAccessException { return(TDept)getSqlMapClientTemplate().queryForObject("findDeptById",deptId);}@Overridepublic Integer insertDept(TDept dept) {return (Integer)getSqlMapClientTemplate().insert("insertDept", dept);}@Overridepublic TDept findDeptByName(String deptName) {return(TDept)getSqlMapClientTemplate().queryForObject("findDeptByName",deptName);}@Overridepublic TDept findDeptByCode(String deptCode) {return(TDept)getSqlMapClientTemplate().queryForObject("findDeptByDeptCode",deptCode);}}7.在项目的WEB-INF 下新建配置文件SqlMapConfig.xml:Xml代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-////DTD SQL Map Config 2.0//EN""/dtd/sql-map-config-2.dtd"><sqlMapConfig><settings cacheModelsEnabled="true" enhancementEnabled="true"lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"maxSessions="10" maxTransactions="5" useStatementNamespaces="false" /> <sqlMap resource="com/bjnt/ibatis/map/employee.xml"/><sqlMap resource="com/bjnt/ibatis/map/dept.xml"/></sqlMapConfig>到此,Ibatis配置的差不多了.二.配置Spring:1.拷入commons-collections-3.2.jar commons-dbcp-1.2.2.jar commons-logging-1.0.4.jar commons-pool-1.4.jar log4j-1.2.14.jar retrotranslator-runtime-1.2.0.jar retrotranslator-transformer-1.2.0.jar spring.jar 到WEB-INF/lib2.在WEB-INF目录下建立配置文档jdbc.properties :Java代码jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/bjnt_database?characterEncoding=UTF-8ername=rootjdbc.password=root3.在WEB-INF目录下建立配置文档applicationContext.xml(Spring的配置文件) :(待修改~~~)Xml代码<?xml version="1.0" encoding="UTF-8"?><beansxmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.0.xsd/schema/aop/schema/aop/spring-aop-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!--以下四个文件中的内容可以直接写在applicationContext.xml本文件中--><import resource="dataAccessContext.xml"/><import resource="SqlMapDaoConfig.xml"/><import resource="serviceContext.xml"/><import resource="Struts2ActionConfig.xml"/><!--以上四个文件中的内容可以直接写在applicationContext.xml本文件中--><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"><list><value>WEB-INF\\jdbc.properties</value></list></property></bean><!--以下代码是使用AOP方式对事务的管理--><!--<aop:config><aop:advisor pointcut="execution(* com.bjnt.struts.action.*.*(..))" advice-ref="txAdvice"/></aop:config><tx:advice id="txAdvice"><tx:attributes><tx:method name="execute*"/><tx:method name="insert*"/><tx:method name="update*"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice>--><!-- ===================实现外观类对业务逻辑组件的注入======================= --><bean id="hrmsFacade" parent="baseTransactionProxy"><property name="target"><bean class="com.dbke.hrms.spring.logic.HRMSFacadeImpl"><property name="deptService" ref="deptService"/></bean></property></bean></beans>4. 在WEB-INF目录下建立配置文档dataAccessContext.xmlXml代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><!-- spring 的事务处理代理配置--><bean id="baseTransactionProxy"class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"lazy-init="true" abstract="true"><!-- 它有个属性叫“事务经理”,下面会声明的--><property name="transactionManager"><ref bean="transactionManager" /></property><!--这里就声明了具体的事务--><property name="transactionAttributes"><props><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="del*">PROPAGATION_REQUIRED</prop><prop key="modify*">PROPAGATION_REQUIRED</prop><prop key="*">PROPAGATION_REQUIRED,readOnly</prop></props></property></bean><!-- spring 的数据源的配置--><bean id="dataSource" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></bean><!-- spring 的事务处理类配置--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/></bean><!-- spring的ibatis 配制--><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="WEB-INF/SqlMapConfig.xml"/><property name="dataSource" ref="dataSource"/></bean></beans>5.在WEB-INF目录下创建配置文档SqlMapDaoConfig.xml :Xml代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><!-- =====================下面是IBATIS的DAO的配置============================= --><bean id="employeeDao" class="com.bjnt.ibatis.dao.impl.TEmployeeDaoImpl"> <property name="sqlMapClient" ref="sqlMapClient"/></bean><bean id="deptDao" class="com.bjnt.ibatis.dao.impl.TDeptDaoImpl"><property name="sqlMapClient" ref="sqlMapClient"/></bean></beans>6.在WEB-INF目录下创建配置文档serviceContext.xml:Java代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><!-- =========以下是对系统业务逻辑层的注入========================= --><bean id="deptService" class="com.bjnt.struts.service.impl.DeptServiceImpl"> <property name="deptDao" ref="deptDao"/></bean></beans>7.在com.bjnt.spring.logic 包下建立外观接口DeptFacade.java :Java代码public interface DeptFacade {/*** 显示所有的部门* @return*/public List<TDept> findAllDept();/*** 根据部门Id查看部门* @param deptId* @return*/public TDept findDeptById(Integer deptId);/*** 增加一个部门* @param dept 部门对象* @return*/public Integer insertOneDept(TDept dept);/*** 增加一个部门* @param vcDeptCode* @param vcDeptName* @param vcDeptAddress* @param vcDeptTelphone* @param vcDeptDesc* @return*/public Integer insertOneDept(String vcDeptCode,String vcDeptName,String vcDeptAddress,String vcDeptTelphone,String vcDeptDesc);/*** 一次增加若干部门* @param deptList* @return*/public Integer insertDepts(List<TDept> deptList);/*** 验证部门名称是否有效* @param deptName* @return true为有效可用,false为无效*/public boolean validateDeptName(String deptName);/*** 验证部门编号是否有效* @param deptCode* @return true为有效可用,false为无效*/public boolean validateDeptCode(String deptCode);}8.在com.bjnt.spring.logic 实现外观接口DeptFacadeImpl.java:Java代码public class DeptFacadeImpl implements DeptFacade{private DeptService deptService;public void setDeptService(DeptService deptService) {this.deptService = deptService;}@Overridepublic Integer insertDepts(List<TDept> deptList) {return this.deptService.insertDepts(deptList);}@Overridepublic Integer insertOneDept(String vcDeptCode, String vcDeptName,String vcDeptAddress, String vcDeptTelphone, String vcDeptDesc) { return this.deptService.insertOneDept(vcDeptCode, vcDeptName, vcDeptAddress, vcDeptTelphone, vcDeptDesc);}@Overridepublic Integer insertOneDept(TDept dept) {return this.deptService.insertOneDept(dept);}@Overridepublic List<TDept> findAllDept() {return this.deptService.findAllDept();}@Overridepublic TDept findDeptById(Integer deptId) {return this.deptService.findDeptById(deptId);}@Overridepublic boolean validateDeptCode(String deptCode) {return this.deptService.validateDeptCode(deptCode);}@Overridepublic boolean validateDeptName(String deptName) {return this.deptService.validateDeptName(deptName);}}到此,spring就暂时结束了.接下来配置struts2三.struts2:1.导入backport-util-concurrent-3.0.jar freemarker-2.3.12.jar struts2-core-2.0.12.jar struts2-spring-plugin-2.0.12.jar xwork-2.0.6.jar 到WEB-INF/lib2.修改WEB-INF/下的web.xml文件:Xml代码<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><!-- FilterDispatcher 用来初始化strtus2 并且处理所有的web 请求--><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class ></listener><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>3.在src目录下建立配置文件struts.properties:Java代码struts.devMode = truestruts.enable.DynamicMethodInvocation = falsestruts.objectTypeDeterminer = notigerstruts.objectFactory = spring4.在src目录下建立配置文件struts.xml :Xml代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><constant name="struts.objectTypeDeterminer" value="notiger" /><constant name="struts.objectFactory" value="spring" /><constant name="struts.objectFactory.spring.autoWire" value="name" /><include file="struts-default.xml"/><!-- struts2的Action配置--><package name="hrms" extends="struts-default"><action name="showEmployee" class="showEmployeeClass"> <result name="success">/index.jsp</result></action><action name="showDept" class="showDeptClass"><result name="success">/index.jsp</result><result name="error">/error.jsp</result></action><!-- Add your actions here --></package></struts>5.在com.bjnt.struts.service 编写业务逻辑组件的接口DeptService.java Java代码public interface DeptService {/*** 显示所有的部门* @return*/public List<TDept> findAllDept();/*** 根据部门Id查看部门* @param deptId* @return*/public TDept findDeptById(Integer deptId);/*** 增加一个部门* @param dept 部门对象* @return*/public Integer insertOneDept(TDept dept);/*** 增加一个部门* @param vcDeptCode* @param vcDeptName* @param vcDeptAddress* @param vcDeptTelphone* @param vcDeptDesc* @return*/public Integer insertOneDept(String vcDeptCode,String vcDeptName,String vcDeptAddress,String vcDeptTelphone,String vcDeptDesc);/*** 一次增加若干部门* @param deptList* @return*/public Integer insertDepts(List<TDept> deptList);/*** 验证部门名称是否有效* @param deptName* @return true为有效可用,false为无效*/public boolean validateDeptName(String deptName);/*** 验证部门编号是否有效* @param deptCode* @return true为有效可用,false为无效*/public boolean validateDeptCode(String deptCode);}6.在com.bjnt.struts.service.impl 编写业务逻辑组件的实现DeptServiceImpl.javaJava代码public class DeptServiceImpl implements DeptService {/*spring注入的dao*/private TDeptDao deptDao;public void setDeptDao(TDeptDao deptDao) {this.deptDao = deptDao;}@Overridepublic Integer insertDepts(List<TDept> deptList) {for (TDept dept : deptList) {this.insertOneDept(dept);}}@Overridepublic Integer insertOneDept(TDept dept) {if (!this.validateDeptName(dept.getVcDeptName())) {throw new RuntimeException("部门名称重复");}if (!this.validateDeptCode(dept.getVcDeptCode())) {throw new RuntimeException("部门编号名称重复");}return deptDao.insertDept(dept);}@Overridepublic Integer insertOneDept(String vcDeptCode, String vcDeptName, String vcDeptAddress, String vcDeptTelphone, String vcDeptDesc) { TDept dept=new TDept();dept.setVcDeptAddress(vcDeptAddress);dept.setVcDeptCode(vcDeptCode);dept.setVcDeptDesc(vcDeptDesc);dept.setVcDeptName(vcDeptName);dept.setVcDeptTelphone(vcDeptTelphone);return this.insertOneDept(dept);}@Overridepublic List<TDept> findAllDept() {return deptDao.findAllDept();}@Overridepublic TDept findDeptById(Integer deptId) {return deptDao.findDeptById(deptId);}@Overridepublic boolean validateDeptName(String deptName) {if (deptDao.findDeptByName(deptName)==null) {return true;return false;}}@Overridepublic boolean validateDeptCode(String deptCode) {if (deptDao.findDeptByCode(deptCode)==null) {/*验证部门编号长度是否是3的整数倍*/if (deptCode.length()%3!=0) {return false;}return true;}else {return false;}}}7.在com.bjnt.struts.action 编写action类ShowDeptAction.java: Java代码public class ShowDeptAction implements Action{private DeptFacade deptFacade;public void setDeptFacade(DeptFacade deptFacade) {this.deptFacade = deptFacade;}/*Struts2的输入参数值*/private int di; //deptIDpublic int getDi() {return di;}public void setDi(int di) {this.di = di;}/*Struts2的返回值*/private TDept dept;public TDept getDept() {return dept;}public void setDept(TDept dept) {this.dept = dept;}@Overridepublic String execute() throws Exception {dept=deptFacade.findDeptById(di);TDept dept1=new TDept();dept1.setVcDeptName("重庆分公司");dept1.setVcDeptCode("001002");dept1.setVcDeptAddress("重庆");// hrmsFacade.addOneDept(dept1);TDept dept2=new TDept();dept2.setVcDeptName("广州分公司");dept2.setVcDeptCode("001003");dept2.setVcDeptAddress("广州");List<TDept> deptList=new ArrayList<TDept>();deptList.add(dept2);deptList.add(dept1);try {deptFacade.insertDepts(deptList);} catch (RuntimeException e) {e.printStackTrace();return ERROR;}return SUCCESS;}}8.在WEB-INF 下编写配置文件Struts2ActionConfig.xml:Xml代码<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "/dtd/spring-beans-2.0.dtd"><beans><!-- Struts2 action类--><bean id="showEmployeeClass" class="com.bjnt.struts.action.ShowEmployeeAction" ><property name="hrmsFacade" ref="hrmsFacade" /></bean><bean id="showDeptClass" class="com.bjnt.struts.action.ShowDeptAction" > <property name="hrmsFacade" ref="hrmsFacade" /></bean></beans>到此,struts2配置就完成了.写jsp进行测试。

Struts2+Spring+MyBatis整合文档(共66张)

Struts2+Spring+MyBatis
2016-04-20
第1页,共66页。
目 录
Contents
1
框架的介绍
2
框架的原理
3
框架的使用
4
技术小结
第2页,共66页。
Part
1
框架 的介绍 (kuànɡ jià)
Introduction to the framework
第3页,共66页。
1.1 框架 由来 (kuànɡ jià)
种应用服务器,甚至无须应用服务器的支持,也能提供应用服务 器的功能,如声明式事务等。
第12页,共66页。
MyBatis产生的背景
Mybatis background
1、传统的jdbc,有许多操作是与业务和数据无关的,真正需要 的是,一个运行sql语句的功能,还有取回结果的功能,但是 jdbc要求你处理连接(liánjiē),会话、statement,尤其是 还要你注意关闭资源,还要写try catch处理异常 。 2、iBatis 解决了jdbc的问题,不仅如此,还要求你把sql 语句写到xml里,这样不会把sql编译到程序中,以增强程 序的可移植性,在不重新编译的情况下,可以更换数据库。 3、MyBatis 本是apache的一个开源项目iBatis, 2010年 这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。
应用了IOC,容器会主动在对象初始化时,将其依赖(yīlài)的其它对象传递进来,而不是这个
在做业务处理时,数据关系复杂,参与者多,造成业务逻辑复杂。使用面向过程开发很难保 持清晰的程序结构,不同功能的业务逻辑互相关联,耦合度高,对程序进行查错与修改困难。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

S t r u t s i b a t i s s p r i n g项目整合档示例The document was prepared on January 2, 2021Struts2+ibatis+spring整合开发1.工程结构图2.配置文件<xml version="" encoding="UTF-8"><web-app version=""xmlns=""xmlns:xsi=""xsi:schemaLocation=""><welcome-file-list><welcome-file></welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/</param-value></context-param><listener><listener-class></listener><filter><filter-name>struts2</filter-name><filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>如图:<xml version="" encoding="UTF-8"><!DOCTYPE struts PUBLIC"-etUserById(id));}}public String execute()throws Exception{if(getUserService().isLogin(user)){return SUCCESS;}return INPUT;}public String save()throws Exception{if(getUserService().insertUser(user)){return SUCCESS;}return ERROR;}public String edit(){return SUCCESS;}public String update()throws Exception{if(getUserService().updateUser(user)){return SUCCESS;}return ERROR;}public String delete()throws Exception{if(getUserService().deleteUser(id))){return SUCCESS;}return ERROR;}public String findAllUser()throws Exception{ try {list=getUserService().getAllUser();} catch (Exception e) {}return SUCCESS;}public String getId() {return id;}public void setId(String id) {= id;}public int getPageIndex() {return pageIndex;}public void setPageIndex(int pageIndex) {= pageIndex;}public String getPageBar() {return pageBar;}public void setPageBar(String pageBar) {= pageBar;}public List<User> getList() {return list;}public void setList(List<User> list) {= list;}public User getUser() {return user;}public void setUser(User user) {= user;}public void setUserService(IUserService userService) { = userService;}public IUserService getUserService() {return userService;}public User getModel() {" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP '' starting page</title></head><body><s:form action="save" method="post"><s:textfield label="username" name="username"/><s:password label="password" name="password"/><s:submit value="save"/></s:form></body></html>如图:<%@ page language="java" import=".*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP '' starting page</title></head><body>This is my JSP page. <br></body></html>如图:<%@ page language="java" import=".*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP '' starting page</title></head><body><s:form action="show" method="post"><table width="50%" align="center"><tr><td align="center">userid</td><td align="center">username</td><td align="center">password</td></tr><s:iterator value="list" id="user" status="st"><tr><td align="center"><s:property value="id"/></td><td align="center"><s:property value="username"/></td><td align="center"><s:property value="password"/></td><td align="center"><s:url id="update" action="edit"><s:param name="id"><s:property value="id"/></s:param></s:url><s:a href="%{update}">update</s:a></td><td align="center"><s:url id="delete" action="delete"><s:param name="id"><s:property value="id" /></s:param></s:url><s:a href="%{delete}">delete</s:a></td></tr></s:iterator><tr><td colspan="4"><s:property value="#" escape="false"/></td></tr></table></s:form></body>如图:<%@ page language="java" import=".*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>My JSP '' starting page</title></head><body><s:form action="login" method="post"><s:textfield label="username" name="username"/><s:password label="password" name="password"/><s:submit value="submit"/></s:form></body></html>如图:<%@ page language="java" import=".*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title>success</title></head><body><a href="">显示用户列表</a></br><a href="">添加用户</a></body></html>如图:<%@ page language="java" import=".*" pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><html><head><title></title></head><body><s:form action="update" method="post"><s:textfield name="id" label="ID" value="%{id}" readonly="true"/><s:textfield name="username" label="UserName" value="%{username}" required="true"/> <s:textfield name="password" label="Password" value="%{password}" required="true"/> <s:submit value="update"/></s:form></html>如图:3.jar包4.表userCREATE TABLE `user` (`id` int(11) NOT NULL auto_increment, `username` varchar(20) NOT NULL default '', `password` varchar(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gbk。

相关文档
最新文档