二、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-Struts1\webapp\WEB-INF\classes,

    那么 src 下面的所有文件在编译以后,都将放入Demo-Struts1\webapp\WEB-INF\classes,

    因此,只要将 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之类。 

posted @ 2017-03-14 15:38  ☀Beans✡✌  阅读(124)  评论(0编辑  收藏  举报