一、struts2简介

  1、Struts2是一个基于MVC设计模式的Web应用框架        只要是web层框架 一般就会遵守MVC设计模式
    2、struts2与struts1的关系?  没关系   WebWork基于xwork
    3、struts2是一个可插拔式框架(解耦)   ---通过filter与javaweb结合的

二、struts2快速入门

1、导入jar

  struts-2.3.24\apps\struts2-blank\WEB-INF\lib\*.jar

2、配置web.xml  Struts2的核心filter

   <!-- Struts2的核心filter -->
          <filter>
            <filter-name>Struts</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
          </filter>
          <filter-mapping>
            <filter-name>Struts</filter-name>
            <url-pattern>/*</url-pattern>
          </filter-mapping>

3、创建Action

public class QuickAction {
            public String execute(){
                System.out.println("QuickAction execute runnging.. ...");
                return null;
            }
        }

4、配置struts.xml

位置:src下
        约束位置:struts2-core-2.3.24.jar/struts-2.3.dtd
        
        <struts>
            <package name="test" namespace="/" extends="struts-default">
                <action name="quick" class="com.itheima.action.QuickAction"></action>
            </package>
        </struts>

5、测试

http://localhost:8080/Struts2Day01/quick

三、struts2的配置文件

1、入口Filter ---StrutsPrepareAndExecuteFilter
        Prepare:准备  对应init方法
        Execute:执行  对应doFilter
        
        PS:filter与生命周期相关方法:init  destroy  doFilter
        
        准备工作:
            --->StrutsPrepareAndExecuteFilter
            --->public void init(FilterConfig filterConfig)
            --->dispatcher = init.initDispatcher(config);
            --->dispatcher.init();
            --->
                init_DefaultProperties(); // [1]                加载org/apache/struts2/default.properties文件
                init_TraditionalXmlConfigurations(); // [2]        加载struts-default.xml,struts-plugin.xml,struts.xml
                init_LegacyStrutsProperties(); // [3]            加载src下的struts.properties文件
                init_FilterInitParameters() ; // [6]            加载Struts2的核心Filter分初始化参数
                
        总结:
            服务器启动--->创建Filter--->初始化方法init执行---->加载一些列的配置文件
            
            default.properties        struts2内置
            struts-default.xml        struts2内置
            struts-plugin.xml        struts2内置            struts.xml                自定义            struts.properties        自定义
            Filter的init            自定义
            
            注意:如果加载的内容有冲突的话,后加载的内容可以覆盖先加载的内容

2、    default.properties
        配置struts2默认常量
        struts.i18n.encoding=UTF-8                设置struts2的编码是UTF-8  post不用解决乱码
        struts.multipart.maxSize=2097152        限制上传文件大小  2M
        struts.action.extension=action,,        访问Action时的扩展名
        struts.devMode = false                    设置开发模式  默认不开启开发模式  设置为true  修改struts2的内容后不需要重启服务器

3、struts-default.xml
        常量
        struts-default包
            结果跳转类型
            interceptors拦截器
            
    4、struts-plugin.xml
    
    5、struts.xml
        位置:类加载路径下(src)
        
        见struts.xml文件
        
    6、struts.properties
        src自定义properties文件  该文件作用配置常量(等同于struts.xml中的constant)
        
    7、Filter的init
        只能配置常量
          <filter>
            <filter-name>Struts</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
            <init-param>
                <param-name>struts.action.extension</param-name>
                <param-value>action,,</param-value>
            </init-param>
          </filter>

四、struts2的常用API

Action定义的三种方式:
    1、POJO充当Action
    2、Action类实现Action接口
        Action接口提供5个常量
            SUCCESS:成功
            ERROR:报错
            NONE:不进行视图跳转  相当于null
            INPUT:跳转到输入视图
            LOGIN:跳转登录视图
    3、Action类继承ActionSupport类
        ActionSupport功能强大

Struts2知识点小结(一)的更多相关文章

  1. Struts2知识点小结汇总

    Struts2部分 1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前 ...

  2. Struts2知识点小结(四)--拦截器与注解开发

    一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...

  3. Struts2知识点小结(三)--值栈与ognl表达式

    1.问题一 : 什么是值栈 ValueStack        回顾web阶段 数据交互问题?        客户端提交数据  到  服务器端    request接受数据+BeanUtils实体封装 ...

  4. Struts2知识点小结(二)

    一.结果视图的配置    <result name="success">/success.jsp</result>        1.局部结果视图      ...

  5. C++重要知识点小结---3

    C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:http://www.cnblogs.co ...

  6. C++重要知识点小结---2

    C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继 ...

  7. React及Nextjs相关知识点小结

    React及Nextjs知识点小结 函数式组件和类组件区别是什么 1.函数式组件是用于创建无状态的组件,组件不会被实例化,无法访问this中的对象,无法访问生命周期方法,是无副作用的,相比于类组件函数 ...

  8. 【SpringBoot MQ 系列】RabbitMq 核心知识点小结

    [MQ 系列]RabbitMq 核心知识点小结 以下内容,部分取材于官方教程,部分来源网络博主的分享,如有兴趣了解更多详细的知识点,可以在本文最后的文章列表中获取原地址 RabbitMQ 是一个基于 ...

  9. SpringBoot 系列教程之事务隔离级别知识点小结

    SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...

随机推荐

  1. Elixir木蚂蚁支付服务器验签名方法

    官方范例为java public boolean verify(String sign , String appKey , String orderId) throws UnsupportedEnco ...

  2. RESTful API的十个最佳实践

    WebAPI在过去几年里非常的盛行,我们很多以往的技术手段都慢慢的转换为使用WebAPI来开发,因为它的语法简单规范化,以及轻量级等特点,这种方式收到了广泛的推崇. 通常我们使用RESTFul(Rep ...

  3. 封装一个 TopBarBaseActivity

    什么是快速开发嘞,看这个效果 然而我只用了这么几行代码: activity_main.xml 里面什么也没有! 其实说白了哈,就是我把 TopBar 封装在 TopBarBaseActivity 里面 ...

  4. git常用命令简集

    基础操作: 初始化git仓库: git init 提交到暂存区: git add “filename” 提交到分支: git commit -m "注释" 工作区状态: git s ...

  5. CSS 小结笔记之背景

    背景相关属性主要有: background-color  背景颜色 background-image 背景图片 background-repeat 是否平铺 repeat (默认平铺) | repea ...

  6. 团队项目个人进展——Day03

    一.昨天工作总结 冲刺第三天,昨天忙着整理数据结构相关知识,在团队项目上只是花了少部分时间来对地图的样式布局进行调整 二.遇到的问题 无 三.今日工作规划 继续昨天的规划,研究地图定位代码,并通过编写 ...

  7. zabbix系列之一——简要介绍

    参考来源:(官网) https://www.zabbix.com/documentation/3.4/manual/introduction/about 1what’s zabbix? index d ...

  8. 使用 Azure CLI 创建 Linux 虚拟机

    Azure CLI 用于从命令行或脚本创建和管理 Azure 资源. 本指南详细介绍了如何使用 Azure CLI 部署运行 Ubuntu 服务器的虚拟机. 服务器部署以后,将创建 SSH 连接,并且 ...

  9. jQuery1.7版本之后的on方法

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于 live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动 ...

  10. voltdb数据库持久性,扩展集群

    之前在git上下载的voltdb,以及在官网下载的社区版voltdb均不支持持久性事务,和扩展集群,今天下载了企业试用版voltdb,安装过程不再赘述,记录一下我的使用过程 持久性测试 以前的 vol ...