1.web.xml文件
<!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> <display-name>koubei-mobile-web</display-name> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param>
//这里指定了启动时查找的配置文件为applicationContext.xml,所以相关的beans应该在这个文件里配置 <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/classes/applicationContext.xml </param-value> </context-param> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> <error-page> <error-code>404</error-code> <location>/error.jsp</location> </error-page> <taglib> <taglib-uri>/struts-tags</taglib-uri> <taglib-location>/WEB-INF/struts-tags.tld</taglib-location> </taglib> </web-app>
2.pom.xml文件中要引入相应的依赖包
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.2.1.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>2.5.6</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.2.3</version> <exclusions> <exclusion> <groupId>com.sun</groupId> <artifactId>tools</artifactId> </exclusion> </exclusions> </dependency> <dependency>
<dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis</artifactId> <version>2.3.4.726</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.2.1.1</version> </dependency>
3.application.xml文件的配置
(这里我把数据源和context分开在两个文件里配置,所以application文件里只需import即可)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/spring-beans.dtd"> <beans default-autowire="byName"> <import resource="conf/client.datasource.xml" /> <import resource="conf/client.context.xml"/> </beans>
其中client.context.xml的配置如下(这个文件主要是用来spring注入的,相应的DAO、Service注册):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/spring-beans.dtd"> <beans default-autowire="byName"> <bean id="sqlExecutor" class="com.koubei.persistence.ext.LimitSqlExecutor"> <property name="dialect"> <bean class="com.koubei.persistence.dialect.MySQLDialect" /> </property> </bean> <!-- client sqlMapClient配置 --> <bean id="clientSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:/conf/sqlmapconf/client.sqlmapconfig.xml" /> <property name="dataSource" ref="clientDataSource" /> </bean> <bean id="clientReadOnlySqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation" value="classpath:/conf/sqlmapconf/client.sqlmapconfig.xml" /> <property name="dataSource" ref="clientReadOnlyDataSource" /> </bean> <bean id="clientSessionManager" class="com.koubei.persistence.SessionManager"> <property name="sqlExecutor"> <ref bean="sqlExecutor" /> </property> <property name="sessions"> <map> <entry key="read"> <ref local="clientReadOnlySqlMapClient" /> </entry> <entry key="write"> <ref local="clientSqlMapClient" /> </entry> </map> </property> </bean> <!-- DAO --> <bean id="couponDAO" class="com.koubei.coupon.web.dao.ipml.CouponDAO" autowire="byName"> <property name="sessionManager"> <ref local="clientSessionManager" /> </property> </bean> <!-- service --> <bean id="couponService" class="com.koubei.coupon.web.service.impl.CouponService" autowire="byName"> <property name="couponDAO" ref="couponDAO" /> </bean> </beans>
client.datasource.xml文件(这个文件是ibatIS连接数据库的配置):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "/spring-beans.dtd"> <beans> <bean id="clientDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://10.252.71.192:3306/coupon?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull</value> </property> <property name="removeAbandoned"> <value>true</value> </property> <property name="removeAbandonedTimeout"> <value>180</value> </property> <property name="logAbandoned"> <value>true</value> </property> <property name="maxActive"> <value>50</value> </property> <property name="validationQuery"> <value>select 1</value> </property> <property name="maxIdle"> <value>20</value> </property> <property name="maxWait"> <value>10000</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>123456</value> </property> </bean> <bean id="clientReadOnlyDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://10.252.71.192:3306/coupon?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull</value> </property> <property name="removeAbandoned"> <value>true</value> </property> <property name="removeAbandonedTimeout"> <value>180</value> </property> <property name="logAbandoned"> <value>true</value> </property> <property name="validationQuery"> <value>select 1</value> </property> <property name="maxActive"> <value>50</value> </property> <property name="maxIdle"> <value>20</value> </property> <property name="maxWait"> <value>10000</value> </property> <property name="username"> <value>test</value> </property> <property name="password"> <value>123456</value> </property> </bean> </beans>
sqlMapClient配置文件client.sqlmapconfig.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <sqlMapConfig> <settings cacheModelsEnabled="false" enhancementEnabled="true" lazyLoadingEnabled="false" errorTracingEnabled="true" maxRequests="400" maxSessions="40" maxTransactions="32" useStatementNamespaces="true" /> <sqlMap resource="conf/sqlmap/Coupon.ibatis.xml" /> </sqlMapConfig>
Coupon.ibatis.xml具体的数据库操作 插入、查询、更新等:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" > <sqlMap namespace="Coupon"> <typeAlias alias="Coupon" type="com.koubei.coupon.web.bean.Coupon"/> <resultMap class="Coupon" id="Coupon"> <result column="id" property="couponId" /> <result column="title" property="title" /> <result column="content" property="content" /> <result column="images_url" property="images_url" /> <result column="posx" property="posx" /> <result column="posy" property="posy" /> <result column="user_name" property="user_name" /> <result column="user_id" property="user_id" /> <result column="create_time" property="create_time" /> <result column="fav_num" property="fav_num" /> <result column="share_num" property="share_num" /> </resultMap> <insert id="insert" parameterClass="coupon"> <![CDATA[ INSERT INTO Coupon (id, title, content, images_url, posx, posy, user_name, user_id, create_time, fav_num, share_num) values(#couponId#, #title#, #content#, #images_url#, #posx#, #posy#, #user_name#, #user_id#, #create_time#, #fav_num#, #share_num#); ]]> </insert> </sqlMap>
这些都配置后,基本的就完成了,只需写个action以及几个页面实现一下插入操作验证一下即可,当然不要忘了struts.xml文件的配置了,action和jsp的对应。