SSH框架介绍以及如何搭建(myEclipse下)
首先,SSH为Struts 2+Spring+Hibernate这三个框架的集成框架,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。是目前较流行的一种JAVA Web应用程序开源框架。
1.JAVA EE
Ø适用于小型设备和智能卡的Java 平台Micro版(Java Platform Micro Edition,Java ME)Ø适用于桌面系统的Java 平台标准版(Java Platform Standard Edition,Java SE)Ø适用于创建服务器应用程序和服务的Java平台企业版(Java Platform EnterPrise Edition,Java EE)。
![](http://images0.cnblogs.com/blog2015/726988/201503/171653564237897.png)
- 表现层:此层由系列的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.