小荷才露尖尖角之struts的秘密
最后更新于:2022-04-01 19:49:36
我们都知道SSH是目前比较流行的一个Web应用程序开源框架,而struts又是之中的领头框架,究竟它有怎样的力量竟然可以博客IT界的眼球??一起来看!!
###一、演变之处--MVC
要了解struts必须先来了解MVC,MVC并不是Java语言所特有的设计思想,也不是Web程序所特有的思想,它是所有面向对象程序设计语言都要遵守的设计规范。简单来说,MVC将一个应用程序分为三个部分:Model(模型)、View(视图)和Controller(控制器)。这三个部分以最小的耦合来协同工作,从而最大限度的提高程序的可扩展性。
那么它们之间如何运行才能达到上述的目标呢?请看下图:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d94184d.jpg)
而struts2就是MVC的一种表现形式。下面就一起去探索初露羞面的这位姑娘!
### 二、struts的小秘密
#### 1.为什么使用
♬.它是建立在MVC这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等;
♬.其次,它是个开源项目得到了包括它的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并且经受了实战的检验,使其功能越来越强大,体系也日臻完善;
♬.它对其他技术和框架显示出很好的融合性。
#### 2.struts2应用程序的开发:
1)在web.xml文件中定义核心filter来拦截用户的请求:
由于Web应用是基于请求/响应架构的应用,所以不管哪个MVC Web框架,都需要在web.xml文件中配置该框架的核心Servlet或者filter,这样才可以让该框架介入到Web应用中:
~~~
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
~~~
2)如果需要以post方式提交用户的请求,则需要定义包含表单数据的jsp页面。但是如果仅仅是以get方式来发送请求,则无需进行该步骤;
3)定义处理用户的Action类:这一步是MVC框架中必不可少的,Action就相当于controller,主要负责调用Model中的方法来处理用户的请求。
4)配置Action。一直以来我们都有一种思维定势,使用xml文件对Action进行陪孩子,而这个过程就是指定哪个请求对应哪个Action进行处理,从而让核心控制器根据该配置来 创建合适的Action实例,并调用该Action的业务控制方法:
~~~
.............
~~~
5)配置处理结果和物理视图资源之间的对应关系:
当Action处理用户请求结束后,通常会返回一个处理结果可以认为该名称就是逻辑视图的名称,该逻辑视图需要和制定的物理资源产生关联,所以我们需要配置处理结果之间的关系:
~~~
/WEB-INF/jsp/regist.jsp
/WEB-INF/jsp/regist.jsp
/WEB-INF/jsp/login.jsp
/WEB-INF/jsp/login.jsp
index
index
/WEB-INF/jsp/regist.jsp
~~~
#### 3.实现的流程:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-03-10_56e132d958b1d.jpg)
从图中可以看出,struts2框架的控制下,用户请求不再需要向jsp页面发送,而是由核心控制器strutsPreparedAndExecuteFilter 调用 jsp页面来生成响应,此处的调用并不是直接调用,而是将请求forward到指定的jsp页面上。
关于struts2的分析就先到这里,SSH其他框架的讲解请期待接下来的博客!
';