OgnlValueStack贯穿整个 Action 的生命周期。

它是ContextMap中的一部分,里面的结构是一个List,是我们可以快速访问数据一个容器。它的封装是由struts2框架完成的。

通常情况下我们是从页面上获取数据。

  1. 请阐述一下ValueStack的内部结构

在 OnglValueStack 中包含了一个CompoundRoot的对象,该对象继承了ArrayList,并且提供了只能操作集合第一个元素的方法,所以我们说它实现了栈的特性。同时,它里面定义了一个ContextMap的引用,也就是说,我们有值栈对象,也可以通过值栈来获取ContextMap。

1. 继承AbstractInterceptor继承MethodFilterInterceptor的区别

答:MethodFilterInterceptor多了一个功能,就是告知拦截器哪些方法我们需要拦截,哪些方法我们不需要拦截。推荐使用。

1. 【简答题】拦截器和过滤器的区别

答:

拦截器:

拦截器是struts2框架自己的,只有使用了struts2框架的工程才能用。

拦截器它是只有进入struts2核心内部之后,才会起作用,如果访问的是jsp, html,css,image或者js是不会进行拦截的。

过滤器:

过滤器是servlet规范中的一部分,任何java web工程都可以使用。

过滤器在url-pattern中配置了/*之后,可以对所有要访问的资源拦截。

1、①拦截器是基于java的反射机制的,而过滤器是基于函数回调

2、②过滤器依赖与servlet容器,而拦截器不依赖与servlet容器

3、③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

4、④拦截器可以访问action上下文、值栈里的对象,而过滤器不能

5、⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

拦  拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

配置拦截器 并不拦截login方法

<package name="myDefault" extends="struts-default">
<!-- 声明拦截器 -->
<interceptors>
<interceptor name="checkLogin"
class="cn.itcast.action.CheckUserInterceptor"/>
<!-- 定义一个拦截器栈 -->
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="checkLogin">
<!-- 由于我们使用了继承MethodFilterInterceptor, 此时我们可以告知拦截器,排除掉登录方法 -->
<param name="excludeMethods">login</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<!-- 修改默认拦截器栈,设置我们自定义的拦截器栈, 这样的话我们写的所有动作都有了检查登录功能。并且排除了登录方法 -->
<default-interceptor-ref name="myDefaultStack" />

1. 举例Struts2中通过拦截器实现了哪些功能?

答案:

参数绑定、参数校验、类型转换等

1. struts2有哪些优点?

答案:

1)在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计;

2)拦截器,实现如参数拦截注入等功能

3)类型转换器,可以把特殊的请求参数转换成需要的类型;

4)多种表现层技术,如:JSP、freeMarker、Velocity等;

5)Struts2的输入校验可以对指定某个方法进行校验;

6)提供了全局范围、包范围和Action范围的国际化资源文件管理实现

支持全局结果视图

支持Ognl  

Struts第三天的更多相关文章

  1. (三)、Struts第三天

    (三).Struts第三天 Struts核心业务: (Struts提供了哪些功能?) 1.  请求数据自动封装(params拦截器) 2.  struts数据处理方式 * ActionContext ...

  2. Struts 2三种方式实现Ajax

    Ajax本质上和普通的HTTP请求是一样的,只不过普通的HTTP请求是给人看的,而Ajax请求是给JS代码去用的. 所以Ajax请求的页面一般比普通的HTTP请求的响应内容还要简单,可能是一个页面的一 ...

  3. SSH—Struts(三)—跑步者(Action)

    如已经描述Struts其基本原理和控制器ActionServlet,根据一个请求通过流ActionServlet之后就要到达Action类中做详细的处理了.ActionServlet通过ActionM ...

  4. struts 2 三目运算

    <s:set id="styleList" value="{'default','success','warning'}"/> <s:iter ...

  5. Struts入门(三)深入Struts用法讲解

    访问Servlet API Action搜索顺序 动态方法调用 指定多个配置文件 默认Action Struts 后缀 接收参数 处理结果类型 1.访问Servlet API 首先我们了解什么是Ser ...

  6. 【Struts 2】Struts2环境搭建

    一.关键步骤 1.创建Java Web项目 2.引入Struts2的依赖包,将依赖包拷贝到WEB-INF/lib下 * commons-logging-1.0.4.jar * freemarker-2 ...

  7. Struts+Spring+Hibernate项目整合AJAX+JSON

    1.什么是AJAX AJAX是 "Asynchronous JavaScript and XML" 的简称,即异步的JavaScript和XML. 所谓异步,就是提交一个请求不必等 ...

  8. 一脸懵逼学习Struts数据校验以及数据回显,模型驱动,防止表单重复提交的应用。

    1:Struts2表单数据校验: (1)前台校验,也称之为客户端校验,主要是通过Javascript编程的方式进行数据的验证. (2)后台校验,也称之为服务器校验,这里指的是使用Struts2通过xm ...

  9. Struts2中的数据处理的三种方式对比(Action中三种作用域request,session,application对象)

    1:在Action中如何获得作用域(request,session,application)对象: 取得Map(键值对映射集)类型的requet,session,application; 对数据操作的 ...

随机推荐

  1. IntelliJ IDEA创建Maven+SSM+Tomcat+Git项目【全程详解】

    记录一下整个创建项目的过程,其中包括: Maven 项目创建: SSM配置文件: Tomcat配置: Git配置: Git忽略文件Ignore配置: 图文讲解,通俗易懂,易上手. 一.创建Maven ...

  2. Spring_总结_03_装配Bean(四)_导入与混合配置

    一.前言 本文承接上一节:Spring_总结_03_装配Bean(三)之XML配置 在典型的Spring应用中,我们可能会同时使用自动化和显示配置.同时,可能在某些场景下我们需要混合使用JavaCon ...

  3. New Concept English three (57)

    28w/m 54errors I stopped to let the car cool off and to study the map. I had expected to be near my ...

  4. MySQL多种安装方式选择

    1.rpm包安装方式 rpm包的安装方式非常简单,这里以el6平台下的mysql-5.6.34版本为例,首先,要通过上述搜狐镜像地址下载到如下四个MySQL相关软件安装包. a.下载安装包 MySQL ...

  5. Oracle 存储过程_(收集)

    oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字(    参数1 IN NUMBER,    参数2 IN NUMBER) IS变量 ...

  6. php 服务器的安全笔记

    php 服务器的安全笔记 操作系统安全 默认端口修改 MySQL 端口禁止外网访问 用户权限 父进程 子进程 目录权限 TODO Web Server 版本信息 服务器版本信息 PHP 版本 open ...

  7. secret CRT 会话光标不闪烁问题

    点击 选项->会话选项 然后在取消即可,就有了闪烁的光标,应该是个bug.

  8. Cloudera API访问

    多租户管理页面(admin)操作 cloudera 管理页面页面操作多租户是这样的: 进入到YARN的服务页面,点击Resource Pool,你将会看到已经存在的资源池,然后再点击资源池表格右上角的 ...

  9. vim编辑 小笔记

    http://jingyan.baidu.com/article/495ba8410ff14d38b30ede01.html vim编辑器笔记 1.vi 文件名 打开文件 2.按 i 键 进入inse ...

  10. 全球知名的HTTPS网站检测工具-Qualys SSL Labs

    推荐一个在线版全球知名的HTTPS网站检测工具-Qualys SSL Labs.Qualys SSL Labs同时也是很具有影响力的SSL安全和性能研究机构. SSL Labs会对HTTPS网站的证书 ...