萬里獨行  
          策馬牧羊
          日歷
          <2008年10月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678
          統計
          • 隨筆 - 2
          • 文章 - 1
          • 評論 - 4
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          友情鏈接

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           
                  Struts和Spring的新版本變動很大,搭建開發環境時配置文件的內容也隨著改變了,前段時間為了搭建開發環境費了不小勁,現在發布出來希望能給新手一點幫助。網上關于ssh開發環境的說明都是基于Struts1.2和Spring2的,而且都是以Eclipse為IDE,當然IDE對開發環境的搭建沒有明顯的影響,但是在NetBeans下搭建ssh開發環境還是快捷得多的。
                  NetBeans6.1自帶了Spring2.5,Struts1.2,沒有Hibernate支持,所以為了搭建Struts2.0+Spring2.5+Hibernate3的開發環境,必需下載Struts2.0和Hibernate3的NetBeans插件,這都是很容易找到的,確實找不到就留下郵箱吧。在NetBeans里安裝插件的方法: 工具-插件- 已下載-添加插件-安裝。
                  好了,插件安裝完畢,重啟NetBeans后新建Web項目,修改項目名之后一路默認走下去,在框架選擇那一步把Struts2.0、Spring2.5和Hibernate勾上,完成,這樣就創建了一個具有ssh支持的Web項目。但是,要整合使用ssh還得進入最麻煩的一步:修改配置文件。下面就以一例子來說明修改配置文件的過程。
                  新建了上面的項目后,NetBeans自動為你生成了一個HelloWorld的Struts例子,就在這個例子上面改吧。
                  在源包-缺省包里有一個Struts配置文件example.xml,內容如下
          1<struts>
          2    <package name="example" namespace="/example" extends="struts-default">
          3        <action name="HelloWorld" class="example.HelloWorld">
          4            <result>/example/HelloWorld.jsp</result>
          5        </action>
          6    </package>
          7</struts>
          這只是一個簡單的action配置節,這個文件被struts.xml 包含(include),所以服務器能找到它。
          接下來是最關鍵的配置--Spring配置文件applicationContext.xml,以下內容都在<Beans>配置節里添加:
          1。首先添加數據源Bean
           1<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           2       <!-- 指定連接數據庫的驅動 -->
           3        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           4       <!-- 指定連接數據庫的URL -->
           5        <property name="url" value="jdbc:mysql://localhost:3306/sunsite"/>
           6       <!-- 指定連接數據庫的用戶名 -->
           7        <property name="username" value="root"/>
           8       <!-- 指定連接數據庫的密碼 -->
           9        <property name="password" value="123"/>
          10    </bean>
          添加mysql驅動包這些與主題不靠緊的話就不多說了,注意上面這段配置內容要根據你的實際情況配置url、username和password。
          2。讓Spring管理Hibernate
           1<!-- 管理Hibernate -->
           2    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
           3        <property name="dataSource" ref="dataSource">
           4        </property>
           5        <property name="mappingResources">
           6        </property>
           7        <property name="hibernateProperties">
           8            <value>
           9                hibernate.dialect=org.hibernate.dialect.MySQLDialect
          10            </value>
          11        </property>
          12    </bean>
          這樣就將SSH整合了。

          在源包新建類User,里面只有一個字段user
          1public class User {
          2    private String name;
          3    public String getName() {
          4        return name;
          5    }

          6    public void setName(String name) {
          7        this.name = name;
          8    }

          9}

          然后修改Action類HelloWorld.java,它繼承于com.opensymphony.xwork2.ActionSupport,繼承這個類的好處是你只需要覆蓋一個簡單的execute()并通過返回字符串來標識跳轉到的頁面。
          在HelloWorld.java添加私有字段user和對應的set方法(可在添加字段后用Netbeans的 重構-封裝字段 生成set方法)
          添加message字段和get方法(為什么這里是get?因為message是為了后面讓jsp讀取的,而user是為了讓Spring寫入的)
           1public class HelloWorld extends ActionSupport {
           2
           3    private User user;
           4    public void setUser(User user) {
           5        this.user = user;
           6    }

           7    private String message;
           8    public String getMessage() {
           9        return message;
          10    }

          11
          12    @Override
          13    public String execute() throws Exception {
          14        this.message = user.getName();
          15        return SUCCESS;
          16    }

          17}
          然后在applicationContext.xml里為User實體和HelloWorld Action增加配置節
          1<bean name="user" class="sunsite.po.User">
          2        <property name="name" value="Ruby"></property>
          3    </bean>
          4    <bean id="helloAction" class="example.HelloWorld">
          5        <property name="user" ref="user"/>
          6    </bean>

          這樣,實體和Action就在Spring的管理之下了,于是可以在example.xml這樣配置Action(修改自動生成的配置文件如下)
          1<struts>
          2    <package name="example" namespace="/example" extends="struts-default">
          3        <action name="HelloWorld" class="helloAction">
          4            <result>/example/HelloWorld.jsp</result>
          5        </action>
          6    </package>
          7</struts>
          這里class的值就是前面Spring配置文件里定義的Action Bean,每當有請求發送到HelloWorld時,就會交由這個Bean處理。
          修改HelloWorld.jsp的內容如下
           1<%@ page contentType="text/html; charset=UTF-8" %>
           2<%@ taglib prefix="s" uri="/struts-tags" %>
           3<html>
           4    <head>
           5        <title></title>
           6    </head>
           7    <body>
           8        <h2><s:property value="message"/></h2>
           9        <ul>
          10            <li>
          11                <s:url id="url" action="HelloWorld">
          12                </s:url>
          13                <s:a href="%{url}">獲得User的名字</s:a>
          14            </li>
          15        </ul>
          16    </body>
          17</html>
          運行這個頁面,點擊“獲得User的名字”超鏈接就能看見“Ruby”了,這是你在Spring配置文件里定義的。到這里Struts和Spring整合的例子就完成了,如果要把Hibernate部分也包含進去,則要增加一個dao類用作數據存取。
          首先在源包增加一個Hibernate映射文件user.hbm.xml(可用Netbeans的向導輔助)
          1<?xml version="1.0" encoding="UTF-8"?>
          2<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
          3<hibernate-mapping>
          4  <class dynamic-insert="false" dynamic-update="false" mutable="true" name="User" optimistic-lock="version" polymorphism="implicit" select-before-update="false" table="user">
          5    <property column="userName" name="name" type="string"/>
          6  </class>
          7</hibernate-mapping>
          (這里假設你已經建立mysql數據和user表,里面有userName這個字段)
          在Spring配置文件找到剛才的管理Hibernate的配置節,如下方法把Hibernate映射文件添加進去
           1<!-- 管理Hibernate -->
           2    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
           3        <property name="dataSource" ref="dataSource">
           4        </property>
           5        <property name="mappingResources">
           6            <list>
           7                <value>user.hbm.xml</value>
           8            </list>
           9        </property>
          10        <property name="hibernateProperties">
          11            <value>
          12                hibernate.dialect=org.hibernate.dialect.MySQLDialect
          13            </value>
          14        </property>
          15    </bean>

          然后在源包添加類UserDao.java
           1import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
           2
           3public class UserDao extends HibernateDaoSupport {
           4    public void save(User user) throws Exception
           5    {
           6        try
           7        {
           8            getHibernateTemplate().save(user);
           9        }

          10        catch(Exception err)
          11        {
          12            throw err;
          13        }

          14    }

          15
          16    public User getUser(String userName) {
          17        return (User)getHibernateTemplate().find("from User as u where u.name = ?", userName).get(0);
          18    }

          19}
          (必須繼承于HibernateDaoSupport ,否則無法獲取Hibernate上下文)
          代碼很容易明白,不多說了,然后在applicationContext.xml增加如下配置節
          1<bean id="userDao" class="UserDao">
          2        <property name="sessionFactory">
          3            <ref bean="sessionFactory"></ref>
          4        </property>
          5    </bean>
          這里之所以要設置sessionFactory屬性,是因為這個dao類繼承了HibernateDaoSupport ,dao類正式通過這獲得Hibernate支持的。
          然后就要修改HelloWorld.java,給它添加一個UserDao私有字段和set方法,刪掉原來的user字段。
           1public class HelloWorld extends ActionSupport {
           2
           3    private UserDao userDao;
           4    public void setUserDao(UserDao userDao) {
           5        this.userDao = userDao;
           6    }

           7
           8    @Override
           9    public String execute() throws Exception {
          10        User user = userDao.getUser("ruby");
          11        this.message = user.getName();
          12        return SUCCESS;
          13    }

          14}

          這是再運行HelloWorld.jsp,點擊“獲得User的名字”,你會看見ruby,于剛才所不同的是,這個字符是從數據庫讀出的,而不是在Spring配置文件里定義的(當然你的user數據表必須有ruby這個記錄,否則讀出空值)。

          到這里,SHH整合的例程就完成了。為了簡便起見,例子沒有考慮到有效的分層結構,全部文件直接放在了源包,但這部分不屬于如何整合SSH的范疇,所以請讀者自己摸索了。
          由于這是翻看以前寫的例子寫下的例程,所以難免代碼有錯漏,歡迎指出。
          posted on 2008-08-07 17:33 萬里獨行 閱讀(4656) 評論(4)  編輯  收藏
          評論:
          • # re: NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3開發環境  geeve Posted @ 2008-09-14 22:41
            我實在是找不到Hibernate3 for netbeans的插件,我的郵箱:geeve@126.com多謝了。。  回復  更多評論   

          • # re: NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3開發環境  ly Posted @ 2008-10-06 15:50
            非常感謝LZ分享
            我剛剛接觸netbeans 感覺挺好的.不過插件不好找...
            我的郵箱:y66901356@163.com
              回復  更多評論   

          • # re: NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3開發環境[未登錄]  test Posted @ 2009-08-17 19:07
            例子很不錯,就是 沒有用到service 這個好像不太規范   回復  更多評論   

          • # re: NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3開發環境  qinglfxy Posted @ 2012-02-01 12:48
            我找了一上午都沒找著那些插件,就找著struts2.0的了,spring2.5和Hibernate3都沒找著,LZ給我發一下吧,不勝感激,郵箱1834937158@qq.com  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
           
          Copyright © 萬里獨行 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 体育| 信阳市| 建瓯市| 蒙自县| 观塘区| 黄骅市| 改则县| 新沂市| 元谋县| 蚌埠市| 沙雅县| 北安市| 涟水县| 怀宁县| 普安县| 万盛区| 岑巩县| 读书| 晋中市| 新平| 教育| 留坝县| 靖远县| 洛宁县| 登封市| 仙居县| 桦川县| 曲水县| 普定县| 青阳县| 任丘市| 桑日县| 上杭县| 加查县| 宁波市| 仁布县| 锡林浩特市| 龙胜| 平舆县| 柞水县| 乳源|