• 二、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之类。 

  • 相关阅读:
    POJ 2503 Babelfish
    POJ 1182 食物链
    POJ 2352 Stars
    POJ 2528 Mayor's posters
    POJ 1328 Radar Installation
    POJ 1017 Packets
    jQuery实现登录提示
    【1-5】jQuery对象和DOM对象
    【1-4】jQuery代码风格-导航栏
    【3】买苹果
  • 原文地址:https://www.cnblogs.com/MissRabbit/p/6548827.html
Copyright © 2020-2023  润新知