zoukankan      html  css  js  c++  java
  • 基于MVC的应用框架之Struts前奏

    1.JSP&Servlet中的MVC

      MVC的关键是,业务逻辑要与表示分离。通过把业务逻辑放在一个“模型”中,这样业务逻辑本身就能作为一个可重用的JAVA类存在。

      在JSP&Servlet中,servlet充当cotroller的角色,它的工作流程如下:

    • 获取请求数据封装;
    • 调用服务方法;
    • 跳转(转发/重定向);

    2.通用的ActionServlet

      在JSP&Servlet中,用户的每个不同请求都需要一个servlet控制器处理,并且进行servlet的配置。由于servlet的工作流程的相似性,为了避免创建多个servlet,可以做一个通用的servlet(ActionServlet),它的工作流程如下:

    • 根据请求的URL,得到业务处理Action类方法;
    • 调用Action类中的方法,获得返回标记;
    • 根据返回标记得到转发方法以及转发页面;
    • 转发;

      原本需要针对每个请求创建多个servlet,现在只需要对应每个请求创建一个Action类,只用一个servlet就可以完成控制器的功能。URL对应的Action类和Action类中的方法,返回值标记对应的转发方法和转发页面都要写在配置文件中。这个配置文件结构如下:

      ActionServlet的具体工作流程如下:

    • 获取请求URL,得到路径名;
    • 根据路径名,读取配置文件,得到业务处理的Action的全名及处理方法;
    • 利用反射机制创建对象,调用方法获取返回标记;
    • 根据返回标记,读取配置文件,得到对应的转发类型和转发页面;
    • 转发;

    3.读取配置文件

      由于需要多次查询配置文件(每个请求),所以配置文件最好只读一次,可以在ActionServlet的init()方法中读取配置文件。因为servlet的init()只在servlet初始化时执行一次,而且是单例的。

      用JAVA类封装struts.XML

    • action节点--->ActionMapping(name,className,method,Map(String,Result) results属性)
    • result节点--->Result(name,type,page属性)
    • 所有action-->ActionMappingManager(Map(String,ActionMapping) allActions属性)

      ActionMappingManager类在构造函数中读取struts.XML文件,将其封装在一个Map(String,ActionMapping) allActions对象中,并提供一个返回ActionMapping的getActionMapping(String actionName)方法,使ActionServlet可以通过请求URL得到响应的ActionMapping对象。ActionServlet在init()方法中初始化ActionMappingManager对象,从而保证只读取struts.XML一次。

    4.struts开发步骤

      有了通用的ActionServlet,struts开发只需要两步:

    写Action类;

    配置Action;

  • 相关阅读:
    习题2.4 递增的整数序列链表的插入(15 分)浙大版《数据结构(第2版)》题目集
    杭电 KazaQ's Socks
    B. Beautiful Paintings
    java之接口
    java之模板方法设计模式
    java之抽象类
    java之final关键字
    java之匿名内部类
    jvaa之初始化块
    java之单例设计模式
  • 原文地址:https://www.cnblogs.com/juaner767/p/5520341.html
Copyright © 2011-2022 走看看