zoukankan      html  css  js  c++  java
  • Struts2常见面试点

    01.  三层和MVC的区别

    http://blog.csdn.net/csh624366188/article/details/7183872

    http://www.cnblogs.com/zdxster/p/5305155.html

    http://www.cnblogs.com/rainbow70626/p/4967478.html

    三层是三层,MVC是MVC,它们毫无关系的。

    三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。

      三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。

      比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

    MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。

      MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。

      只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。

    02.struts2的核心控制器!

    http://blog.sina.com.cn/s/blog_6ac4c6cb010190ml.html

    http://www.cnblogs.com/wangjianbg/p/3555857.html

    http://blog.chinaunix.net/uid-7374279-id-4344061.html

    struts2是集成了struts1和xwork技术!

    struts2的三种实现方式:

      001.自定义一个类,书写一个execute(),返回值是String类型,即可!

      002.实现Action接口

        有五个默认值,和一个execute()

        SUCCESS=“success”

        ERROR=“error”

        INPUT="input"

        NONE="none"

        LOGIN="login"

      003.继承ActionSupport类

    struts-default.xml文件!

      定义了我们需要的

      result-type (返回类型)

      interceptor (拦截器)

      interceptor-stack (拦截器栈)

      default-class-ref (默认执行的action类)

    default.properties

      设置了 struts2的一些基本配置!

    struts.xml文件,我们书写的!

    03.struts2执行流程

     http://www.cnblogs.com/xtdxs/p/6489275.html

    1 服务开启,配置文件初始化

    2 用户访问login请求

    3 进入web.xml文件中我们配置的核心控制器(filter)

    4 核心过滤器中有一个FilterDispatcher,FilterDispatcher调用AcionMapping,来决定是否调用某个Action!

    5 ActionMapping根据实际情况,交给ActionProxy!

    6 ActionProxy通过Configuration Manager调用框架的配置文件!

    7 ActionProxy会创建一个ActionInvocation的实例!

    8 先去执行配置的各种123456拦截器

    9 执行LoginAction

    10 执行654321拦截器!

    04.拦截器和过滤器的区别

      相同点:

      不同点:

    http://www.cnblogs.com/joyang/p/4973435.html

    http://blog.csdn.net/vincent_yuan1991/article/details/52830648

    http://blog.csdn.net/xiaoliuliu2050/article/details/51222446

    05.参数的传递 OGNL ****************

    动态方法的调用
    通配符的使用

    06.struts2默认后缀
    struts.action.extension=action,,


    07.全局结果

    <action name="*_* mehotd={2}">
    <result name="error">/error.jsp</result>

    <exception-mapping result="error" exception="java.sql.SQLException"/>
    </action>


    08.高内聚低耦合!


    09. xml验证
    国际化
    转换器 2014-01-01 struts2
    2014/01/01 Spring mvc

    10. 拦截器 和过滤器的区别

    拦截器不能单独执行! 必须依赖于 拦截器栈!~

    拦截器栈


    三层和 mvc

    11.轻量级框架和 重量级的区别
    ejb jpa

    12. OGNL el

    page
    request
    session
    application
    attr

    valueStack
    01.是一个接口,封装Ognl!
    它的实现类是OgnlValueStack
    02. 它贯穿Action的生命周期!每一个action都有自己的valueStack对象!
    03.struts2把valueStack对象放在了struts.valueStack的request作用域中!


    list<Object>

    list<Map<String,Object>>

    13. | & 位 0101010

  • 相关阅读:
    极速安装JumpServer
    高并发限流策略
    JDK1.8源码分析:Future和FutureTask-任务异步执行结果
    nginx 转发 header 数据丢失
    zookpeer 和 redis 集群内一致性协议 及 选举 对比
    Spring Boot 中 Druid 的监控页面配置
    eclipse使用正则表达式查找替换
    jvm 线程状态
    Redis做分布式锁
    Dubbo的异常处理
  • 原文地址:https://www.cnblogs.com/xtdxs/p/7146802.html
Copyright © 2011-2022 走看看