基于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项目为例

 基于Eclipse搭建SSH框架详解_第1张图片

 基于Eclipse搭建SSH框架详解_第2张图片

 基于Eclipse搭建SSH框架详解_第3张图片

 基于Eclipse搭建SSH框架详解_第4张图片

 基于Eclipse搭建SSH框架详解_第5张图片

4 Struts2配置

4.1 基本配置

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

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

 基于Eclipse搭建SSH框架详解_第6张图片

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

 基于Eclipse搭建SSH框架详解_第7张图片

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

 基于Eclipse搭建SSH框架详解_第8张图片

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

 基于Eclipse搭建SSH框架详解_第9张图片

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

 基于Eclipse搭建SSH框架详解_第10张图片

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

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

 基于Eclipse搭建SSH框架详解_第11张图片

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

 基于Eclipse搭建SSH框架详解_第12张图片

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

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

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

 基于Eclipse搭建SSH框架详解_第13张图片

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

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

基于Eclipse搭建SSH框架详解_第14张图片 

 基于Eclipse搭建SSH框架详解_第15张图片

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.jspresult>

<result name="input">login.jspresult>

<result name="error">login.jspresult>

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插件。

 基于Eclipse搭建SSH框架详解_第16张图片

 基于Eclipse搭建SSH框架详解_第17张图片

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

 基于Eclipse搭建SSH框架详解_第18张图片

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

 基于Eclipse搭建SSH框架详解_第19张图片

 基于Eclipse搭建SSH框架详解_第20张图片

 基于Eclipse搭建SSH框架详解_第21张图片

 基于Eclipse搭建SSH框架详解_第22张图片

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

 基于Eclipse搭建SSH框架详解_第23张图片

 

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)

 基于Eclipse搭建SSH框架详解_第24张图片

 

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

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

 基于Eclipse搭建SSH框架详解_第25张图片

 

(2)创建实体类User

 基于Eclipse搭建SSH框架详解_第26张图片

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

 基于Eclipse搭建SSH框架详解_第27张图片

 基于Eclipse搭建SSH框架详解_第28张图片

 基于Eclipse搭建SSH框架详解_第29张图片

 基于Eclipse搭建SSH框架详解_第30张图片

 基于Eclipse搭建SSH框架详解_第31张图片

可以看到,自动配置成功

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

基于Eclipse搭建SSH框架详解_第32张图片 

(5)测试实现类Test

 基于Eclipse搭建SSH框架详解_第33张图片

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

 基于Eclipse搭建SSH框架详解_第34张图片

7)运行成功

 基于Eclipse搭建SSH框架详解_第35张图片

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.Driverproperty>

        <property name="hibernate.connection.password">rootproperty>

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

        <property name="hibernate.connection.username">rootproperty>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialectproperty>

        

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

    session-factory>

hibernate-configuration>

 

1)>

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

2)

    声明Hibernate配置文件的开始

3)

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

4)

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

5)

    连接数据库的密码

6)

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

7)

    连接数据库的用户名

8)

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

9)

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

10)可加入true 

是否在后台显示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——实体类映射数据库

另一种方式:

    ——在开头配置所属包名

        <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所需的主要包。   

 基于Eclipse搭建SSH框架详解_第36张图片

 基于Eclipse搭建SSH框架详解_第37张图片

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

 基于Eclipse搭建SSH框架详解_第38张图片

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

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

 基于Eclipse搭建SSH框架详解_第39张图片

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

6.2 简单测试实现

这里我们还是以User类为例

1)创建SpringTest类

 基于Eclipse搭建SSH框架详解_第40张图片

 

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

 基于Eclipse搭建SSH框架详解_第41张图片

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

 基于Eclipse搭建SSH框架详解_第42张图片

 

 

 

 

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中增加如下代码:

 基于Eclipse搭建SSH框架详解_第43张图片

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

 

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

改为

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

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

 基于Eclipse搭建SSH框架详解_第44张图片

 

 

8 Spring整合Hibernate

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

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

 基于Eclipse搭建SSH框架详解_第45张图片

2)创建SpringHibernateTest类。

 基于Eclipse搭建SSH框架详解_第46张图片

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

 基于Eclipse搭建SSH框架详解_第47张图片

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

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

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

 基于Eclipse搭建SSH框架详解_第48张图片

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

 基于Eclipse搭建SSH框架详解_第49张图片

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

 基于Eclipse搭建SSH框架详解_第50张图片

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

附录

1)项目目录:

 基于Eclipse搭建SSH框架详解_第51张图片

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

 基于Eclipse搭建SSH框架详解_第52张图片

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

注:项目文档可以到我的资源里面下载!

你可能感兴趣的:(java)