zoukankan      html  css  js  c++  java
  • Struts第三天

    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 APIstruts APIStruts2的这种设计属于无侵入式设计;  

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

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

    4)多种表现层技术,如:JSPfreeMarkerVelocity等;  

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

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

     支持全局结果视图

    支持Ognl  

  • 相关阅读:
    飞腾1500A 上面银河麒麟操作系统 进行远程以及添加用户的方法 linux xrdp
    centos7 安装Anaconda3及使用
    机器学习(ML)中文视频教程
    spring学习笔记(26)spring整合Quartz2持久化稳健任务调度
    Cocos2d-X中使用ProgressTimer实现一些简单的效果
    总结几点关于做互联网产品的思路
    norflash和nandflash电路
    存储过程
    USACO hamming 继续暴搜
    [原理分析]Linux下的栈溢出案例分析-GDB调试操练[1]
  • 原文地址:https://www.cnblogs.com/shan1393/p/9085230.html
Copyright © 2011-2022 走看看