Struts+spring+Hibernate+Mysql--環境搭建

00潤物無聲00發表於2016-05-03

    看完SSH的day01,基本上理解了一條線的過程,但那種感覺就像是盲人摸象一樣,有了一些的程式碼經驗之後,又回頭重新看了一下SHH網上商城環境的搭建;撥開雲霧見晴天,總結一下環境搭建的過程;


一.導航地圖

    第一天完成之後的,導航地圖如下;

        


    下圖是對上面導航檢視中基本內容的分析,同時也是搭建過程。

二.巨集觀三步驟:


    1.建立Web工程,選擇JavaEE 5.5;

    2.jar包的引入和配置檔案的設定;(總結配置檔案)


1).struts2:

   在Web.xml中,配置struts2核心過濾器;

	<filter> 
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
    在Struts.xml中配置頁面轉向;

<struts>
   <constant name="struts.devMode" value="false" />
	<package name="Shop" extends="struts-default" namespace="/">
	 <!-- 很多的頁面都要往這裡跳轉;全域性  ;帶回來一些資訊;-->
	<span style="white-space:pre">	</span><global-results>
		<span style="white-space:pre">	</span><result name = "msg">/WEB-INF/jsp/msg.jsp</result>			
	<span style="white-space:pre">	</span></global-results>
	
    <!-- 配置首頁訪問的Action -->
		<action name="index" class="indexAction">
			<result name="index">/WEB-INF/jsp/index.jsp</result>
		</action>
	<!--  配置使用者模組的Action-->
		<action name="user_*" class="userAction"  method="{1}">		
			<result name="registPage">/WEB-INF/jsp/regist.jsp</result>
			<result name = "input">/WEB-INF/jsp/regist.jsp</result>
			<result name = "loginPage">/WEB-INF/jsp/login.jsp</result>				
			<result name = "login">/WEB-INF/jsp/login.jsp</result>					
		</action>
  <span style="white-space:pre">	</span></package>        
</struts>

2).Spring

    在Web.Xml中,配置Spring的核心監聽器;

	<!-- 配置Spring的核心監聽器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>		
	</listener>
	<context-param>
	<!-- 全域性重要引數 預設載入的web-inf下的applicationContext,需要載入類編譯路徑下面,所以要配置一個引數classpath:路徑為Src下的applicationContext.xml檔案-->
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
    applicationContext.xml 屬於Spring;

3).Hibernate

    資料庫驅動,連線池;

    在applicationContext.xml中配置Hibernate的相關資訊;

	 <!-- Hibernate的相關資訊 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<!-- 注入連線池 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 配置Hibernate的其他的屬性 -->
		<property name="hibernateProperties">
			<props>
	 			<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.connection.autocommit">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
	 	<!-- 配置Hibernate對映檔案 -->
	 	<property name="mappingResources">
	 	<list>
	 	        <value>cn/itcast/shop/user/vo/User.hbm.xml</value>
	 	</list>
	 	</property>
	 		
	 </bean>

    3.基本資訊的配置



1.jdbc.properties中配置連線資料庫;

</span>jdbc.driver = com.mysql.jdbc.Driver
</span>jdbc.url = jdbc:mysql:///shop
</span>jdbc.user = root
</span>jdbc.password =123456
2.applicationContext.xml中配置;

    配置連線池:

	 <!-- 配置連線池: -->
	<!-- 引入外部屬性檔案  classpath:jdbc.properties  -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<!-- 配置C3P0連線池: 獲得值-->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="driverClass" value="${jdbc.driver}"/>
		<property name="jdbcUrl" value="${jdbc.url}"/>
		<property name="user" value="${jdbc.user}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>
   事務管理

	<!-- 事務管理: -->
	<!-- 事務管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	
	<!-- 開啟註解事務 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
	 
3. Hibernate的相關資訊 (上面配置Hibernate的時候已經提到了)

4.各層的配置;

 <span style="white-space:pre">	</span><!-- ===============================Action 的配置=============================-->
	<!-- 首頁訪問的Action -->
	<bean id="indexAction" class="cn.itcast.shop.index.action.IndexAction" scope="prototype">
	</bean>
	<!-- 使用者模組的Action -->
	<bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
		<!-- 注入Service -->
		<property name="userService" ref="userService"/>
	</bean>	
	<!--================================= Service的配置  ===========================-->
	<bean id="userService" class="cn.itcast.shop.user.service.UserService">
		<property name="userDao" ref="userDao"/>
	</bean>
	<!-- =================================Dao的配置  ===========================-->
	<bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>


三.總結:

    剛開始的過程,可以先做,有了實踐之後,更應該在原理上進行理解,然後再次用已經理解的理論來指導實踐,會更加清晰,理論和實踐是一個需要不間斷磨合的過程,理論是核心,實踐的應用;整體上進行了一個理解,在之後的過程中,細化理解的粒度;