zoukankan      html  css  js  c++  java
  • 二、Struts1

    一、由来(个人认为):

      MVC 模式:web.xml 中,既定义了“显示逻辑”(<welcome-file>),又定义了“业务逻辑”(servlet),使得 MVC 模式不够清晰。

      因此,前人创造出了一个新的东东 - struts(依靠一个 struts-config.xml 配置文件实现)。

    二、struts 作用:

      struts 英译就是架构,那么他就是用来专门处理 action 跳转的 架构。

      Struts 由一组相互协作的类(组件)、Servlet 以及 jsp tag lib 组成。

        a:相互协作的类(组件):

          <ActionServlet>:系统维护的,你不能操作,它主要是根据传入的 action 路径在 ActionMapping 中查找相应的类,并调用它。

          <Action>:控制器,主要是从ActionForm中接收页面传进来的数据,然后进行逻辑处理。

          <ActionForm>:用来接收页面上表单中的数据。

          <ActionMapping>:用来配置每个Action所对应的路径

          <ActionForward>:实现跳转,在Action中最后一行语句通常是return mapping.forward()这里传入的值就在ActionForward中设置

          注:dtd定义的顺序:

          <!ELEMENT struts-config (display-name?, description?, data-sources?, form-beans?, global-exceptions?, global-forwards?, action-mappings?, controller?, message-resources*, plug-in*)> 

        b:servlet:

          替换 web.xml 中的 servlet

        c:jsp tag lib:jsp 的标签库

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
    
    <c:set var="ctx" value="${pageContext.request.contextPath}"/>

    三、流程:

    四、在 struts1 涉及的 MVC

      Model:struts 的 ActionForm 封装了用户的请求参数,封装成 ActionForm 对象。

          ActionServlet 转发此对象给 Action。

          Action 根据 ActionForm 对象里面的参数,进行业务处理,访问数据库等。

      View:Struts 提供了标签库,此标签库可以减少脚本的使用。

          自定义标签库,还能用 Model 互动。

      Controller:系统核心控制器 + 业务逻辑控制器

             a. 系统核心控制器:ActionServlet,继承 HttpServlet,负责拦截所有的 Http 请求, 根据用户请求确定是否转给逻辑控制器。

             b. 业务逻辑控制器:本身不具备处理能力,用于调用 Action 对应的 Model。

    五、个人感觉:

    struts,完全充当了 controller 的角色:

    1. 接收 View层 传过来的参数。

    2. 验证参数的可行性。

    3. 验证成功时,调用 action 对应的 model。

    4. 为 Model 提供跳转页面。

    5. 并为 view 层提供了 taglib 标签库。

    六、事例:

      1. 设置项目:每个内容什么意思,自行度娘

      

      2. 导入包

        一开始导入包的简单的包,然后一直报错:java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException。

        然后就按照度娘说的,什么url-pattern有问题啊,或者修改.setting-fact文件啊,都不行。最后就索性把所有的strusts相关包都导进去,就可以了。

        如果用marven做项目的话,就比较简单,只要这么写:

        

      3. 修改 web.xml

        最简单的 MVC 中 web.xml 配置:

        

        加入 struts1 后,web.xml 配置:

        

        注:<load-on-startup>1</load-on-startup>的意思,请参考http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html

      4. 添加 struts-config.xml:

        根据1中,default output folder 的 路径为Demo-Struts1webappWEB-INFclasses,

        那么 src 下面的所有文件在编译以后,都将放入Demo-Struts1webappWEB-INFclasses,

        因此,只要将 struts-config.xml 放到 src 下面就可以。

        注:具体各参数,请参考:http://blog.csdn.net/xlgen157387/article/details/39472037

        

        5. 创建上图指定的 class

          

          返回方式:① response.sendRedirect("success.jsp");

                  此方法可以用request设置参数,然后传递参数到jsp。

               ② 利用strusts-config.xml中的forward:

                  return mapping.findForward("success");  

                  此方法不能传递参数,一般用于固定的jsp,比如500.jsp/400.jsp之类。 

  • 相关阅读:
    LeetCode Find Duplicate File in System
    LeetCode 681. Next Closest Time
    LeetCode 678. Valid Parenthesis String
    LeetCode 616. Add Bold Tag in String
    LeetCode 639. Decode Ways II
    LeetCode 536. Construct Binary Tree from String
    LeetCode 539. Minimum Time Difference
    LeetCode 635. Design Log Storage System
    LeetCode Split Concatenated Strings
    LeetCode 696. Count Binary Substrings
  • 原文地址:https://www.cnblogs.com/MissRabbit/p/6548827.html
Copyright © 2011-2022 走看看