zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    使用栈检测括号是否成对出现
    java多线程基本概述(十七)——原子性和易变性
    java多线程基本概述(十六)——捕获异常
    java多线程基本概述(十五)——DaemonThread
    java多线程基本概述(十四)——Thread内部类的几种写法
    java多线程基本概述(十三)——Executor
    java多线程基本概述(十二)——多线程与单例
    java多线程基本概述(十一)——ReadWriteLock
    java多线程基本概述(十)——Condition
    java多线程基本概述(九)——Lock(3)
  • 原文地址:https://www.cnblogs.com/zhouQing17/p/4344873.html
Copyright © 2011-2022 走看看