SSH架構確實是很煩人的一個地方,會出錯的地方很多,不是缺少包就是包重複,或是配置錯誤。我花了一整天的時間,整理了一下,構建出一個可啟動並執行項目,用的架構分別是struts2.3,hibernate3.0和spring3.1,基於註解的方法,使用的資料庫是mysql,IDE是myeclipse(其它均可)。註解的好處是不用寫許多的設定檔,本人也是比較喜歡的。
這個項目只是一個最基本的能啟動並執行由ssh2架構的項目,不包含其它功能,所以我稱它為屌絲版。後期會給它加上一些進階功能,在這先賣下關子哈哈,我還不知道要加哪些才好)。
首先建立一個eclipse web項目。其次就是添加包。這裡我就不詳細說了。因為我還沒有到大神程度,
650) this.width=650;" style="float:right;" title="1.png" alt="094140770.png" src="http://www.bkjia.com/uploads/allimg/131229/12224a436-0.png" />
不能給各位仔細解釋各個包
的用途,所以只能一股腦地加進去。這些包等下我會提供。
添加完包之後是修改web.xml檔案WEB-INF目錄下)。現在先進行struts過濾器配置,用來攔截網頁請求。如下:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>*.action</url-pattern></filter-mapping></web-app>
配置完之後在根目錄下建立一個Source Folder,我把它取名為resources,用來存放設定檔。目錄結構如下。
650) this.width=650;" title="2.png" alt="095448740.png" src="http://www.bkjia.com/uploads/allimg/131229/1222495a0-1.png" />
在resources目錄下建立一個struts.xml設定檔。配置struts的基本資料。由於需要用spring管理,所以預先加上一句<constant name="struts.objectFactory" value="spring" />
代碼如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 指定wb應用的預設編碼集 --><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 指定struts的請求尾碼,預設為action --><constant name="struts.action.extension" value="action" /><!-- 設定瀏覽器是否緩衝靜態內容,預設值為true,開發環境最好關閉 --><constant name="struts.serve.static.browserCache" value="false" /><!-- 設定檔修改時是否自動重新載入該檔案,預設值為false,開發階段最好開啟 --><constant name="struts.configuration.xml.reload" value="true" /><!-- 是否允許動態方法引動過程 --><constant name="struts.enable.DynamicMethodInvocation" value="true" /><!-- 開發模式 --><constant name="struts.devMode" value="true" /><!-- 與spring進行整合 --><constant name="struts.objectFactory" value="spring" /><!-- 上傳檔案的大小 --><constant name="struts.multipart.maxSize" value="10485760" /><include file="ref/login.xml" /></struts>
struts至此基本就配置完成了。現在開始配置spring
在resources目錄下面建立一個jdbc.properties檔案,用來儲存資料庫資訊。
#mysqljdbc.Driver=com.mysql.jdbc.Driverjdbc.Url=jdbc:mysql://localhost:3306/testjdbc.username=gyhjdbc.password=passwdhibernate.dialect=org.hibernate.dialect.MySQLDialect##sql Server#jdbc.Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver#jdbc.Url=jdbc:sqlserver://localhost:4462;DatabaseName=test#jdbc.username=sa#jdbc.password=123#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
此處我添加了mysql與sql server的資訊,前面加#號的表示注釋。
在resources目錄下面建立一個spring.xml檔案,用來配置spring,內容如下。由於將hibernate交給spring管理,所以不用添加hibernate設定檔。
<?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:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.1.xsd"><!-- 使用註解的方式 --><context:annotation-config /><!-- 自動掃描包 --><context:component-scan base-package="com.*" /><!-- 引入參數設定檔 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><!-- 配置資料來源 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"><property name="driverClass" value="${jdbc.Driver}" /><property name="jdbcUrl" value="${jdbc.Url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!--初始化時擷取的串連數,取值應在minPoolSize與maxPoolSize之間。Default: 3 --><property name="initialPoolSize" value="1"/><!-- 串連池中保留的最小串連數 --><property name="minPoolSize" value="1"/><!-- 串連池中保留的最大串連數 --><property name="maxPoolSize" value="300"/><!-- 最大空閑時間,若60秒內未使用則丟棄。預設為0,即永不丟棄 --><property name="maxIdleTime" value="60"/><!--每60秒檢查所有串連池中的空閑串連。Default: 0 --><property name="idleConnectionTestPeriod" value="60"/></bean><!-- sessionFactory --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="packagesToScan" value="com.*"/><property name="hibernateProperties"><props><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</prop><prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop></props></property></bean><!-- hibernateTemplate --><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><constructor-arg index="0"><ref bean="sessionFactory"/></constructor-arg></bean></beans>
配置好spring資訊還需要在web.xml檔案中加上spring的監聽器,修改後的web.xml內容如下
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><welcome-file-list><welcome-file>login.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></context-param><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>*.action</url-pattern></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>
至此,架構的配置基本上就完成了。現在給它加上一些功能進行測試。先在資料庫中添加資料。
代碼如下。
mysql> use test;Database changedmysql> create table tab_user(-> id int primary key auto_increment,-> username varchar(20),-> password varchar(20)-> );Query OK, 0 rows affected (0.17 sec)mysql> insert into tab_user(username,password) values('gyh','passwd');Query OK, 1 row affected (0.09 sec)
把執行過的sql檔案儲存在建立的update目錄下面。添加完成之後加上一些方法進行測試,
基本的配置至此完成。下面是目錄結構
650) this.width=650;" title="3.png" alt="112902783.png" src="http://www.bkjia.com/uploads/allimg/131229/1222496323-2.png" />
這裡是項目源碼。
本文出自 “先生有火嗎” 部落格,請務必保留此出處http://88qlp88.blog.51cto.com/4346152/1334092