`

Struts2+Spring2.5+Ibatis2.3图书管理

阅读更多
   看了Ibatis也有好长时间啦,一直也没有和Struts2+Spring2.5进行整合,今天也没有什么任务,写一个简单的例子和大家一起分享下。
   首先建立一下简单的数据库表:sbook
drop table if exists sbook;
create table if not exists sbook
(
	id int primary key auto_increment,
	title varchar(50),
	author varchar(20),
	total int,
	price float,
	isbn varchar(20),
	publisher varchar(50)
);

   在MyEclipse建立Web工程springibatis,然后把工程所要使用的Jar文件导入:
antlr-2.7.2.jar
aspectjweaver.jar
commons-collections.jar
commons-dbcp.jar
commons-logging-1.0.4.jar
commons-pool.jar
//Ibatis整体Jar文件
ibatis-2.3.0.677.jar

//Mysql JDBC驱动
mysql-connector.jar

//Spring整体包
spring.jar            

//struts2必须               
freemarker-2.3.8.jar   
//struts2必须
ognl-2.6.11.jar       
//struts2核心包
struts2-core-2.0.11.2.jar
//struts2整合Spring插件  
struts2-spring-plugin-2.0.11.2.jar 
//struts2必须
xwork-2.0.5.jar 

以上就是工程中所用到的全部Jar文件。
    现在在Web.xml文件里面为Spring和Struts2做必要的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<!-- 配置Spring -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			WEB-INF/classes/com/us/jack/config/applicationContext.xml
			WEB-INF/classes/com/us/jack/config/applicationContext-services.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
	<!-- 配置Struts2 -->
	<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>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

    好了现在Web.xml文件已经配置完成啦。
    现在转入真正要写代码的地方啦。
   首先为sbook表建立必要发POJO类:
package com.us.jack.pojo;
/**
 * 图书类
 * @author jack
 *
 */
public class SBook {
	private int id;
	private String title;
	private String author;
	private int total;
	private float price;
	private String isbn;
	private String publisher;
         //下面是Getter和Setter方法
         ……
}

这里的属性和数据库sbook表的字段是一一对应的,当然你也可以改成自己想要的字段,在控制此POJO类的XMl文件里做到数据库字段的映射即可。
   
现在请注意啦,到Spring和Ibatis集成配置的关键地方啦:

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
		<property name="url"
			value="jdbc:mysql://localhost:3306/ibatisstudy" />
		<property name="username" value="root" />
		<property name="password" value="jack" />
	</bean>

	<!-- SqlMap setup for iBATIS Database Layer -->
	<bean id="sqlMapClient"
		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<!-- 特别注意此处,如果做单元测试的话,请把“WEB-INF/classes/”去掉,否则会报找不到sqlMapConfig.xml文件 -->
		<property name="configLocation"
			value="WEB-INF/classes/com/us/jack/config/sqlMapConfig.xml" />
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 注入BookDAO层 -->
	<bean id="sbookDAO" class="com.us.jack.dao.impl.SBookDAO">
		<property name="sqlMapClient" ref="sqlMapClient" />
	</bean>
</beans>

其中sqlMapConfig.xml文件配置Ibatis操作:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<sqlMap resource="com/us/jack/dao/impl/maps/SBook.xml"/>
</sqlMapConfig>

此处仅用到了SBook.xml文件,所以只需要导入此文件即可,下面来看一下真正处理数据库操作的SBook.xml文件的信息:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
	<typeAlias alias="sbook" type="com.us.jack.pojo.SBook" />
	<!-- 添加一本新书 -->
	<insert id="saveBook" parameterClass="sbook">
		<selectKey keyProperty="id" resultClass="int">
			<![CDATA[
				SELECT LAST_INSERT_ID() AS VALUE
			]]>
		</selectKey>
		<![CDATA[
			INSERT INTO sbook(title,author,total,price,isbn,publisher)
			VALUES(#title#,#author#,#total#,#price#,#isbn#,#publisher#)
		]]>
	</insert>
	
	<!-- 删除图书 -->
	<delete id="deleteBook" parameterClass="int">
		<![CDATA[
			DELETE FROM SBOOK WHERE ID=#id#
		]]>
	</delete>
	
	<!-- 通过出版社名称查找此出版社出版的图书  -->
	<select id="findBookByPublisher" parameterClass="string"
		resultClass="sbook">
		<![CDATA[
			SELECT * FROM sbook WHERE publisher=#publisher#
		]]>
	</select>
	<!-- 通过图书唯一的ISBN号码查找图书 -->
	<select id="findBookByISBN" parameterClass="string"
		resultClass="sbook">
		<![CDATA[
			SELECT * FROM sbook WHERE isbn=#isbn#
		]]>
	</select>
	<!-- 查找所有的图书 -->
	<select id="findAllBook" resultClass="sbook">
		<![CDATA[
			SELECT * FROM sbook 
		]]>
	</select>
	<!-- 更新图书信息 -->
	<update id="updateBook" parameterClass="sbook">
		<![CDATA[
			UPDATE SBOOK SET 
			title=#title#,author=#author#,price=#price#,total=#total#,isbn=#isbn#,publisher=#publisher#
			WHERE id=#id#
		]]>
	</update>
	<!-- 查找特定图书 -->
	<select id="findBookById" parameterClass="int" resultClass="sbook">
		<![CDATA[
			SELECT * FROM sbook WHERE ID=#id#
		]]>
	</select>
</sqlMap>

applicationContext-services.xml处理业务层和事务控制:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	<bean id="sbookServices" class="com.us.jack.services.impl.SBookServices">
		<property name="sbookDAO" ref="sbookDAO"/>
	</bean>
	<!-- 将BookAction交给Spring控制 -->
	<bean id="sbookAction" class="com.us.jack.action.SBookAction">
		<property name="sbookServices" ref="sbookServices"/>
	</bean>
	<!-- Transaction manager for a single JDBC DataSource -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<aop:config>
		<!-- 管理事务操作 -->
		<aop:pointcut id="servicesPointcut"
			expression="execution(* com.us.jack.services.*.*(..))" />
		<aop:advisor advice-ref="txAdvice"
			pointcut-ref="servicesPointcut" />
	</aop:config>
	<!-- 事务控制 -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="remove*" propagation="REQUIRED" />
			<tx:method name="get*" read-only="true" />
		</tx:attributes>
	</tx:advice>
</beans>

上面是对Spring事务和业务层的控制配置。
剩下的就是对DAO层和Services层以及Action层啦,这里就不在对此部分内容进行详细描述啦,如果感兴趣的朋友,请下载源代码查看。
分享到:
评论
16 楼 xuyoubin1987 2012-06-11  
谢了  支持楼主
15 楼 wx_hello 2011-12-15  
哈哈。。谢啦。。
14 楼 wuhongyu 2009-06-15  
不错的小例子,正在学这个,听说我们的下个项目是struts2+spring+ibatis,这里感谢了先
13 楼 haishou520 2009-05-31  
也学习一下吧。
12 楼 InnocentBoy 2009-04-30  
支持楼主,确实是不错的,至少可以帮助很多学习者!
11 楼 aquleo 2009-04-21  
不错的例子...学习了...
10 楼 mikeandmore 2009-04-21  
话说这个应该算不上企业应用吧。。。

PS。听说图书馆的管理系统是COBOL派一直控制着。。。嗯嗯。
9 楼 walle1027 2009-04-21  
caipanjin 写道
楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢

annotation虽然好用,但是也要改代碼。
8 楼 javajdbc 2009-04-20  
2.0 和 2.5 有什么区别没 ?
7 楼 InnocentBoy 2008-10-30  
学习中......
6 楼 pobaby 2008-10-30  
caipanjin 写道
楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢


楼主的jar包是2.0 不是spring2.5,2.5的新特性估计还不是太多人使用。
5 楼 caipanjin 2008-10-09  
楼主既然用Spring 2.5,为什么不用一下Annotation方式的IoC呢
4 楼 coolstar648 2008-10-08  
楼主的例子很好啊。
3 楼 largelove 2008-10-01  
weblogic jvm内存设置好像是2.2G左右。tomcat,jboss不知道多少。我这里有一个应用,一群程序员把数据取出来生成excel,然后3个人同时访问jvm就高达1G,应用没办法跑,后来限制weblogic queue,就是那个页面只能跑一个queue,其他人是进不来的。
2 楼 largelove 2008-10-01  
看上楼上说会话跟踪,我突然有个问题,一直不太明白。请问session的保存需要多少内存? 还有这个内存是占用服务器本身的内存还是占用jvm的内存?

如果是占用jvm内存,如果我有1000个人甚至10000个,那jvm内存不是很快就用完了?
1 楼 jy02411368 2008-09-29  
以后不断的推出好的 例子 另外JACK我想建议一下 尽量把代码写规范 例如你在开发项目的时候一个登陆 需要坐许多 例如会话跟踪之类的 希望能写全一点 这样看起来更实用 谢谢你的无私奉献!!!

相关推荐

    struts2_spring2.5_ibatis2.3_mysql架构

    *架构struts2_spring2.5_ibatis2.3 *mysql5.0 *jdk 1.6 *带有所有jar包,可直接运行 本实例实现了用户登陆,用户信息CRUD相关操作。让你感受到了ibatis做o/r mapping的方便快捷。 下次集成dwr进来 create ...

    Struts2+Spring2.5+Ibatis2.3架构

    Struts2+Spring2.5+Ibatis2.3架构是一种经典的Java Web开发技术栈,广泛应用于企业级应用系统中。这个架构结合了Struts2的MVC框架、Spring的依赖注入(DI)和面向切面编程(AOP)以及Ibatis的持久层解决方案,为...

    struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分

    分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...

    struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分

    分为:struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _01部分 struts2.1.8 + spring 2.5 + ibatis 2 整合开发包_ _02部分 只要将这两个包全下载下来,就可以搭建struts2.1.8 + spring 2.5 + ibatis2整合开发的...

    SSI(struts2+spring2.5+ibatis2.3)项目实例

    **SSI(Struts2+Spring2.5+Ibatis2.3)项目实例详解** **一、Struts2框架** Struts2是一个基于MVC设计模式的Java Web开发框架,它继承了Struts1和WebWork的优点,提供了一种更灵活、更强大的控制层解决方案。在SSI...

    struts2+spring+Ibatis框架包

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们共同构建了一个灵活、可扩展且高效的应用程序开发环境。这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于...

    struts2 + spring2.5 + ibatis2.3.4整合包文件

    这个"struts2 + spring2.5 + ibatis2.3.4整合包文件"包含了这三个框架的集成,用于搭建一个完整的Java Web应用程序。以下是对这些框架及其整合的详细说明: 1. Struts2:Struts2是基于Apache Struts 1的升级版,它...

    Struts2+Spring2.5+Ibatis完整增删改查Demo(含全部jar包)

    这个"Struts2+Spring2.5+iBatis完整增删改查Demo"提供了一个完整的集成示例,包括所有必要的jar包,使得开发者可以快速在Mycelipse环境中搭建并运行项目。 **Struts2框架**: Struts2是基于MVC设计模式的Web应用...

    struts1.3+spring2.5+ibatis2.3.4整合

    struts1.3+spring2.5+ibatis2.3.4整合

    SSI2 Struts2+Spring2.5+IBatis2 配置

    Struts2、Spring2.5 和 iBatis2 是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细讲解这三大框架的集成配置以及log4j的相关知识。 首先,Struts2 是一个基于MVC(Model-...

    Ext2.0+struts2+spring2.5+ibatis2

    在IT领域,构建高效、可扩展的企业级应用是至关重要的,而"Ext2.0+Struts2+Spring2.5+Ibatis2"的组合就是一种常见的技术栈,用于实现这样的目标。这个技术组合提供了从用户界面到数据访问的全方位解决方案。 **Ext...

    struts2+spring2.5+ibatis

    Struts2、Spring2.5和iBatis是经典的Java Web开发框架组合,它们共同构建了一个灵活、高效的企业级应用程序架构。在这个组合中,Struts2作为MVC(Model-View-Controller)框架负责处理用户请求,Spring2.5则提供依赖...

    Struts1.1+spring2.5+ibatis2.3+Ajax整合的源代码

    Struts1.1+Spring2.5+Ibatis2.3+Ajax整合是一个经典的Java Web开发框架组合,常用于构建企业级应用。这个源代码集合提供了如何将这四个技术有效地结合在一起的实例,以实现一个功能强大的、具有无刷新特性的用户界面...

    Struts2.0+Springframework2.5+ibatis2.3完美整合实例

    Struts2.0+Spring2.5.1+ibatis2.3的整合是一个常见的Java Web应用程序开发模式,主要用于构建高效、可维护性高的企业级系统。这种整合将Struts2作为表现层框架,Spring作为控制层和业务层框架,而iBatis则作为数据...

    Struts2.0+Springframework2.5+ibatis2.3完美整合用户登录及增删改查

    本演示示例主要使用目前最新,最流行技术Struts2.1 +Spring 2.5.1+ibatis2.3整合开发而成,这与我以前发布的版本中最大特色是整合了Spring2.5.1中的注解功能和半自动化工具ibatis技术,这是本示例的两大特色,简化了配置...

    SSI--struts2+spring2.5+ibatis项目实例

    **SSI(Struts2 + Spring2.5 + iBatis)项目实例详解** SSI,即Struts2、Spring和iBatis的组合,是Java Web开发中常见的技术栈,用于构建高效、灵活的企业级应用程序。这个项目实例展示了如何将这三个框架集成到...

    Ibatis2.3+Struts1.3+Spring2.5 整合实例代码

    本示例代码涉及的是一个经典的技术栈:Ibatis2.3、Struts1.3和Spring2.5的整合。这三个框架各自都有其独特的功能和优点,组合在一起能够提供灵活的数据访问、高效的MVC架构以及全面的应用管理。 Ibatis,作为一款轻...

    整合struts2+spring2.5+ibatis

    Struts2、Spring2.5和iBatis是Java Web开发中的三大框架,它们的整合使用可以帮助开发者构建高效、灵活的MVC(Model-View-Controller)架构的应用程序。Struts2作为表现层框架,提供了丰富的动作调度和结果处理;...

    spring2.5+struts2+ibatis2.3

    标题“spring2.5+struts2+ibatis2.3”揭示了这是一个关于整合Spring 2.5、Struts 2和iBATIS 2.3的项目。这三个技术都是Java开发中的重要组件,主要用于构建企业级Web应用程序。下面我们将深入探讨这三个框架的核心...

    Ibatis+struts2.0+Spring2.5 示例

    本示例是"Ibatis+struts2.0+Spring2.5"的整合,这是一个经典的Java Web开发技术栈,用于构建高效、灵活的企业级应用。下面将详细阐述这三个框架的集成及其核心功能。 1. **Ibatis**:Ibatis 是一个轻量级的持久层...

Global site tag (gtag.js) - Google Analytics