Java之基於Eclipse搭建SSH框架(下)


在上篇博客里,我簡單介紹了Tomcat滴配置與Struts2滴搭建,如果對這個還不會滴童鞋去看一下我滴上篇博客《Java之基於Eclipse搭建SSH框架(上)》。今天我們接着上篇博客滴內容,繼續搭建我們滴SSH框架。
(一)在上篇博客滴基礎上整合Spring:
首先我們把Spring所需要的jar(上篇博客有),復制到WebContent下的WEB-INF下的lib里面。其次在src下創建名為:applicationContext.xml文件。(有些人提示在WEB-INF下創建)個人建議在src下創建
Spring配置文件有兩種格式:DTD格式;Schema格式。
基於DTD格式的配置文件格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<beans>
<!-- Service配置 -->
<bean id="loginService" class="com.hy.service.impl.LoginServiceImpl" />
</beans>

Schema格式的配置文件擁有自己的命名空間,格式如下:

<?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:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>

<!-- Service配置 -->
<bean id="loginService" class="com.hy.service.impl.LoginServiceImpl" />
</beans>

這里我用的是第二種配置方式。applicationContext.xml內容為:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>

<!-- Service配置 -->
<bean id="loginService" class="com.hy.service.impl.LoginServiceImpl" />
<!-- Action配置 -->
<bean id="loginServer" class="com.hy.action.LoginAction" scope="prototype">
<property name="loginService" ref="loginService"></property>
</bean>
</beans>

在struts里面這樣配置就可以了:

    <package name="struts2" extends="struts-default">
<!-- 此處的class的內容要與Spring配置文件中的bean的id相同 -->
<action name="Login" class="loginServer">
<result name="success">/result.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>

這里要注意的是在struts.xml文件里面的action配置中,class=”“與我們上篇博客講的Struts搭建不一樣了。這里的class內容與applicationContext.xml里面的Action配置bean的id是相同的!!!
其次在web.xml我們需要在添加下面這些代碼:

    <!-- 用來定位Spring框架配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml,classpath*:applicationContext*.xml</param-value>
</context-param>
<!-- 配置Spring監聽 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

這樣集成Spring所要配置的文件算是結束了,還有一點要強調整合Struts與Spring需要一個jar(struts2-spring-plugin-2.3.8.jar),這個jar我放到了struts2所需jar里面了,添加了這個jar才算把Struts與Spring整合在一起了。
在集成Hibernate前,說一下關於Spring XML文件上下文配置問題。applicationContext.xml其實這個文件可以保存到classpath或者WEB-INF文件下。隨着項目增大,Spring的配置文件也會變得龐大,可以根據已定的原則分為幾個配置文件,從而使配置更加清晰,提高可維護性。上面代碼中的寫法是查找classpath和WEB-INF文件下所有的配置文件(好多人都說了其中一種,如果寫的查找和文件保存位置不一樣,就會報錯哦~)。
測試一下,整合情況,效果圖如下:
這里寫圖片描述
莫急哈~~demo我會在下面給大家,請大家看清里面的網址,因為這個demo里面也包括最后SSH的搭建測試。
(二)集成Hibernate
首先還是把Hibernate所需要的jar(上篇博客有),復制到WebContent下的WEB-INF下的lib里面。然后在applicationContext.xml中添加下面的配置:

    <!-- 配置數據源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">

<!-- 指定連接數據庫的驅動 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!-- 指定連接數據庫的URL -->
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<!-- 指定連接數據庫的用戶名 -->
<property name="username" value="root" />
<!-- 指定連接數據庫的密碼 -->
<property name="password" value="" />
</bean>
<!-- 配置SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.autocommit">true </prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="sql_format">true</prop>
</props>
</property>
<property name="mappingResources">
<!-- 指定hibernate映射文件 -->
<list>
<value>com/hy/entity/User.hbm.xml</value>
</list>
</property>
</bean>

到這里框架就算搭建完畢了。有人會有疑惑,不是要創建hibernate.cfg.xml或者hibernate.properties配置嘛,其實在上面的配置文件中,你是不是發現有一個bean中的文件特別像這兩個文件中的內容嘛,其實這樣就可以了,不用再創建那兩個文件了。
在此說明一下如果你的數據庫是MySQL配置按照上面那種方式配置,別忘了添加對應的jar(有人告訴我:jar包也要與自己的數據版本對應,否則連不上)。如果你的數據庫是Oracle,配置按照下面圖中進行配置。
這里寫圖片描述
最后在說一下Hibernate映射文件(類與表之間的關系映射)

<hibernate-mapping>
<class name="類名" table="表名">
<!-- 主鍵 -->
<id name="主鍵名">
<column name="主鍵列" />
<!-- 主鍵生成器 -->
<generator class="生成策略" />
</id>
<property name="屬性名" type="數據類型">
<column name="列名" length="長度" not-null="是否不為空" />
</property>
</class>
</hibernate-mapping>

測試一下,效果圖:

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

搭建SSH到這里就結束啦,如有疑問,請給我留言~~
近期有小伙伴反映,看了偶滴博客然后跟着做還是報錯,總結了他們的錯誤這里我簡單說明一下:
1.如果親還沒有配置Spring,就不要把(struts2-spring-plugin-2.3.8.jar),這個jar包提前導入到項目里(這是我滴錯,把這個jar包放到struts所需的包包里面了),如果按我的博客驗證struts時出錯,那就把這個包刪除即可。(整合Spring別忘了導入哦~)
2.就是配置問題:(上圖,有圖有真相~)
這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述
配置文件和代碼里面的名字要對應,不然就出錯哦~
3.就是我們的框架用到Hibernate,童鞋們都知道寫映射表,但是別忘了配置文件中指定。
這里寫圖片描述

最后附上:
demo地址


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com