Struts2框架执行流程以及相关问题总结

1.框架的体系结构

2.框架执行流程描述

Http请求来的时候先初始化action上下文,通过不同的过滤器后进入到核心控制器。再通过Action映射找到要调用的Action,再把请求交给Action对象代理,代理通过xml文件指代要调用的action类,找到后会创建一个actionInvocation实例,实例再进入到Action的过程中会调用配置文件中不同的拦截器,将结构返回给模板引擎,模板引擎返回渲染的结果,通过拦截器最后生成响应返回给浏览器。

3.相关问题总结

(1)学习和实验编程过程中,采用Servlet来作为控制器,有什么不足?

答:采用JSP servlet javabean来开发web应用,我们往往需要针对不同的功能来设计单独的servlet,同时进行相应的配置,造成web.xml中的内容多,当应用比较复杂的时候,容易造成控制逻辑比较混乱,不便于扩展维护

(2)为了简化开发过程,提出了多种框架,比如struts和SpringMVC框架,struts是个什么框架,主要起什么作用?

答:Struts是一个MVC框架,是MVC模式的一个实现。实际上Struts只实现了控制(Controller)层,但是对V(iew)和M(odel)都有很好的支持。事实上,任何MVC框架其实都只实现了C(Controller)部分,没有实现其它部分,但是对控制器调用业务逻辑组件、整合视图(JSP等)技术都提供了很好的支持。struts和springmvc都实现了ioc,实现了解耦,同时都支持aop开发。struts采用拦截器机制来处理用户的请求,使得业务逻辑控制器能够与servlet api完全脱离,封装了servlet中各种对象以及请求响应操作,减少了对web容器的依赖

(3)struts2各个模块的功能是什么

答:四个主要模块

—核心控制器(StrutsPrepareAndExecuteFilter)

是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用服务器上,它负责拦截所有的用户请求。

配置:

任何MVC框架都需要与web应用整合,整合须借助于web.xml文件来实现,只有配置在web.xml中的组件才会被web应用加载。

通常,所有的MVC框架都需要web应用加载一个核心控制器。对struts2,需要加载的核心控制器是StrutsPrepareAndExecuteFilter,它负责加载Struts2框架。

 Struts2将核心控制器设计成filter,不是一个普通的servlet。

—业务控制器(Action)

开发者需要实现的Struts2核心组件是业务控制器。

业务控制器就是一个action组件,其程序代码实现对用户请求的控制逻辑。

用户提交的所有请求,都会交给某个Action处理 。

 Action是一次请求的控制器,不要将业务逻辑放在Action中,业务逻辑和实现业务逻辑用到的数据对象都用JavaBean来实现,除非业务逻辑非常简单可直接写在Action中。

—Action的配置(struts.xml和struts.properties)

为了让Struts2容器知道Action的存在,并调用该Action处理用户请求,必须对Struts2的Action进行配置。

Action需要在Struts的特定配置文件struts.xml中配置。

对Action至少配置3个信息:

—Action组件所对应的类;

—Action所处理的URL,通过Action的name属性值指定;

—Action中所包含的逻辑视图与物理资源之间的对应关系。

配置Struts 2全局属性的struts.properties文件,其内容是一系列的key、value对,指定了struts2应用的全局属性。

—拦截器链(Chain of Interceptor)

拦截器(Interceptor)是完成一定通用功能的软件组件,运行在服务器端,自动捕获用户的请求,并对捕获的请求应用通用功能,如数据类型转换、国际化、文件上传、Workflow、Validation等。拦截器是Struts2框架的核心,通过拦截器,实现了AOP。Struts2使用拦截器作为装备(Advice)—通过添加一些方法的代码来完成一定的通用功能,以业务逻辑控制器为目标,创建一个业务控制器代理。是拦截器机制使得编程人员编写的业务逻辑控制器(Action)与Servlet API分离,但是又能处理HTTP请求的数据。

(4)什么是action, action有什么特点, Action的实现方式有哪几种?

答:Action只是一个控制器

Action只是一个控制器,不直接对请求生成任何响应,而是返回字符串常量。Action处理完用户请求之后,Action需要根据返回,将指定的视图资源呈现给用户。因此配置Action时,应该配置逻辑视图(常量)与物理视图资源之间的映射。

特点:

(1) 不直接对请求生成任何响应,而是返回字符串常量(execute()方法)。

(2) 不再包含Servlet API(不依赖于Servlet容器)

(3) 也不包含任何Struts2 API(不依赖于Struts2框架)

(4) 非常类似于一个POJO。

实现方式:

  1. 实现Action接口
  2. 继承ActionSupport
  3. 模型驱动, 使用单独的JavaBean实例来贯穿整个MVC流程,JavaBean实例封装请求参数和处理结果!
  4. 普通pojo类,实现execute方法


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部