Let's go inside

this blog is deprecated as a result of laziness.
posts - 59, comments - 2, trackbacks - 0, articles - 0

struts spring ibatis学习笔记

Posted on 2006-08-27 16:38 Earth 阅读(3519) 评论(0)  编辑  收藏 所属分类: Java

这是对上一个示例的升级。

基本上不用改任何代码。只说不一样的地方。

 

不同:

1.  使用 IoC :本例为 Type3 (Constructor Injection),

方法: 先用 Eclipse Generate Construtor Using Fields 功能 , 快速生成构造函数 , 再使用 Spring IoC ,将以前代码中写死的依赖关系以配置的方式注入

 

2 .使用 org.springframework.orm.ibatis.SqlMapClientTemplate

所有的 dao 类都继承这个方法,它只是对 iBATIS-DAO 做了简单的封装,将 CRUD 方法中抛出的 SQLException 变成了 unchecked exception.

 

3 SqlMapConfig.xml 同前一个例子,只是将 DB 的部分去掉。

 

4 Spring Struts 的集成,

struts-config.xml 中所有 action type 都要变成

org.springframework.web.struts.DelegatingActionProxy

然后是增加 spring 插件

  <plug-in className= "org.springframework.web.struts.ContextLoaderPlugIn" >

        <set-property

                property= "contextConfigLocation"

                value= "/WEB-INF/classes/spring.xml" />

</plug-in>

这便是 Struts Spring 的集成方法 J

 

5 Spring 的配置文件 ( 名称,位置任意 )

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 3         "http://www.springframework.org/dtd/spring-beans.dtd">
 4 <beans>
 5     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
 6         <property name="location" value="classpath:jdbc.properties"/>
 7     </bean>
 8 
 9     <bean name="/employee" class="ibatis.demo.action.EmployeeAction">
10         <constructor-arg index="0" ref="employeeService"/>
11         <constructor-arg index="1" ref="departmentService"/>
12     </bean>
13 
14     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
15         <property name="driverClassName" value="${driver}"/>
16         <property name="url" value="${jdbcURL}"/>
17         <property name="username" value="${username}"/>
18         <property name="password" value="${password}"/>
19     </bean>
20 
21     <bean id="sqlMapClient"    class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
22         <property name="configLocation">  <value>classpath:ibatis/demo/dao/SqlMapConfig.xml</value>
23         </property>
24         <property name="useTransactionAwareDataSource">
25             <value>true</value>
26         </property>
27         <property name="dataSource">
28             <ref bean="dataSource"/>
29         </property>
30     </bean>
31 
32     <bean id="sqlMapClientTemplate"         class="org.springframework.orm.ibatis.SqlMapClientTemplate">
33         <property name="sqlMapClient">
34             <ref bean="sqlMapClient"/>
35         </property>
36     </bean>
37 
38     <bean id="employeeDao" class="ibatis.demo.dao.EmployeeDaoIbatis">
39         <property name="sqlMapClient">
40            <ref bean="sqlMapClient"/>
41         </property>
42     </bean>
43 
44     <bean id="employeeService" class="ibatis.demo.service.EmployeeServiceImpl">
45         <constructor-arg index="0" ref="employeeDao"/>
46     </bean>
47 
48      <bean id="departmentDao" class="ibatis.demo.dao.DepartmentDaoIbatis">
49                 <property name="sqlMapClient">
50             <ref bean="sqlMapClient"/>
51         </property>
52     </bean>
53 
54     <bean id="departmentService" class="ibatis.demo.service.DepartmentServiceImpl">
55         <constructor-arg index="0" ref="departmentDao"/>
56     </bean>
57 
58 </beans>
59 

 

特别注意的是: struts-config.xml-> action ->path 属性 一定要和 spring.xml->bean ->name 属性一模一样

 

在项目中引入 spring ,就以上 5 个步骤。一半的工作在于 spring.xml 的编写。

 

其它:

把一个已有的工程引入到 Eclipse 下的方式,首先把已有的项目复制到你的 workspace 下,然后新建一个同名的 java 工程,

方法是 File -> New Project -> Java Project -> 输入工程名 ( 用相同的名字 )

 

The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from required .class files. 这个错误表示的意思还不太清楚,而且奇怪的是该错误提示总是在代码的最前面 ( 第一行位置 ) ,解决办法是加入相关类的 jar 包到你的 classpath

因此此处加入 servelet-api.jar classpath OK

只有注册用户登录后才能发表评论。


网站导航: