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
首先建立一個基本的,可運行的框架。在可運行前提下,通用類包考慮使用最新版本包。不能確定某類包版本的情況下,選擇一個已知版本的相關類包,以該類包自帶的對應類包的版本爲準。
逐步增加核心的功能模塊,調試可運行,再考慮增加。重複此步驟增加更多的包,抽取更多的功能增加,調試使可運行,直到完成可運行實例。
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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.