万里独行  
策马牧羊
日历
<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456
统计
  • 随笔 - 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 万里独行 阅读(4641) 评论(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: 博客园 模板提供:沪江博客