上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.4 Struts 2项目的运行流程
下面根据上一节项目的运行流程情况,讲解Struts 2项目的运行流程,如图2.11所示。
图2.11 项目运行流程
其运行流程如下所述。
(1)浏览器请求“http://localhost:8080/Struts2/login.jsp”,发送到Web应用服务器。
(2)容器接收到了Web服务器对JSP页面中login.action的请求,根据web.xml中的配置,服务器将包含有.action后缀的请求转到“org.apache.struts2.dispatcher.FilterDispatcher”类进行处理。调用这个“FilterDispatcher”类,进入Struts 2的流程中。
(3)框架在struts.xml配置文件中查找名为“login”的action对应的类。框架初始化该Action(对数据进行了封装,并把数据放入值栈中)并且执行该Action类的execute方法(如果配置文件中指定了特定方法则会执行对应的方法,默认执行execute方法),该方法可以做一些数据处理等操作,然后返回(上节项目返回“success”)。
(4)框架检查配置以查看当返回成功时对应的页面。框架告诉容器来获得请求返回的结果页面welcome.jsp,在该页面中用EL表达式输出存在值栈中的值。(这里也可以用Struts 2提供的标签来输出)
在Struts 2框架中,Action类的调用是通过代理类ActionProxy来完成的,代理类再创建一个ActionInvocation对象,来调用程序员自定义的Action类,在调用之前会先根据配置加载Action相关的所有Interceptor(拦截器)。Struts 2就是通过一系列的拦截器来工作的。关于拦截器会在后面的章节中详细介绍。