Struts2笔记1

Struts2的简介

  1. Struts2是一个基于MVC的web层框架 (web层框架遵守MVC设计模式)
  2. Struts2与struts关系? 没关系 struts2框架的内核webwork webwork内核是xwork
  3. Struts2可以与web完全解耦,是可插拔式的框架(通过filter)

Struts2快速入门

  1. 导入struts2开发的相关jar
    struts-2.3.24-all\struts-2.3.24\apps\struts2-blank\WEB- INF\lib*.jar
  2. 配置web.xml
 <!-- 配置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 QuickStartAction {
            public String execute(){
                System.out.println("QuickStartAction running....");
                return null;
            }
        }

4 配置struts.xml

位置:src下 (类加载路径) 
        约束:struts2-core-2.3.24.jar/struts-2.3.dtd
        配置:
            <?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 name="text" namespace="/" extends="struts-default">
                    <action name="quick" class="com.itheima.action.QuickStartAction"></action>
                </package>
            </struts>

5 测试
url: http://localhost:8080/Struts2Day01/quick

struts2配置文件

  1. StrutsPrepareAndExecuteFilter的作用

init_DefaultProperties(); // [1] 加载org/apache/struts2/default.properties
init_TraditionalXmlConfigurations(); // [2] 加载struts-default.xml,struts-plugin.xml,struts.xml
init_LegacyStrutsProperties(); // [3] 加载struts.properties
init_CustomConfigurationProviders(); // [5]
init_FilterInitParameters() ; // [6] 加载核心filter的初始化参数 aaa=bbb

Struts
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

aaa
bbb


init_AliasStandardObjects() ; // [7]

    总结:
        服务器启动时,Fiter对象创建,init方法执行,配置文件就加载

        配置文件加载顺序:
        default.properties  struts内置
        struts-default.xml  struts内置
        struts-plugin.xml   struts内置
        struts.xml          自定义(重点)
        struts.properties   自定义
        filter的init参数   自定义

        后加载的配置如果与先加载的配置有冲突,那么后加载会覆盖先加载

1. default.properties

struts.i18n.encoding=UTF-8 post提交不用解决乱码
struts.multipart.maxSize=2097152 限制上传的文件的大小
struts.action.extension=action,, 访问Action时可以携带的扩展名
struts.devMode = false 设置当前是否为开发模式 默认非开发模式
如果设置为true 那么修改struts的配置文件后不需要重新启动
2. struts-default.xml
常量 相当于在properties中配置键值对
struts会自动创建配置一些bean对象


3 struts-default.xml

常量 相当于在properties中配置键值对
struts会自动创建配置一些bean对象


4 struts.xml

在src下创建struts.xml文件

    <?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>

        <!-- 1、配置常量 -->
        <constant name="struts.devMode" value="true"></constant>
        <constant name="struts.action.extension" value="action,abc,,"></constant>
        <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>


        <!-- 2、虚拟包(逻辑包)package 
                出现的目的:方便去管理Action
                属性:
                    name:包的名称
                    namespace:命名空间
                        作用: 与action的name一起组成虚拟的访问路径
                        例如:
                            namespace="/"  action的name="quick"
                                http://localhost:8080/Struts2Day01/quick
                            namespace="/abc"  action的name="quick"
                                http://localhost:8080/Struts2Day01/abc/quick
                    extends:该包继承自哪一个包  一般继承struts-default
                        作用:父包中定义好的内容直接使用
        -->
        <package name="text" namespace="/" extends="struts-default">

            <!-- 2.1 Action的基本配置(重点)
                    属性:
                        name:当前Action的虚拟名称 该名称与namespace一起组成访问路径
                        class:Action的全限定名
                        method:指定访问Action的哪一个方法

                    结果视图的配置
                        name: 逻辑视图名称 与Action中方法的返回值进行匹配
             -->
            <!-- <action name="quick_save" class="com.itheima.action.QuickStartAction" method="save">
                <result name="saveResult">/saveResult.jsp</result>
                <result name="updateResult">/updateResult.jsp</result>
            </action>
            <action name="quick_update" class="com.itheima.action.QuickStartAction" method="update">
                <result name="saveResult">/saveResult.jsp</result>
                <result name="updateResult">/updateResult.jsp</result>
            </action> -->

            <!-- 2.2 Action的优化配置-通配符方式(重点)
                    name="qucik_save"       method="save"
                    name="qucik_update"     method="update"
                    name="qucik_*"          method="{1}"
                    name="qucik_*_*"        method="{1}{2}"

                    *代表任意字符串   {n}代表第n个*对应的字符串

                    例如:
                        name="qucik_*"          method="{1}"
                        资源quick_xxx         访问的方法就是xxx

                        name="qucik_*_*"        method="{1}{2}"
                        资源quick_save_Customer   访问的方法就是saveCustomer

             -->
            <action name="quick_*" class="com.itheima.action.QuickStartAction" method="{1}">
                <result name="saveResult">/saveResult.jsp</result>
                <result name="updateResult">/updateResult.jsp</result>
            </action>

            <!-- 2.3 动态方法调用(了解)
                不用在配置时执行方法
                但是需要在访问时指定哪个方法
                    http://localhost:8080/Struts2Day01/资源!方法.action
                    http://localhost:8080/Struts2Day01/quick!save.action

                注意:默认情况下 struts2不支持动态方法调用 需要开启才能使用
                修改一个常量(default.properties) struts.enable.DynamicMethodInvocation = false

            -->
            <!-- <action name="quick" class="com.itheima.action.QuickStartAction">
                <result name="saveResult">/saveResult.jsp</result>
                <result name="updateResult">/updateResult.jsp</result>
            </action> -->


        </package>


        <!-- 3、该xml文件引入其他xml文件   分模块开发 -->
        <!-- <include file="struts-customer.xml"></include> -->

    </struts>

Strits2相关API(Action创建的三种方式)

  1. 使用一个pojo充当Action pojo:(Plain Ordinary Java Object)简单的Java对象
  2. Action类去实现Action接口
  3. ActionSupport已经实现execute方法
    ActionSupport功能强大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值