zoukankan      html  css  js  c++  java
  • 说说你对struts2的理解

    struts首先是MVC框架
    MVC是一种设计模式
    将应用程序分成了视图、模型、控制器三部分,使代码逻辑清晰,同时提高移植性
    M与V之间--观察者模式
    V与C之间--策略模式

    MVC的工作流程
    请求----控制器调用模型处理,返回数据-----控制器用相应的视图格式化模型返回的数据完成相应

    Struts2在以上流程中解决了三个问题:
    1. 控制器如何根据用户的请求决定调用哪个模型(具体是模型中的Action组件)进行处理
    2. 如何在业务逻辑处理器与serv let API 分离的情况下使处理器获得请求参数,并得以执行
    3. 如何将处理后返回的数据传给相应的视图生成动态网页响应给用户

    结合Struts的请求流程加以说明


    客户端请求----经三个过滤器(ActionContextCleanUp,其他过滤器,到FilterDispatcher核心控制器)
    FilterDispatcher询问ActionMapper是否需要调用Action来处理,如果ActionMapper决定调用,FilterDispatcher就把对请求的处理交给了ActionProxy
    ActionProxy通过Configuration Manager 询问框架的配置文件,找到需要调用的Action类
    ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action,但在调用之前ActionInvocation会根据配置加载Action相关的拦截器,每执行完一个
    拦截器,会调用invocation的invoke方法,把请求传给下个Interceptor,所有的Interceptor执行完以后,会执行Action
    Action执行根据后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果
    这个返回结果可能是一个 需要表示为JSP或FreeMarker的模板,或者是另一个Action链
    如果是前者,表示的过程中可以使用struts2的标签,生成动态网页后返回给用户
    如果是后者,则再把上述过程执行一遍
     
  • 相关阅读:
    db.Exec和db.Query的区别
    golang两种get请求获取携带参数的方式
    gin实现中间件middleware
    gin操作session
    笔札-有触动的句子
    并发的基本概念
    售货员的难题
    传球游戏之最小总代价
    状压dp入门
    [COCI 2010] OGRADA
  • 原文地址:https://www.cnblogs.com/weitangmonkey/p/5195060.html
Copyright © 2011-2022 走看看