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  

  • 相关阅读:
    自己感受,如何解读别人的好的PHP代码
    34. RunAs Authentication Replacement运行身份验证替换
    32.3.3 Authenticating to a Stateless Service with CAS(使用CAS向无状态服务进行身份验证)
    33.2 Adding X.509 Authentication to Your Web Application
    35.2 Encryptors加密器
    32.3.2 Single Logout(单点退出)
    33. X.509 Authentication
    34.2 Configuration
    32.3.4 Proxy Ticket Authentication代理票证认证
    35.3 Key Generators密钥生成器
  • 原文地址:https://www.cnblogs.com/shan1393/p/9085230.html
Copyright © 2011-2022 走看看