zoukankan      html  css  js  c++  java
  • struts2学习笔记(一)—— struts2介绍及入门程序

    一、struts2概述

    1.1 什么是struts2?

     在介绍Struts2之前,先来认识一下Struts1。Struts1是最早的基于MVC模式的轻量级web框架,他能够合理的划分代码结构,并包含了验证框架、国际化框架等多种实用工具框架。但随着技术的进步,Struts1的局限性也越来越多的暴露出来。为了符合更加灵活、高效的开发需求,Struts2框架应用而生。

      Struts2是Struts1的下一代产品,是在Struts1和WebWork技术基础上进行合并后的全新框架。虽然Struts1和Struts2名字类似,但其设计思想却有很大不同。实质上,Struts2是以WebWork为核心,采用拦截器机制来处理用户的请求。这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以从另一方面可以理解为Struts2是WebWork的更新产品
      Struts拥有优良的设计和功能,其优势具体如下:

    1. 项目开源,使用及扩展方便,天生优势。
    2. 提供Exception处理机制。
    3. Result方式的页面导航,通过Result标签很方便的实现重定向和页面跳转。
    4. 通过简单、集中的配置来调度业务类,使得配置和修改都非常容易。
    5. 提供简单、统一的表达式语言来访问所有可访问的数据。
    6. 提供标准、强大的验证框架和国际化框架。
    7. 提供强大的、可以有效减少页面代码的标签。
    8. 提供良好的ajax支持。
    9. 拥有简单的插件,只需放入相应的jar包,任何人都可以扩展Struts2框架,比如自定义拦截器、自定义结果类型、自定义标签等,为Structs2定制需要的功能,不需要什么特殊配置,并且可以发布给其他人使用。
    10. 拥有智能的默认设置,不需要另外进行繁琐的设置。使得默认设置就可以完成大多数项目程序开发所需要的功能。

    1.2 前端控制器模式

      Web层框架(Struts1、Struts2、Webwork、SpringMVC)都有一个特点,就是基于前端控制器模式实现的。

      什么是前端控制器模式呢?我们来看下图,在传统方式的开发,有一次请求就会对应一个Servlet。这样会导致出现很多Servlet。而Struts2将所有的请求都先经过一个前端控制器,在前端控制器中实现框架的部分功能,剩下具体操作要提交到具体的Action中。所有的请求都会经过前端控制器,那用什么来实现前端控制器呢?过滤器是最好的一个实现方式,因为需要所有的请求都可以被过滤器拦截,然后在过滤器中实现部分的功能。所以Struts2的前端控制器也是由过滤器实现的。

        

        

     二、Struts2入门案例

    2.1 下载Struts2的开发包

      Struts的官网:https://struts.apache.org/

      解压开发包:

        

    2.2 创建一个web工程并导入jar包

       首先我们需要创建一个web工程,引入相关的jar包文件。那么该引入哪些jar包呢?将struts-2.3.24框架目录中的lib文件夹打开,得到Struts2开发中可能y用到的所有jar包(共107个)。但是在实际开发中,我们根本不用引入那么多的jar包。

      要进行struts2的基本开发,可以参考struts2-2.3.24中的apps下的一些示例代码,其中struts2-blank.war是一个struts2的空的工程。我们只需要将struts2-blank.war解压后进入到WEB-INF下的lib查看:

        

      这些包就是struts2的基本开发包了。

      

      从表中可以看出,此版本的Struts2项目所依赖的基础jar包共13个。Struts2根据版本的不同所依赖的基础jar包可能不完全相同,不过基本上变化不大。

      需要注意的是,通常使用Struts2的Web项目并不需要利用到Struts2的全部jar包,因此没有必要一次将struts2的lib目录下的全部jar包全部复制到web项目的WEB-INF/lib路径下,而是根据需要,再添加响应的jar包。

    2.3 编写一个Action类

    public class HelloAction {
        public String hello(){
            System.out.println("hello world");
            return "success";
        }
    }

      Action类编写好了以后,Struts2框架如何识别它就是一个Action呢?我们需要对Action类进行配置。

    2.4 在struts.xml中配置Action

      我们观察apps中的示例代码,在WEB-INF的classes中,有一个名称为struts.xml的文件,这就是struts2的配置文件。

      在开发中需要将struts.xml文件引入到工程的src下,因为src下的内容发布到web服务器中就是WEB-INF下的classes,将原有的内容删掉,然后配置自己编写的Action类:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <!-- 配置一个包:package -->
        <package name="demo1" namespace="/" extends="struts-default">
            <!-- 配置Action -->
            <action name="helloAction" class="cn.itcast.struts2.action.HelloAction" method="hello">
                <!-- 配置结果页面的跳转 -->
                <result name="success">/jsp/test.jsp</result>
            </action>
        </package>
    </struts>

      Action类配置好了后,现在是否可以执行呢?其实还不行,之前我们介绍过,web层的框架都有一个特点,就是基于前端控制器的模式,这个前端控制器是由过滤器实现的,所有我们需要配置Struts2的核心过滤器,这个过滤器的名称是StrutsPrepareAndExecuteFilter。

    2.5 在web.xml中配置核心过滤器

      Struts2框架要想执行,所有的请求都要经过这个前端控制器(核心过滤器),这个过滤器完成了框架的部分功能。在web.xml中配置:

      <!-- 配置Struts2的核心过滤器:前端控制器 -->
      <filter>
          <filter-name>struts2</filter-name>
          <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      
      <filter-mapping>
          <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>  
      </filter-mapping>

    2.6 测试

      

  • 相关阅读:
    IP是什么 DNS 域名与IP有什么不同
    空间、域名与IP之间的关系?
    杨学明老师为深圳某上市企业提供《软件测试技术》内训服务!
    共创力与某上市企业合作的第三期咨询项目正式启动!
    2017.7.28~29,热烈庆祝杨学明老师《研发项目管理》杭州公开课成功举办!
    2017年7月22日~23日,深圳市共创力为某上市企业提供整机设计工程内训服务!
    深圳市共创力咨询第二期“总裁直通车”成功举办!
    阿里巴巴产品需求工程师的三个层次
    共创力咨询推出“总裁直通车”服务!
    2017年7月7日~8日,杨学明老师为深圳蛇口某企业内训课程服务!
  • 原文地址:https://www.cnblogs.com/yft-javaNotes/p/10235268.html
Copyright © 2011-2022 走看看