SSH框架介绍以及如何搭建(myEclipse下)

  首先,SSH为Struts 2+Spring+Hibernate这三个框架的集成框架,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。是目前较流行的一种JAVA Web应用程序开源框架。

1.JAVA EE

     Java EE是目前开发企业级(Web)应用最流行的平台之一,是将所有Sun的企业技术集合在一个体系结构下的平台。
  java目前有三个平台:
Ø适用于小型设备和智能卡的Java 平台Micro版(Java Platform Micro Edition,Java ME)
Ø适用于桌面系统的Java 平台标准版(Java Platform Standard Edition,Java SE)
Ø适用于创建服务器应用程序和服务的Java平台企业版(Java Platform EnterPrise Edition,Java EE)。
  Java EE应用分层结构:
 
  • 表现层:此层由系列的jsp页面、Velocity页面、PDF文档视图组件组成,负责收集用户请求,并显示处理结果。
  • 控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
  • 业务逻辑层:此层由系列的业务逻辑对象组成。业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能是依赖DAO组件实现的业务逻辑方法,也可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法。
  • 数据访问对象(Data Access Object,DAO)层:此层由系列的DAO组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。
  • 领域对象(Domain Object )层:此层由系列的POJO(Plain Old Java Object,普通传统的Java对象)

2.SSH框架

  集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)  Struts 2进行流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装。整体框架和业务层用Spring,表示层用Struts,持久层用Hibernate。

Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp。Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。

Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。

Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate对JDBC进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。

以下是SSH架构图:

Struts负责Web层:

  ActionFormBean接收网页中表单提交的数据,然后通过Action进行处理,再Forward到对应的网页,在Struts-config.xml中定义了<action-mapping>,ActionServlet会加载进来。

Spring负责业务层管理,即Service:

  Service为Action提供统一的调用接口,封装持久层的DAO,并集成Hibernate,Spring可对JavaBean和事物进行统一管理。

Hibernate负责持久层,完成数据库的CRUD操作:

  Hibernate有一组hbm.xml文件和PO,是与数据库中的表相对应的,然后定义DAO,这些是与数据库打交道的类。

  在Struts+Spring+Hibernate系统中,对象之间的调用流程如下:

Struts——>Spring——>Hibernate
JSP——>Action——>Service——>DAO——>Hibernate

 分割线




 Struts:

先学习一下Struts框架的运行原理和搭建:

  我使用的开发平台是myEclipse Professional 2014

1.首先新建一个web工程:

2.为工程添加Struts2支持:

之后点击finish就可以了,然后我们就会发现在src下多了struts.xml配置文件

在struts2中,一旦读取到struts.xml文件中的内容后,内容就以javabeans的形式存放在内存里,以后struts2对用户的每次请求处理将直接使用内存中的数据,而不是再次读取xml文件。

,和struts2.1 Libraries,其中包含了一些开发所需的jar包。

3.发现web.xml配置文件也拥有了基本的内容:

4 测试能否运行:

我为myEclipse配置的tmcat版本是8,tomcat配置的过程也讲一下吧:

Windows->Preferencess->MyEclipse->Servers->tomcat

1处选择tomcat解压后的父目录,2 处选择enable,3点击一下apply,最后确定。

然后最好是把myEclipse自带的tomcat disable掉。

运行后在控制台未发现错误,所以配置成功。

接下来学习一下struts.xml配置:

模板可以在struts解压文件的app目录下解压例子打开得到:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <action name="HelloWorld" class="struts2Test/HelloWorld" method="exec">
            <result>hello.jsp</result>
        </action>
    </package>


</struts> 

 package:这里的package和java中的package的概念类似,主要用来管理一组业务功能相关的action.在实际应用中,我们应该把一系列业务相关的action放下同一package下。包还可以通过属性“abstract=true”来定义成抽象包,抽象包中不能包含action.

  name属性是必须指定的,是package的id,当其他类继承这个包时,则需要引用name属性;

  namesapce:是用来组织和重用代码的编译单元;

  extends:继承的package的名字;一般来说,每个包都应该继承struts-default包,struts-default包定义了拦截器和result类型,提供了struts2的核心功能。

action:

  name属性也是相当于id,可以通过name来引用某个action;

  class:表明当action被调用时使用哪个类;

  method:表明当action被调用时使用class中的哪个方法;(注,在struts2中action中的方法的类型的返回值指定为String)

  result中制定视图的路径

然后来新建action类和其方法:

  

package strutsTest;

public class HelloWorld {
    private String meg;
    
    public String getMeg() {
        return meg;
    }

    public String exec(){
        meg="My first atruts application";
        return "Hello world!";
    }
}

然后创建jsp文件来调用HelloWorld中的msg中的内容,也就是在jsp中显示这个字符串。

因为是只供Struts的action来使用这个jsp的,所以把这个新建的jsp放在WEB-INF目录下:

新建一个文件夹存放jsp文件:

待续:(jsp界面没运行出来,在找原因中)

一些总结:

  1.struts和servletAPI,strutsAPI没有紧密的耦合,属于无入侵式设计。

  2.提供了拦截器,利用拦截器可以进行面向切面编程(AOP),实现如权限拦截等功能。

  3.提供了类型转换器,可以把特殊的请求参数转换成需要的类型。

  4.提供多种表现层支持,eg:JSP,FreeMarker,Velocity.

  5.输入校验可以对指定的方法进行校验。

  6.提供了全局范围,包范围,action范围的global source file management.

原文地址:https://www.cnblogs.com/zhouQing17/p/4344873.html