struts2概述
1.HTTP协议
HTTP(Hypertext Transfer Protocol,超文本传输协议)主要用来定义一个客户端/服务器端通信的规范,它定义了数据以何种形式在网络中进行传递、接收。
HTTP协议有以下几个特点:
1)它是一个无状态的协议,服务器端在处理相应请求后不会保留任何客户端的信息。
2)客户端与服务器端的每一次数据交互,都要经过一次请求/响应的过程。
3)服务器端无法识别能够触发客户端请求的方法。
2.Servlet
Servlet是基于Java编程语言的服务器端编程技术,通过使用Servlet技术我们可以在服务器端获得客户的请求信息,并动态生成响应信息返回给客户端。
3.Web容器(Servlet/Jsp容器)
Servlet本身是不会主动去处理各种请求的,必须通过Web容器来管理Servlet,并为其提供所需的运行环境。Web容器的功能包括:
1)建立起Servlet与Web服务器的连接并提供两者之间的通信支持。
2)管理Servlet的生命周期。
3)提供JSP的支持。
Web容器负责将一个到来的请求映射到该容器中已经注册的Servlet,并调用Servlet的方法处理请求信息。处理完毕后,容器负责将Servlet处理生成的响应对象转换为一个HTTP响应返回给客户端。
4.Struts2框架中的MVC(Model/View/Controller)
1)控制器:Struts2框架中作为控制器的是FilterDispatcher,它是一个Servlet过滤器。
2)模型:Action在Struts2框架中是作为模型而存在的,它主要有两个功能:首先Action可以用来调用业务逻辑处理请求,其次Action可以进行数据的传递。
3)视图:Struts2框架中视图有多种形式,包括JSP、velocity、FreeMarker、Tiles等。
5.Struts2的工作流程
Struts2官方给出的工作流程图:
整个工作流程分为如下几步:
1)客户端初始化一个指向Web容器的请求。
2)请求经过一系列过滤器(Filter)的过滤并传递给FilterDispatcher。
3)FilterDispatcher接收到请求信息后,会根据URL在ActionMapper中搜索指定Action的映射信息。
4)如果找到符合的映射信息,ActionProxy通过Configuration Manager在struts.xml配置文件中搜索被请求Action的类。
5)ActionProxy创建一个被请求Action的实例,该实例将用来处理请求信息。
6)如果在struts.xml文件中存在与被请求Action相关的拦截器配置,那么该Action的实例被调用前后,这些拦截器也会先被执行。
7)Action对请求处理完毕以后返回一个逻辑视图,由此逻辑视图寻找对应的物理视图返回给客户端。