技术开发 频道

使用 Spring 框架调用 DB2 存储过程

    2. 创建基于Spring+Struts框架的web应用

    将Spring框架集成到现有的Web应用中十分容易,在web.xml中的Listener部分增加一个Spring的ContextLoaderListener同时设置contextConfigLocation参数,指向Spring的配置文件位置。如清单6所示。在web.xml中还有对于Struts的支持,读者可以参考developerworks上的Struts专题来了解如何使用Struts。

    清单 6. web.xml.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app id="WebApp"> <display-name>SpringSproc</display-name> <!-- Standard Action Servlet Configuration --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext-service.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>

    将Spring和Struts进行整合的方法有很多,developerworks上的文章"使用 Spring 更好地处理 Struts 动作"中介绍了几种方法,可以参照。

    3. 使用Spring framework建立数据源

    在Spring的配置文件applicationContext-service.xml中我们对使用到的Java类和数据源进行了配置。通过指定driverClassName、url、username、password等属性就可以创建数据源。在清单7中我们使用直接连接数据库的方式,我们也可以使用在应用服务器中配置的DataSource来连接数据库,只需要更改为不同的Reference就可以改变对数据库的连接方式。在这方面,Spring框架显示出了很强的灵活性。

    清单7. applicationContext-service.xml.

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="dataSourceJDBC" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>COM.ibm.db2.jdbc.app.DB2Driver</value> </property> <property name="url"> <value>jdbc:db2:testDB</value> </property> <property name="username"> <value>dsw</value> </property> <property name="password"> <value>pass4spring</value> </property> </bean> <bean id="SearchImpl" class="com.springsproc.dao.jdbc.SearchDAOImpl"> <property name="dataSource"> <ref local="dataSourceJDBC" /> </property> <property name="sprocName"> <value>DSW.S_CUSTOMER</value> </property> </bean> </beans>

    在Java代码SearchAction.java中将连接实例化。这也是Spring中的核心思想之一:控制反转(Inversion of Control)。清单8中(1)是把一个在applicationContext-service.xml中配置的bean实例化成对象,(2)调用getBean方法得到基于接口SearchDAO(具体见清单9) 的实例SearchImpl bean,然后再通过(3)调用具体的方法去执行存储过程。

    清单8. Code in Struts SearchAction.java.

private static ApplicationContext ctx = null; public Object getBean(String name) {|(1) if (ctx == null) { ctx = WebApplicationContextUtils .getRequiredWebApplicationContext (servlet.getServletContext()); } return ctx.getBean(name); } SearchDAO mgr = (SearchDAO) getBean("SearchImpl"); |(2) Map map = mgr.execute(custNum);|(3)

    清单9. Code in SearchDAO.java.

package com.springsproc.dao; import java.util.List; public interface SearchDAO { public Map execute(String custNum); }
0
相关文章