Jaxson

Jaxson 关注TA

Jaxson

Jaxson

关注TA

  •  未知地区
  • 未知工作
  • 写了16,887字

该文章投稿至Nemo社区   Java  板块 复制链接


Struts2基础知识

发布于 2016/03/15 16:37 1,534浏览 2回复 2,122

1.   Struts2的理解

Struts 2是一款优秀的MVC框架,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,从而与Servlet API完全脱离

2. Action接收参数的方式有属性方式、JavaBean方式和ModelDriven方式

3. Struts2中实现Action类的方式有使用普通Java类,实现Action接口和继承ActionSupport,一般使用继承ActionSupport方式,因为该类实现了国际化、数据验证等功能

4. Struts2项目的开发步骤

1) 配置Sturts2开发环境

a) 下载并添加Struts2必须的jar

b) 修改web.xml配置文件,添加Struts2核心过滤器

c) 添加struts.xml配置文件

2) 添加并实现Action

3) 在struts.xml中配置

5. 简述Struts2中的控制器

1) 核心控制器:StrutsPrepareAndExecuteFilter,负责过滤所有的用户请求

2) 业务控制器:就是Action,作用为:

a) 接收数据并对数据进行封装

b) 调用业务逻辑层组件

c) 返回逻辑视图名(处理结果字符串)

6. 简述Struts2的工作流程

1) 客户发送一个HTTP请求,请求发送给Struts2核心控制器StrutsPrepareAndExecuteFilter

2) 该过滤器询问ActionMapper:判断该请求是否是一个sturts2请求

3) 若是一个 Struts2 请求,则把请求处理交给 ActionProxy

4) ActionProxy 通过 Configuration Manager 询问框架的配置文件 struts.xml,确定需要调用的 Action 类及 action 方法

5) ActionProxy 创建一个 ActionInvocation 的实例,并进行初始化;

6) ActionInvocation 实例在调用 Action 的过程前后,涉及到相关拦截器(Interceptor)的调用;

7) Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的返回结果(Result)。调用结果的 execute() 方法,渲染结果;

8) 执行各个拦截器 invacation.invoke() 之后的代码;

9) 把结果发送回客户端。

7. Action类如何访问Servlet API

1) 获取request/session/application对象attribute映射的Map对象

a) 使用ActionContext对象获取

b) Action类实现对应的RequestAware接口,重写setRequst()方法

2) 获取原生的ServletAPI

a) 使用ServletActionContext的静态方法获取

b) Action类实现对应的ServletRequestAware接口,重写对应方法

8. 逻辑视图名是Action的方法返回结果字符串

9. 为什么需要配置全局结果?全局结果的影响范围?如何配置?

1) 当所有Action需要共享某个结果时,可以定义为全局结果

2) 全局结果的影响范围为整个包的所有Action

3) 使用标签

10. 如何进行异常映射的配置?为什么要进行全局异常映射配置?

1) 单个Action的异常处理,只需要在对应的action标签中,配置指定对应异常类型跳转的逻辑视图名

2) 如果所有action的各种异常发生时都要跳转到统一的异常结果页面,则需要通过设置全局异常映射

11. 如何整合额外的sturts2配置文件:使用

12. 描述result标签下列type属性值的含义

1) dispatcher 转发,默认值

2) chain Action链式处理,将请求转发到指定Action

3) redirect 重定向到指定URL或Action

4) redirectAction 重定向到指定Action

动态方法调用的弊端:有安全隐患,暴露业务方法给用户,官方也不推荐
本文标签
 {{tag}}
点了个评