SSI框架實例

 本例參照這篇Struts iBATIS Spring文,基於JDK1.5,Tomcat5.5.25,mysql-5.0.37-win32,以及Spring2.0.8,Ibatis-2.3.4.726和相應的struts,JSTL,Standard包搭建,基本思路如下:


首先建立一個基本的,可運行的框架。在可運行前提下,通用類包考慮使用最新版本包。不能確定某類包版本的情況下,選擇一個已知版本的相關類包,以該類包自帶的對應類包的版本爲準。 
逐步增加核心的功能模塊,調試可運行,再考慮增加。重複此步驟增加更多的包,抽取更多的功能增加,調試使可運行,直到完成可運行實例。 
1 類包及簡介


commons-beanutils-1.8.3.jar :爲Java的反射和內省API提供了易用的包裝接口 
commons-digester-1.8.1.jar :XML和Java對象的映射工具 
commons-logging-1.1.1.jar :提供各種日誌接口實現包的包裝接口 
log4j-1.2.16.jar :一種應用程序操作日誌服務組件 
commons-collections-3.2.1.jar:擴展了Java的Collections框架 
commons-dbcp-1.3.jar:數據庫連接池服務 
commons-pool-1.5.4.jar:普通對象池組件 
jstl.jar:JSP標準標籤庫規範的一個實現包 
standard.jar :JSP標準標籤庫規範的一個實現包 
ibatis-2.3.4.726.jar:對象和關係數據庫的數據映射框架,依賴於對象,XML和SQL語句(或存儲過程) 
spring2.0.8.jar :以輕量級,可配置方式,提供了建立企業級Java,Rich Web應用和企業集成應用功能的開源框架 
struts.jar:用來建立基於MVC架構的Web應用的開源框架,提供了請求和URI的映射處理,響應導向處理和頁面標籤庫功能 
mysql-connector-java-5.1.6-bin.jar:mysql數據庫驅動 
 


2 框架組合的配置


2.1 Struts的配置


web.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/struts-config.xml</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
    </init-param>
    <init-param>
        <param-name>detail</param-name>
        <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>


2.2 Spring和Struts的組合配置


struts-config.xml中增加:


<plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>
    <set-property
            property=”contextConfigLocation”
            value=”/WEB-INF/classes/spring.xml”/>
</plug-in>


其中的action配置形如:


<action
        path=”/employeeProcess”
        name=”employeeForm”
        type=”org.springframework.web.struts.DelegatingActionProxy”
        scope=”request”
        parameter=”dispatch”>
    <forward name=”failure” path=”/employeeForm.jsp”/>
    <forward name=”success” path=”/employees.jsp”/>
</action>


action在Spring.xml中形如:


<bean name=”/employeeSetUp” class=”net.reumann.demo.action.EmployeeAction”>
    <constructor-arg index=”0″ ref=”employeeService”/>
    <constructor-arg index=”1″ ref=”departmentService”/>
</bean>


2.3 Spring和Ibatis的組合配置


2.3.1 spring.xml中增加


<bean id=”sqlMapClient”
      class=”org.springframework.orm.ibatis.SqlMapClientFactoryBean”>
    <property name=”configLocation”>
        <value>classpath:net/reumann/demo/persistence/SqlMapConfig.xml</value>
    </property>
    <property name=”useTransactionAwareDataSource”>
        <value>true</value>
    </property>
    <property name=”dataSource”>
        <ref bean=”dataSource”/>
    </property>
</bean>


<bean id=”sqlMapClientTemplate”
      class=”org.springframework.orm.ibatis.SqlMapClientTemplate”>
    <property name=”sqlMapClient”>
        <ref bean=”sqlMapClient”/>
    </property>
</bean>


其中的bean調用形如:


<bean id=”employeeDao” class=”net.reumann.demo.persistence.EmployeeIbatisDao”>
    <property name=”sqlMapClient”>
        <ref bean=”sqlMapClient”/>
    </property>
</bean>


DAO類的實現繼承SqlMapClientTemplate類,形如:


public class DepartmentIbatisDao extends SqlMapClientTemplate implements DepartmentDao {
    public List getAllDepartments() {
        return queryForList(“Department.getAll”, null);
    }
}


2.3.2 Spring中數據源的配置


spring.xml中增加


<bean id=”propertyConfigurer” class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
    <property name=”location” value=”classpath:spring.properties”/>
</bean>


<bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
    <property name=”driverClassName” value=”${driverClassName}”/>
    <property name=”url” value=”${url}”/>
    <property name=”username” value=”${username}”/>
    <property name=”password” value=”${password}”/>
</bean>


spring.properties中配置形如:


driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/xdb1?user=root&password=&useUnicode=true&characterEncoding=gbk&autoReconnect=true&autoReconnectForPools=true
username=root
password=root


2.4 JSTL的配置


需要和Spring2.0.8匹配的jstl.jar和standard.jar兩個包,在JSP頁面頂部增加:


<%@ page contentType=”text/html;charset=UTF-8″ language=”java” %>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %>


2.5 國際化資源包配置


web.xml中增加:


<context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>MessageResources</param-value>
</context-param>  


在源碼根目錄(src)下增加MessageResources_en.properties,和本地的MessageResources_zh.properties,所有資源包都統一轉換爲UTF-8編碼。


在相應的JSP頁面完成2.4步驟前提下,增加<fmt:message key=”application.title”/>即可顯示資源包中的相應國際化鍵值。


在系統無法確認選擇何資源包情況下,默認顯示MessageResources.properties中的鍵值,否則根據操作系統的默認編碼選擇合適的資源包顯示。


另外,需要注意數據庫,應用服務器以及相關程序,頁面和配置文件的UTF-8編碼的統一。 


原創文章如轉載,請註明:轉載自瑞陽日誌 本文鏈接地址: http://johncao.info/?p=387 


本文來自: 瑞陽日誌(http://johncao.info) 原文地址:http://johncao.info/?p=387
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章