日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Struts+Spring+Hibernate整合入门详解

發布時間:2025/7/14 javascript 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts+Spring+Hibernate整合入门详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

標簽:?strutshibernatespringbeanactionimport

2007-08-12 16:05?36280人閱讀?評論(13)?收藏?舉報 分類: STRUTS&SPRING&HIBERNATE(12)?

Java?5.0?

Struts?2.0.9

spring?2.0.6

hibernate?3.2.4

?????????????????????????????????????????????作者:??Liu Liu 轉載請注明出處

基本概念和典型實用例子。

一、基本概念

??????Struts:作為基于?MVC?模式的?Web?應用最經典框架,兩個項目Struts?webwork已經集成,成為現在的Struts2。目前的最新版本是2.0.92007-7)。

??????Spring?是一個輕型的容器,利用它可以使用一個外部?XML?配置文件方便地將對象連接在一起。每個對象都可以通過顯示一個?JavaBean?屬性收到一個到依賴對象的引用,留給您的簡單任務就只是在一個?XML?配置文件中把它們連接好。

??????Hibernate?是一個純?Java?的對象關系映射和持久性框架,它允許您用?XML?配置文件把普通Java?對象映射到關系數據庫表。使用?Hibernate?能夠節約大量項目開發時間,因為整個?JDBC?層都由這個框架管理。這意味著您的應用程序的數據訪問層位于?Hibernate?之上,完全是從底層數據模型中抽象出來的。

??????三種技術到目前已經比較成熟,而且他們都是免費的!讓我們對三者集成進行一個初覽(簡單而不專業):

??????我們用Struts實現從Web(網頁,MVC中的View)到后臺系統的映射(WebàAction),然后由Spring管理這些Action,把它們作為Bean和其他對象一起處理。這些Bean之間處理業務邏輯、數據、系統狀態等,且它們被Spring統一管理,為了區分,就算大概包括MVCMC部分吧。然后需要持久化的數據由SpringHibernate之間的接口交由Hibernate處理(這個屬于持久層)。

??????必須基礎:只要Java基礎,一點HTML知識、XML基礎就可以了。本文的目的就是從零開始建立第一個Struts+Spring+Hibernate應用。即使它是最簡單的,我們也希望初學者能夠從中理解一些思想,其中也包括系統架構的設計思想。

?

二、環境搭建

??????我們堅持免費才是硬道理,開源才是好事情,所以我們全部使用開源免費的工具和軟件。如果使用MyEclipse,其中的工具將有助于簡化下面演示的工程開發,但本文不用。

??????所需軟件包如下表:

序號

下載地址和文件(包)名

說明

1

JDK5.0

http://java.sun.com/javase/downloads/index.jsp

JDK5.0

2

Eclipse WTP

Eclipse?IDE for Java?EE?Developers

下載All in One,這樣不用自己下載其他插件

包含網站開發的Eclipsev3.3,下載All in One

3

HibernateSynchronizer-3.1.9

https://sourceforge.net/project/showfiles.php?group_id=99370

幫助開發Hibernate應用的Eclipse插件

4

Hibernate3

http://sourceforge.net/project/showfiles.php?group_id=40712?à?hibernate3所指示的包

Hibernate支持包

5

Spring

http://sourceforge.net/project/showfiles.php?group_id=73357

?

spring-framework-2.0.6-with-dependencies.zip

6

SpringIDE(可選)

http://springide.org/updatesite/?包名如
springide_updatesite_2.0.1_v200707300600.zip

7

Struts

http://struts.apache.org/download.cgi

?

為了較全的例子和文檔,建議下載
struts-2.0.9-all.zip否則只下載lib:struts-2.0.9-lib.zip

8

Tomcat

http://tomcat.apache.org

建議下載v5.5以上版本,應用服務器(支持JSP等)Apache項目之一

9

MySQL

?

Hibernate演示需要

?????

?

??????1、下載了eclipse以后安裝。在所安裝的目錄下有兩個子目錄pluginsfeatures,這是兩個放eclipse插件的目錄,即可以通過拷貝需要的文件到這些目錄里面,從而給eclipse添加新的功能。

??????2、將第36的包解壓,將其中的plugins目錄直接復制到eclipse安裝目錄下,選擇“全部”替換。

?

?

??????3、運行eclipse,選擇一個空目錄作為工作區(WorkSpace),啟動以后可以看到Welcome.html的歡迎界面。現在建立新工程FileàNewàProject,在打開的New Project窗口中選擇WebàDynamic Web Project。輸入Project name,在Target Runtime一項選擇新建(New),選擇你所安裝的Apache Tomcat,在彈出窗口輸入相關信息(Tomcat安裝目錄等)。

?

??????新建工程流程如下圖。

?

工程結構如下:

?

其中我們要寫的Java代碼在Java Resource: src(以后直接稱src)下,網站根目錄內容在WebContent下,類所在根目錄是WEB-INF/classesEclipse會自動將build/classes里面已經編譯的類同步過去。

?

WEB-INF下的lib目錄添加如下所列的jar包。?

1)這些包在下載解壓后SpringStrutsHibernatelib目錄或者dist/module目錄下面(如果不在,可以到網上google一把。列表中mysql-*.jar包是MySQL數據庫的JDBC Driver)。也可以把所有libdist下的jar包拷貝過來(可以在系統復制這些jar包,然后到Eclipse里面選中WEB-INF里面的lib包,然后粘帖就可以了)。但要注意全拷貝可能會存在沖突,如struts*plugin.jar等包不能引入,否則不能運行。

(2)這些Jar包是:

antlr-2.7.2.jar

cglib-nodep-2.1_3.jar

commons-beanutils-1.6.jar

commons-chain-1.1.jar

commons-collections-2.1.1.jar

commons-dbcp.jar

commons-digester.jar

commons-logging-1.0.4.jar

commons-logging-api-1.1.jar

commons-pool.jar

commons-validator-1.3.0.jar

dom4j-1.6.1.jar

el-api.jar

el-ri.jar

freemarker-2.3.8.jar

hibernate3.jar

jsf-api.jar

jta.jar

mysql-connector-java-3.0.14-production-bin.jar

ognl-2.6.11.jar

oro-2.0.8.jar

spring-hibernate3.jar

spring.jar

struts-config.xml

struts-core-1.3.5.jar

struts2-codebehind-plugin-2.0.9.jar

struts2-config-browser-plugin-2.0.9.jar

struts2-core-2.0.9.jar

struts2-jasperreports-plugin-2.0.9.jar

struts2-jfreechart-plugin-2.0.9.jar

struts2-jsf-plugin-2.0.9.jar

struts2-pell-multipart-plugin-2.0.9.jar

struts2-plexus-plugin-2.0.9.jar

struts2-sitegraph-plugin-2.0.9.jar

struts2-sitemesh-plugin-2.0.9.jar

struts2-spring-plugin-2.0.9.jar

struts2-struts1-plugin-2.0.9.jar

struts2-tiles-plugin-2.0.9.jar

tiles-api-2.0.4.jar

tiles-core-2.0.4.jar

tiles-jsp-2.0.4.jar

xwork-2.0.4.jar

三、開始工作

WebContent下建立index.jsp,建立方式如圖。

?

?

index.jsp的內容如表,我們暫時不分析。

<%@?page?contentType="text/html; charset=UTF-8"?%>

<html>

??<head>?<title>Example by Doer Liu@UTStarcom sz </title></head>

??<body>

????This is my JSP page.?<br>

????<form?name="userInfoForm"?action="login.do"?method="post">

????用戶名:?

????<input?name="username"?type="text"?/>

????密碼:

????<input?name="password"?type="password">

????<input?name="sub"?type="submit"?value="增加"?/>

????<input?name="res"?type="reset"?value="重置"?/>

??</form>

??</body>

</html>

?

此時就可以運行該工程,忙了這么久,看看效果吧。

運行方式:右鍵點擊index.jsp,選擇Run/Debug AsàRun on Server,在彈出窗口中默認我們使用的Tomcat Server,點擊finish完成。可以看到eclipse中內嵌的瀏覽器顯示我們的網頁。其中表單的輸入在我們的工程中將得到輸入數據(用戶名和密碼),這些數據會傳給我們將要建立的Action處理。

?

?

現在來看看如何建立我們的Action。在src下新建一個package(包)名為action用于保存響應Web請求的Action類。在action包下新建ActionLoginActionaction.LoginAction)如下,注意類的繼承關系。

package?action;

import?javax.servlet.http.HttpServletRequest;

import?javax.servlet.http.HttpServletResponse;

?

import?org.apache.struts.action.ActionForm;

import?org.apache.struts.action.ActionForward;

import?org.apache.struts.action.ActionMapping;

import?org.apache.struts.validator.DynaValidatorForm;

import?org.springframework.web.struts.ActionSupport;

?

//我們繼承spring提供的Action衍生類org.springframework.web.struts.ActionSupport

public?class?LoginAction?extends?ActionSupport{

?

????public?ActionForward?execute(

?????????????ActionMapping mapping,

?????????????ActionForm form,

?????????????HttpServletRequest request,

?????????????HttpServletResponse response) {

???????return?mapping.findForward("success");

???????

????}

}

?

但是現在index.jsp的內容怎么和LoginAction的數據匹配呢,我們看到LoginActionexecute方法有一個屬性ActionForm,于是我們建立一個類forms.UserInfoForm如下,繼承ActionForm

package?forms;

import?org.apache.struts.action.ActionForm;

public?class?UserInfoForm?extends?ActionForm {

????private?String username;

????private?String password;

????

????public?String getUsername() {?return?username; }

????public?void?setUsername(String username)?

????{?this.username = username; }

?

????public?String getPassword() {?return?password; }

????public?void?setPassword(String password)?

????{?this.password = password; }

}

?

?

有了兩個頭,又有了保持內容的類,現在看看我們如何用struts把他們聯系起來吧。

現在需要在WEB-INF下建立文件struts-config.xml。其中form-beans定義了表單是如何映射的,這里用我們剛剛定義的forms.UserInfoForm。

<?xml?version=”1.0”?encoding="ISO-8859-1"?>

<!DOCTYPE?struts-config?PUBLIC???"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"??????????"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

?

<struts-config>

????<form-beans>

???????<form-bean?name="userInfoForm"?type="forms.UserInfoForm"/>

????</form-beans>

????

????<action-mappings>

???????<action?attribute="userInfoForm"?path="/login"?input="/index.jsp"?type="org.springframework.web.struts.DelegatingActionProxy"

??????????????name="userInfoForm"?scope="session"?validate="false">

???????????<forward?name="success"?path="/success.html"/>

???????</action>

????</action-mappings>

</struts-config>

?

<action-mappings>中定義了我們的Action。它的屬性attribute指出Action的內容輸入是我們自定義的ActionFormpathAction賦予一個路徑,input指明只接受index.jsp的輸入,<forward標簽定義了當Action返回"success"的時候,將定向到/success.html這個網頁。?最重要的是type,它定義了這個處理這個請求的Action類,本來應該是我們自定義的LoginAction,但我們卻用了spring的一個Action,為什么?因為我們要用Spring管理我們自定義的Action。看,strutsSpring在這里就開始連接起來了。

?

但還有兩個問題,StrutsSpring又是如何知道對方的存在,如何溝通呢?Spring如何知道把控制權交給我們自定義的LoginAction呢?

我們先來解決第一個問題,web.xmlTomcat這些應用服務器管理的,因此我們在這里將strutsSpring配置聯系起來。這是整個web.xml。請看注釋。

<?xml?version="1.0"?encoding="UTF-8"?>

<web-app?version="2.5"?id="WebApp"

????xmlns="http://java.sun.com/xml/ns/javaee"?

????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?

????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?

????http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

?

<display-name>?Struts2+Spring2+Hibernate3 simple example by Doer Liu@UTstarcom</display-name>

?<!-- filter就理解為一些對網頁請求的過濾吧?-->

?<!-- encodingFilter是為了處理國際化,交由Spring處理,設置為UTF-8 -->

?<filter>

?<filter-name>encodingFilter</filter-name>

?<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

?<init-param>

?<param-name>encoding</param-name>

?<param-value>UTF-8</param-value>

?</init-param>

?</filter>

?<!-- struts?是struts的filter,這個定義就將可以將請求交給struts過濾一番了?-->

?<filter>

?<filter-name>struts</filter-name>?<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

?</filter>

?

<!--?那么哪些請求交給struts過濾呢,這里包括?/struts2spring2hib3bydoer下和根目錄/下的所有請求-->

?<filter-mapping>

?<filter-name>struts</filter-name>

?<url-pattern>/struts2spring2hib3bydoer/*</url-pattern>

?<url-pattern>/*</url-pattern>

?</filter-mapping>

?

?<!--?定義一個監聽器,處理整個WebContext,簡單的理解為整個網站的上下文環境監聽器吧這個屬于Spring-->

?<listener>

??<listener-class>

???org.springframework.web.context.ContextLoaderListener

??</listener-class>

?</listener>

?

<!-- servlet定義一個servlet為struts的ActionServlet -->

????<servlet>

???????<servlet-name>doertest</servlet-name>

???????<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

???????<load-on-startup>1</load-on-startup>

????</servlet>

?

<!-- servlet-mapping將servlet和請求對應起來,這里是所有*.do的請求交由上面定義的doertest處理?-->

????<servlet-mapping>

???????<servlet-name>doertest</servlet-name>

???????<url-pattern>*.do</url-pattern>

????</servlet-mapping>

?

<!--?定義默認返回頁,如輸入http://127.0.0.1/那么根目錄下的index.html或者其他文件就被請求?-->

????<welcome-file-list>

????????<welcome-file>index.html</welcome-file>

???????<welcome-file>index.htm</welcome-file>

???????<welcome-file>index.jsp</welcome-file>

???????<welcome-file>default.html</welcome-file>

???????<welcome-file>default.htm</welcome-file>

???????<welcome-file>default.jsp</welcome-file>

????</welcome-file-list>

</web-app>

?

?

通過web.xml兩者聯系上了。現在它們各自還需要一些配置。

Struts在我們的例子里比較簡單,在build/class下面(最終會被eclipse同步到網站的WEB-INF/classes下面)建立struts.xml

<!DOCTYPE?struts?PUBLIC

????????"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

????????"http://struts.apache.org/dtds/struts-2.0.dtd">

?

<struts>

????<include?file="struts-default.xml"?/>

</struts>

Spring的默認配置文件是WEB-INF/applicationContext.xml,目前其內容很簡單,我們只是把strutsBean放進來,如下:

映射的規則:beanname屬性必須等于struts-config.xml里面定義的actionpath屬性,class就是這個bean的類action.LoginAction

<?xml?version="1.0"?encoding="UTF-8"?>??

<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">??

?

<beans>

??<!-- Action Bean ,?對應的部分?struts-config.xml form-bean and action-mappings -->

??<bean?name="/login"?class="action.LoginAction?"?singleton="false">

???

??</property>

??</bean>

?

</beans>

?

現在在WebContent下面建立success時重定向的目標success.html,方法和index.jsp類似,但選擇THML類型,隨便輸入內容以便測試。這時候strutsSpring就簡單的連接起來了。先停掉剛才運行起來的Tomcat,重新啟動,運行index.jsp,點擊網頁中的按鈕<添加>,看看有什么效果。

現在,然我們簡略描述一下數據和請求的流程。

點擊<添加>index.jsp的這個表單發送的請求是login.do(<form name="userInfoForm" action="login.do" method="post">),請求被傳給后臺,生成了doertest(處理*.do的請求)集合的一個servlet,然后傳到path/loginaction,被Springorg.springframework.web.struts.DelegatingActionProxy處理,該類找到name是/login的Bean,轉交處理權,等待結果。這個Bean就是我們的action.LoginAction。我們的execute中返回一個forward是"success"對應的網頁,就是success.html。所以……,你已經看到了,struts和spring已經聯系起來了。OK!

?

下面我們需要把hibernate整合進來了,本來考慮到例子的簡單性,打算用更簡單的類,但既然用三者整合,就是要有良好的設計。我們需要以下幾個層次的設計:表現層,業務層,持久層。表現層就是網頁;表現層和業務層之間的接口就是網頁和action的接口,由struts處理了;業務層包括業務邏輯和事務管理等,由Spring管理,我們只是建立具體處理對象;業務層和持久層之間由數據訪問對象DAO處理,持久層交給hibernate處理。貫穿這些層的是領域對象(domain object),即表示現實世界的對象(base object),如訂單對象,人物信息對象等等。現在看看我們需要的剩余設計結構。

業務層:放進包service

數據訪問對象:?放進包dao

持久層:hibernate

領域對象:放進包bo

既然領域對象是最基本的對象,我們就得首先建立,本例中,可以借助HibernateSynchronizer生成:

首先在mysql中創建表

CREATE TABLE `userinfo` (?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????`id` int(11) primary key auto_increment,???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????`username` varchar(20) default NULL,?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????`Password` varchar(20) default NULL???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????)

?

Eclipse中,建立hibernatemap文件:右鍵點擊WEB-INF(或其他目錄都可,后面會提到如何使用該文件),選擇newàother,在彈出窗口中選擇Hibernate Mapping File。在彈出窗口輸入url,用戶名和密碼后點擊Refresh,可以看到你選擇的數據庫的表,選中userinfo表。輸入包bo,用來保存從數據庫提取的領域對象。在Properties中將Id generator改為native

?

?

HibernateSynchronizer將在WEB-INF下生成Uerinfo.hbm.xml文件。

?

右鍵點擊該文件,選擇Hibernate SynchronizeràSynchronize Files。將自動生成bo.base.BaseUserinfobo.Userinfo類。這兩個就是領域對象。工具正好啊!

?

?

現在bo包里面的對象自動生成了。

下面建立dao包中對象dao.UserinfoDAO

package?dao;

import?org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import?bo.Userinfo;

//從HibernateDaoSupport繼承,從而可以使用getHibernateTemplate().save保存數據。

public?class?UserinfoDAO?extends?HibernateDaoSupport {

?

????public?void?save(Userinfo userinfo) {

???????System.out.println("saved!");

???????getHibernateTemplate().save(userinfo);

????}

?

}

?

再建立service包中的業務對象,service.UserinfoService

package?service;

import?dao.UserinfoDAO;

import?bo.Userinfo;

package?service;

public?class?LoginService {

????private?UserinfoDAO?userinfoDAO;

?

????public?UserinfoDAO getUserinfoDAO() {

???????System.out.println("shit");

???????return?userinfoDAO;

????}

?

????public?void?setUserinfoDAO(UserinfoDAO userinfoDAO) {

???????System.out.println("LoginService:setAdminDAO");

???????this.userinfoDAO?= userinfoDAO;

????}

?

????public?void?saveinfo(Userinfo userinfo) {

?????????//進行相關業務處理,比如validate之類的。

???????userinfoDAO.save(userinfo);

????}

}

?

好了,所有我們應該建立的對象都生成了,現在把hibernate整合進來再進行一些后續處理。

首先,在applicationContext.xml文件中加入必需的Bean定義,成為如下內容,注意其中注釋。

<?xml?version="1.0"?encoding="UTF-8"?>??

<!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">??

?

<beans>

??<!-- Action Bean ,?對應的部分?struts-config.xml form-bean and action-mappings -->

??<bean?name="/login"?class="action.LoginAction"?singleton="false">

??<!-- property是該bean的屬性,如下面的property,在類LoginAction?中必有字段定義LoginService loginService;和getLoginService()以及setLoginService方法-->

??<property?name="loginService">

????<ref?bean="loginService"?/>

??</property>

??

??</bean>

?

?<!--?定義DBCP的數據庫連接屬性,該數據源會被hibernate使用,DBCP是連接池開源包,其中的url,username,password需要替換成你的數據庫訪問屬性?-->

?<bean?id="dataSource"?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://localhost/mysql</value>

??</property>

??<property?name="username">

???<value>root</value>

??</property>

??<property?name="password">

???<value>doerliu</value>

??</property>

?</bean>

?

?<!--?配置sessionFactory,?為Hibernate配置屬性??-->

?<bean?id="sessionFactory"?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

??<property?name="dataSource">

???<ref?local="dataSource"?/>

??</property>

??<property?name="mappingResources">

???<list>

????<!—Hibernate的map?文件在這里配置了,注意文件的相對位置。?-->

????<value>../Userinfo.hbm.xml</value>

???</list>

??</property>

??<property?name="hibernateProperties">

???<props>

????<prop?key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

????<prop?key="hibernate.show_sql">true</prop>

???</props>

??</property>

?</bean>

?

?<!--?業務層的事務管理由該bean管理-->

?<bean?id="transactionManager"?class="org.springframework.orm.hibernate3.HibernateTransactionManager">

??<property?name="sessionFactory">

???<ref?local="sessionFactory"?/>

??</property>

?</bean>

?

?<!--?事務處理環境(代理)配置,為業務處理LoginService定義一個事務處理*****-->

?<bean?id="userDAOProxy"?class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

??<property?name="transactionManager">

???<ref?bean="transactionManager"?/>

??</property>

??<property?name="target">

???<ref?local="loginService"?/>

??</property>

??<property?name="transactionAttributes">

???<props>

????<prop?key="save*">PROPAGATION_REQUIRED</prop>

????<prop?key="get*">PROPAGATION_REQUIRED,readOnly</prop>

????<prop?key="is*">PROPAGATION_REQUIRED,readOnly</prop>

???</props>

??</property>

?</bean>

?

?<!--?業務處理Bean定義?-->

?<bean?id="loginService"?class="service.LoginService">

??<property?name="userinfoDAO">

???<ref?bean="userinfoDAO"?/>

??</property>

?</bean>

?

?<!--?數據訪問對象的Bean -->

?<bean?id="userinfoDAO"?class="dao.UserinfoDAO">

??<property?name="sessionFactory"><ref?local="sessionFactory"/></property>

?</bean>

?

</beans>

?

最后,LoginAction可以處理請求并和業務層進行交流了。因此需要增加實質性內容:

package action;

?

/* @sample for training.

?* @author doer.liu@utstarcom

?* @date?2007-7-30

?*/

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.springframework.web.struts.ActionSupport;

?

import bo.Userinfo;

?

import forms.UserInfoForm;

?

import service.LoginService;

?

//我們繼承spring提供的Action衍生類org.springframework.web.struts.ActionSupport

public class LoginAction extends ActionSupport {

?

??????LoginService loginService;

?

??????public ActionForward execute(ActionMapping mapping, ActionForm form,

?????????????????HttpServletRequest request, HttpServletResponse response) {

???????????UserInfoForm userInfoForm = (UserInfoForm) form;

???????????String username = userInfoForm.getUsername();

???????????String password = userInfoForm.getPassword();

???????????Userinfo userinfo = new Userinfo();

???????????userinfo.setUsername(username);

???????????userinfo.setPassword(password);

???????????loginService.saveinfo(userinfo);//?保存前臺的數據,插入數據庫

?

???????????return mapping.findForward("success"); //返回頁。

?

??????}

?

??????public LoginService getLoginService() {

???????????return loginService;

??????}

?

??????public void setLoginService(LoginService loginService) {

???????????System.out.println("setLoginService=" + loginService);

???????????this.loginService = loginService;

??????}

}

?

Ok!整個流程到此就走通了。運行看看吧。還有什么說的呢,動手開始吧,在此基礎上不斷修改測試,再參考相關文檔,一切都將越來越簡單!——有問題,看日志!

??? 附件是導出的WAR文件,其中lib已被清空,只要加入文中列出的lib文件即可運行(可以將WAR導入eclipse,或者將war文件放到Tomcat的webaspps下)http://dl2.csdn.net/down4/20070806/06111224839.war

?

??????當然這個例子為了清晰起見,在各種模式,java編程習慣上是不合適的,比如應該面向接口編程,而不是統統拿類,拿對象來處理。應該定義如ILoginService, ILoginDAO等接口,使得系統更靈活,更易移植。當然為了說明,我們這樣做是可以原諒的,但工作中切記不要只圖簡單!否則還不如不用這種高級優秀的構架,因為你一用就把它破壞殆盡了。

??????讓我們前進吧

??????Day day up!

?? 頂
4
0

我的同類文章

STRUTS&SPRING&HIBERNATE(12)
  • ?struts 2學習(有關Unable to load bean: type: class:com.opensymphony.xwork2.ObjectFactory的錯誤)?2008-02-01閱讀2723
  • ?spring+hibernate+jbpm整合成功2007-07-30閱讀677
  • ?使用eclipse開發struts+spring+hibernate免費插件套裝?2007-07-24閱讀1344
  • ?Struts+Spring+Hibernate練習(完整)-轉貼?2007-07-24閱讀935
  • ?Hibernate和Spring對DAO處理的實例?2007-07-24閱讀578
  • ?Eclipse開發: Struts 2 + Spring 2 + JPA + AJAX?2007-07-30閱讀1123
  • ?struts2.0 配置篇?2007-07-25閱讀1308
  • ?Spring IoC容器-編碼方式比較?2007-07-24閱讀607
  • ?Struts+Spring+Hibernate之搭建Eclipse + MyEclipse 開發環境?2007-07-24閱讀2460
  • ?玩玩Spring之IOC?2007-07-24閱讀366
更多文章

參考知識庫

MySQL知識庫

8381關注|1396收錄

大型網站架構知識庫

1098關注|532收錄

Java EE知識庫

1120關注|581收錄

Java SE知識庫

9391關注|454收錄

Java Web知識庫

9681關注|1017收錄

轉載于:https://www.cnblogs.com/iOS-mt/p/5959662.html

總結

以上是生活随笔為你收集整理的Struts+Spring+Hibernate整合入门详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。