SSH框架的搭配使用的小例子

SSH框架是指Struts、Spring和Hibernate。

Struts2框架

Struts2框架是MVC(Model, View & Controller)框架。说到MVC框架,可以认为实现了MVC思想。MVC思想中,一个应用被划分三部分:模型(Model)、视图(View)和控制器(Controller)。
模型:负责封装数据模型和业务逻辑。比如,数据库的底层操作、操作数据的业务逻辑方法都封装在模型中。在Struts2的action中,通过调用模型的方法,来操纵数据库的数据。
视图:用来将数据展示给用户,因为模型中的数据一般存在于数据库之中,要想在网页上展示,就需要通过例如jsp,velocity等脚本语言来展示。
控制器:用来控制应用程序的流程和处理用户的请求。
例如,控制器发出一个注册的请求,则控制器接受这一个请求,并调用业务逻辑方法,在数据库相应的表中添加用户的注册信息。之后,将视图页面(如jsp文件和velocity文件)返回给用户。并且,这些视图页面能够获取和解析模型的数据,在网页上呈现出来。
参考[1],各个组件的关系如图:
这里写图片描述

Hibernate框架

为了解决主流数据库仍然为关系数据库,而许多编程语言为面向对象的语言这样的麻烦,出现了ORM(Object/Relation Mapping),对象/关系数据库映射。Hibernate和Mybatis是使用人数比较多的、解决这一问题的两个持久层框架。
Hibernate实现了POJO(Plain Old Java Object)[2]和数据库表操作(比如,基础的CRUD操作,即create,retrieve,update和delete)之间的映射,和SQL代码的自动生成,使得Java程序员可以面向对象的方式操作数据。使用Hibernate框架后,Java程序员只需要做两件事:写数据库表对应的PO(Persistence Object,持久化类)和写访问数据库的方法(一般只需要调用Hibernate提供的方法即可,这些方法封装了基本的CRUD等操作)。

Spring框架

提起Spring,印象最深的大概是IoC(Inversion of Control,控制反转,或者称为Dependency Injection,依赖注入)和AOP(Aspect of Programming,面向切面编程)。Spring完整的框架如下图[3]:
这里写图片描述

其中,Core Container实现基本的控制反转功能,AOP实现面向切面编程。从图中可以看出,Spring还能与多种持久层技术整合,提供Web框架。
控制反转:当调用者要调用被依赖对象的方法时,不必主动创建被依赖的对象(例如,通过new关键字),而是由Spring容器通过解析xml配置文件,创建对象并赋给调用者中的变量(这个变量代表被依赖对象,一般为这个个类的父接口)。这样,降低了程序之间的耦合。
面向切面编程:对于日志记录、安全检查等这样的代码,存在于程序的各个部分,如果每个部分都分别单独写,则比较烦,也比较繁,做不到代码复用。当需要修改日记代码部分时,各个地方都要修改,挺费时费力的。Spring AOP则可以解决这个问题。
除了SSH组合,还有Spring MVC+Spring+MyBatis组合。Spring MVC代替Struts2的功能,MyBatis代替Hibernate的功能。

本人小白,前几段时间学习了我接触的几个Java框架:SSH。照着教材写了一个有7个PO的小型应用,觉得对于初学者理解框架太复杂了,于是,自己参考着教材写了一个只有一个PO的实现类似注册功能的例子.(本意是实现英国脱欧公投的网站,当然,本小程序没有考虑那么多复杂的问题,目的只是练习使用SSH框架而已。)
功能:在页面填写信息,提交,然后就可以在数据库中插入一条记录。
使用:
(1)将SSHInquiry文件夹放到apache-tomcat的webapps路径下;
(2)在mysql数据库中新建名为sshInquiry的数据库;
(3)修改WEB-INF路径下的文件applicationContext.xml中,第20-21行,mysql的user和password为你自己的用户名和密码;
(4)使用ant重新生成class文件;(步骤:打开cmd窗口,输入ant,回车即可)
(5)打开localhost,在SSHInquiry项目中,输入voteForm,然后就会出现填写信息的页面啦。填好后,提交,就可以在数据库中插入一条记录了。
下载地址:https://yunpan.cn/c6uJTLUEfDvTw 访问密码 5cc2

这里只是很简单的介绍,目的是对于前段时间的学习有个总结。

如果发现问题,欢迎评论,共同进步。

参考

[1]Struts2与MVC基础入门链接:
http://www.cnblogs.com/lyp3314/archive/2013/01/24/2875853.html
[2]什么是POJO?这是我从网上摘的解析,不知道是wikipedia,还是stackoverflow。
POJO:an ordinary java object, not bound by any special restriction, not requiring any class path.(对于非核心类库不具有依赖)。
比较显著的几点要求是:
(1)默认的无参构造器;
(2)遵守Bean的约定,例如,对于可变的属性,有getFoo()和setFoo()方法。如果属性不可变,则忽略setFoo()方法;
(3)实现java.io.Serializable
[3]Spring框架的官方介绍链接:
http://spring.oschina.mopaas.com/overview.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值