天天看点

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

 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

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< struts >

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < package  name ="example"  namespace ="/example"  extends ="struts-default" >

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < action  name ="HelloWorld"  class ="example.HelloWorld" >

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < result > /example/HelloWorld.jsp </ result >

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ action >

6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ package >

7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

</ struts > 这只是一个简单的action配置节,这个文件被struts.xml 包含(include),所以服务器能找到它。

接下来是最关键的配置--Spring配置文件applicationContext.xml,以下内容都在<Beans>配置节里添加:

1。首先添加数据源Bean

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< bean  id ="dataSource"  class ="org.springframework.jdbc.datasource.DriverManagerDataSource" >

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        <!--  指定连接数据库的驱动  -->

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="driverClassName"  value ="com.mysql.jdbc.Driver" />

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        <!--  指定连接数据库的URL  -->

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="url"  value ="jdbc:mysql://localhost:3306/sunsite" />

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        <!--  指定连接数据库的用户名  -->

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="username"  value ="root" />

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        <!--  指定连接数据库的密码  -->

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="password"  value ="123" />

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean > 添加mysql驱动包这些与主题不靠紧的话就不多说了,注意上面这段配置内容要根据你的实际情况配置url、username和password。

2。让Spring管理Hibernate

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

<!--  管理Hibernate  -->

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

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

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="dataSource"  ref ="dataSource" >

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="mappingResources" >

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="hibernateProperties" >

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < value >

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                hibernate.dialect=org.hibernate.dialect.MySQLDialect

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             </ value >

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean > 这样就将SSH整合了。

在源包新建类User,里面只有一个字段user

1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

public   class  User  {

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    private String name;

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public String getName() {

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        return name;

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public void setName(String name) {

7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        this.name = name;

8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

}

然后修改Action类HelloWorld.java,它继承于com.opensymphony.xwork2.ActionSupport,继承这个类的好处是你只需要覆盖一个简单的execute()并通过返回字符串来标识跳转到的页面。

在HelloWorld.java添加私有字段user和对应的set方法(可在添加字段后用Netbeans的 重构-封装字段 生成set方法)

添加message字段和get方法(为什么这里是get?因为message是为了后面让jsp读取的,而user是为了让Spring写入的)

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

public   class  HelloWorld  extends  ActionSupport  {

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    private User user;

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public void setUser(User user) {

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        this.user = user;

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    private String message;

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public String getMessage() {

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        return message;

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    @Override

13

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public String execute() throws Exception {

14

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        this.message = user.getName();

15

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        return SUCCESS;

16

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

17

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

} 然后在applicationContext.xml里为User实体和HelloWorld Action增加配置节

1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< bean  name ="user"  class ="sunsite.po.User" >

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="name"  value ="Ruby" ></ property >

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean >

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < bean  id ="helloAction"  class ="example.HelloWorld" >

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="user"  ref ="user" />

6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean >

这样,实体和Action就在Spring的管理之下了,于是可以在example.xml这样配置Action(修改自动生成的配置文件如下)

1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< struts >

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < package  name ="example"  namespace ="/example"  extends ="struts-default" >

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < action  name ="HelloWorld"  class ="helloAction" >

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < result > /example/HelloWorld.jsp </ result >

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ action >

6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ package >

7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

</ struts > 这里class的值就是前面Spring配置文件里定义的Action Bean,每当有请求发送到HelloWorld时,就会交由这个Bean处理。

修改HelloWorld.jsp的内容如下

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

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

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

<% @ taglib prefix="s" uri="/struts-tags"  %>

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< html >

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < head >

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < title ></ title >

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ head >

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < body >

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < h2 >< s:property  value ="message" /></ h2 >

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < ul >

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < li >

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                 < s:url  id ="url"  action ="HelloWorld" >

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                 </ s:url >

13

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                 < s:a  href ="%{url}" > 获得User的名字 </ s:a >

14

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             </ li >

15

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ ul >

16

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ body >

17

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

</ html > 运行这个页面,点击“获得User的名字”超链接就能看见“Ruby”了,这是你在Spring配置文件里定义的。到这里Struts和Spring整合的例子就完成了,如果要把Hibernate部分也包含进去,则要增加一个dao类用作数据存取。

首先在源包增加一个Hibernate映射文件user.hbm.xml(可用Netbeans的向导辅助)

1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

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

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< hibernate-mapping >

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

   < class  dynamic-insert ="false"  dynamic-update ="false"  mutable ="true"  name ="User"  optimistic-lock ="version"  polymorphism ="implicit"  select-before-update ="false"  table ="user" >

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     < property  column ="userName"  name ="name"  type ="string" />

6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

   </ class >

7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

</ hibernate-mapping > (这里假设你已经建立mysql数据和user表,里面有userName这个字段)

在Spring配置文件找到刚才的管理Hibernate的配置节,如下方法把Hibernate映射文件添加进去

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

<!--  管理Hibernate  -->

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

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

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="dataSource"  ref ="dataSource" >

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="mappingResources" >

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < list >

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                 < value > user.hbm.xml </ value >

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             </ list >

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="hibernateProperties" >

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < value >

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

                hibernate.dialect=org.hibernate.dialect.MySQLDialect

13

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             </ value >

14

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

15

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean >

然后在源包添加类UserDao.java

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

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

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

public   class  UserDao  extends  HibernateDaoSupport  {

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public void save(User user) throws Exception

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    {

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        try

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        {

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

            getHibernateTemplate().save(user);

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        }

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        catch(Exception err)

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        {

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

            throw err;

13

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        }

14

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

15

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

16

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public User getUser(String userName) {

17

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        return (User)getHibernateTemplate().find("from User as u where u.name = ?", userName).get(0);

18

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

19

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

} (必须继承于HibernateDaoSupport ,否则无法获取Hibernate上下文)

代码很容易明白,不多说了,然后在applicationContext.xml增加如下配置节

1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

< bean  id ="userDao"  class ="UserDao" >

2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         < property  name ="sessionFactory" >

3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

             < ref  bean ="sessionFactory" ></ ref >

4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

         </ property >

5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

     </ bean > 这里之所以要设置sessionFactory属性,是因为这个dao类继承了HibernateDaoSupport ,dao类正式通过这获得Hibernate支持的。

然后就要修改HelloWorld.java,给它添加一个UserDao私有字段和set方法,删掉原来的user字段。

 1

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

public   class  HelloWorld  extends  ActionSupport  {

 2

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

 3

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    private UserDao userDao;

 4

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public void setUserDao(UserDao userDao) {

 5

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        this.userDao = userDao;

 6

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

 7

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

 8

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    @Override

 9

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    public String execute() throws Exception {

10

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        User user = userDao.getUser("ruby");

11

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        this.message = user.getName();

12

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

        return SUCCESS;

13

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

    }

14

NetBeans6.1下搭建Struts2.0+Spring2.5+Hibernate3开发环境

}

继续阅读