基于Eclipse搭建SSH框架详解

基于Eclipse搭建SSH框架详解

1 目的

熟悉搭建Struts2+Spring+Hibernate框架详细过程。

参考博客:http://www.cnblogs.com/sunliming/archive/2010/10/04/1842114.html

2 环境准备

  jdk版本:Jdk1.7及以上

   IDE : eclipse

  Tomcat : tomcat7.0及以上

  Maven : maven3.3

    数据库:mysql5.0以上及navicat for mysql

3 新建一个maven项目

这里以MySSH项目为例

 

 

 

 

 

4 Struts2配置

4.1 基本配置

1)在WEB-INF文件下新建lib文件,引入Struts必需的五个jar包。以后用到什么jar包,再引入。

具体包可以自己去网上下载。

 

别忘了把包加入项目中!!!

 

2)修改WEB-INF下的web.xml文件,增加struts2的配置。

 

3)添加struts配置文件。 在src/main/resources目录下,新建struts.xml。

 

4)好了,struts基本配置完毕。现在把工程发布到tomcat上去测试一下,启动tomcat,如果启动无异常,则说明配置成功。注意:可能会出现异常,根据提示引入相关jar包。我测试的时候是缺少下面三个相关jar包。

 

4.2 简单用户登录页面实现(与数据库无关)

1)首先在webapp目录下,新建一个登陆页面login.jsp。

 

2)在我们已经建好的struts.xml中来配置登录的action。这里定义登录action的名字为login。

 

3)下面就来编写具体的action类了。这里,在src/main/java目录下新建一个test包,再在该包里面新建LoginAction类。

    可以看到,该类继承了com.opensymphony.xwork2.ActionSupport,因为ActionSupport类里面包含两个登录验证的方法execute()validate()

    另外这里假设用户名为admin、密码为001。

 

4)这样,一个简单用户登录就完成了,重启tomcat测试一下吧开登录页面http://localhost:8080/MySSH/login.jsp,输入正确或错误的用户名和密码,看看有什么提示。

注意:可能会出现struts-default.xml相关异常,根据提示引入相关jar包。我的是缺少fileupload相关jar包,于是引入了commons-fileupload-1.3.1.jar。

 

 

4.3 struts.xml配置介绍

参考博客http://www.cnblogs.com/kay/archive/2007/11/28/976120.html

    配置文件:

<package name="struts2" extends="struts-default">

<action name="login" class="test.LoginAction">

<result name="success" type="redirect">index.jsp</result>

<result name="input">login.jsp</result>

<result name="error">login.jsp</result>

</action>

</package>


1)package

    package提供了将多个Action组织为一个模块的方式,package的名字必须是唯一的,package可以扩展,当一个package扩展自另一个package时,该package会在本身配置的基础上加入扩展的package的配置,父package必须在子package前配置。

name:package名称

extends : 继承的父package名称

2)action

    Action配置 一个Action可以被多次映射(只要action配置中的name不同)

name:action名称

class: 对应的类的路径

method: 调用Action中的方法名

3)result节点配置

   name : result名称,和Action中返回的值相同

type : result类型,不写则选用superpackage的type,struts-default.xml中的默认为dispatcher

5 Hibernate配置

5.1 基本配置

1)安装eclipse之Hibernate Tools插件。

 

 

这里选择JBoss Tools安装,点击安装后(我的因为安装过了,所以显示Installed),弹出一个选项框,只选择“Hibernate Tools”安装即可。在eclipse中看到下面的,表示安装成功了。

 

2)创建Hibernate配置文件。在src/main/resources目录下,新建hibernate.cfg.xml。这是hibernate连接数据库的配置文件。(因为我们安装了Hibernate Tools插件,所以可以选择自动生成)

 

 

 

 

这里选择了localhost本地数据库,选择创建了ssh数据库

 

3)创建Session工厂类HibernateSessionFactory。

    让我们先了解一下Session, Hibernate对数据库的操作是通过Session来实现的,这里的session不同于页面间传递参数的session,而是类似于JDBC中的 Connection。Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取都与session息息相关。

    Session是由HibernateSessionFactory创建的,是线程安全的,可以让多个执行线程同时存取HibernateSessionFactory而不会有数据共享的问题,但不能让多个线程共享一个Session。

eclispe里面HibernateSessionFactory不可以自动创建,所以可以去网上搜索。可参考博客:http://www.cnblogs.com/dyllove98/archive/2013/08/07/3243769.html如何理解Hibernate中的HibernateSessionFactory类。在这里还要引入hibernate-core-5.0.1.Final.jar包。

注意:别忘了把数据库驱动包引入到工程中(这里选择的mysql-connector-java-5.1.37.jar)

 

5.2 简单数据库获得数据实现

1)数据库ssh创建表user,这里我们通过navicat for mysql创建,并添加一组数据。

 

(2)创建实体类User

 

(3)创建hibernate与实体User关联文件User.hbm.xml(这里我们使用Hibernate Tools插件自带的)

 

 

 

 

 

可以看到,自动配置成功

4)在hibernate.cfg.xml里面指定映射文件User.hbm.xml

 

(5)测试实现类Test

 

(6)运行Test,注意:这里可能会报错,原因缺少以下几个包

 

7)运行成功

 

5.3 hibernate.cfg.xml配置介绍

    参考博客:http://blog.csdn.net/qiaqia609/article/details/9456489/

    配置文件:

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.password">root</property>

        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ssh</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

        

        <mapping resource="test/User.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

1)<!DOCTYPE …>

    表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。

2)<hibernate-configuration>

    声明Hibernate配置文件的开始

3)<session-factory>

    表明以下的配置是针对session-factory配置的,SessionFactory是Hibernate中的一个类,这个类主要负责保存Hibernate的配置信息,以及对Session的操作

4)<property name="hibernate.connection.driver_class">

    配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序

5)<property name="hibernate.connection.password">

    连接数据库的密码

6)<property name="hibernate.connection.url">

    设置数据库的连接url:jdbc:mysql://localhost:3306/ssh,其中localhost表示mysql服务器名称,此处为本机,3306表示端口号,ssh是数据库名

7)<property name="hibernate.connection.username">

    连接数据库的用户名

8)<property name="hibernate.dialect">

    hibernate.dialect 只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。

9)<mapping resource="test/User.hbm.xml"/>

    指定映射文件为“test/User.hbm.xml ”

10)可加入<property name="hibernate.show_sql">true </property>

是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率

5.4 User.hbm.xml配置介绍

    配置文件:

<hibernate-mapping>

    <class name="test.User" table="USER">

        <id name="id" type="java.lang.String">

            <column name="ID" />

            <generator class="assigned" />

        </id>

        <property name="userName" type="java.lang.String">

            <column name="USERNAME" />

        </property>

        <property name="password" type="java.lang.String">

            <column name="PASSWORD" />

        </property>

    </class>

</hibernate-mapping>

1)<hibernate-mapping>

    声明Hibernate配置映射文件的开始

2)<class name="test.User" table="USER">

class name——映射实体类类名,这里配置实际上“所属包名.类名”

table——实体类映射数据库

另一种方式:

    <hibernate-mapping package="test">——在开头配置所属包名

        <class name="User" table="USER">——类名

3)<id name="id" type="java.lang.String">

         <column name="ID" />

            <generator class="assigned" />

     </id>

id name——"主键在java类中的字段名"

type——"类型 "

column——"对应表中字段"

generator class——"主键生成策略"

常用的两种策略

        1) assigned——主键由外部程序负责生成,在 save() 之前指定。

        2) native——由Hibernate根据使用的数据库自行判断。

    property name——非主键在java类中的字段名

6 Spring配置

6.1 基本配置

1)通过maven的pom.xml文件注入spring所需的主要包。   

 

 

2)配置web.xml文件。Jar包引入完成后,就开始配置spring了。在这里,我们指定了spring配置文件的路径,即src/main/resources目录下的所有以applicationContext开头命名的xml文件。

 

注意:配置是可能会出现<web-app>红叉错误,原因是文档内容标签顺序不符合web-app_2_3.dtd规范,删除<!DOCTYPE 。。。。这段内容即可解决。

3)在src/main/resources目录下新建applicationContext.xml文件。并且给这个文件加上spring的标头:

 

注意:标头是4.0, 错了可能Spring就不能正确加载。

6.2 简单测试实现

这里我们还是以User类为例

1)创建SpringTest类

 

2)在applicationContext.xml中配置一个bean。

 

3)运行测试类,出现下面结果,表示配置成功。

 

7 Spring整合Struts2

     Spring与Struts的整合其实就是把Struts的Action类交给Spring来管理

1)导入jar包struts2-spring-plugin-2.1.6.jar,引入到工程中。

2)现在就来看如何把struts的action交给spring。以struts示例中的login的action为例,首先创建一个LoginAction类的Bean。在applicationContext.xml中增加如下代码:

 

这里,我们把这个bean的id设为loginAction。Scope设为prototype,含义是每一次请求创建一个LoginAction类的实例,Scope还有另一个值“singleton”意为“单例模式”。

(3)接下来修改struts.xml文件,把原来login的action的配置做如下修改:

<action name="login" class=" test. LoginAction ">改为

<action name="login" class="loginAction">

    注意到有什么区别了吗?class值设为了loginAction,即LoginAction类的bean的ID。这样我们就把LoginAction类交给了spring管理。

4)运行测试,再次开登录页面http://localhost:8080/MySSH/login.jsp,输入正确或错误的用户名和密码,看看有什么提示。如果正确运行,表示配置成功。

 

8 Spring整合Hibernate

    Spring整合Hibernate主要是对hibernate的Session进行管理,包含Session的创建、提交、关闭的整个生命周期。Spring对事务的管理应用了AOP的技术,配置前请先了解一下AOP的知识。

1)配置sessionFactory,让spring来创建Session。在applicationContext.xml中增加如下代码:

 

2)创建SpringHibernateTest类。

 

3)运行测试类,出现下面结果,表示配置成功。

 

9 SSH框架注解实现登录页面功能

1)下载注解包jsr250-api-1.0.jar,并引入工程。

2)在applicationContext.xml中配置注解:

 

2)修改LoginAction类,使用注解获得sessionFactory,进而获得session值,通过Session获得数据库数据,进行用户名和密码的验证。

 

3)运行用户登录界面实现,开登录页面http://localhost:8080/MySSH/login.jsp,输入正确或错误的用户名和密码,看看有什么提示。如果正确运行,表示配置成功。

 

输入正确用户名和密码,跳转到index.jsp页面。

附录

1)项目目录:

 

2)项目所必须的所有包:

 

(3)项目具体文档参见MySSH文件

注:项目文档暂时无法上传,如有需要可以加我博客,发给你!

猜你喜欢

转载自blog.csdn.net/clk_esunny/article/details/80250469