• Struts 2 执行流程 配置信息


    Struts 2 执行流程

    首先,浏览器访问,经过Filter,Filter从src/struts.xml中寻找命名空间和action的名字,获取action类,从方法中拿到返回值,接着从result内部获取到hello.jsp

    学习流程(Struts架构图)

    配置详解

      核心配置:

        

         <!-- package元素:将我们的Action封装,可以在package中配置很多action
            name:包名字,随便起,不能与其他包名重复
            namespace:给action访问网络路径定义一个命名空间
            extends:继承一个指定包
            abstract属性:包是否为抽象的,标识属性。
         -->
         <!-- action元素
            name属性:决定了Action访问资源名
            class属性:Action类的完整类名
            method:方法名
         -->
         <!-- result元素
             name属性:标识结果处理名称,与action方法的返回值对应
             type属性:指定调用某个result类来处理结果,默认使用转发
          -->

    修改struts的编码(加载顺序,3>1),可以替代Filter配置编码,解决post问题

    第一种修改方式

    在src下新建struts.properties
    
    在struts-core的jar包下的struts2下的default下有个修改encoding的,复制过来
    
    struts.i18n.encoding=UTF-8即可修改编码为UTF-8

    第二种修改方式(真正开发中)

    在struts.xml下加入标签
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>

    第三种修改方式

    <context-param>
      	<param-name>struts.i18n.encoding</param-name>
      	<param-value>UTF-8</param-value>
      </context-param>

    常量介绍

    struts.action.extension=action,,

    访问action时的后缀名,默认值为action或者空

    如果修改为do,那么访问时必须加上.do,.do是struts1自带的

    struts.devMode = false

    指定struts2是否以开发模式运行

    1.热加载主配置

    2.提供更多错误信息输出,方便开发时的测试

    动态方法调用

    1.(了解)

    Demo类

    package com.littlepage.dynamic;
    
    public class DemoAction {
        public String add() {
            System.out.println("添加用户");
            return "success";
        }
        public String del() {
            System.out.println("删除用户");
            return "success";
        }
        public String update() {
            System.out.println("修改用户");
            return "success";
        }
        public String find() {
            System.out.println("查找用户");
            return "success";
        }
    }

    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>
        <!-- 配置动态方法常量 -->
        <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
        <package name="dynamic" namespace="/dynamic" extends="struts-default">
            <action name="DemoAction" class="com.littlepage.dynamic.DemoAction">
                <result name="success">/hello.jsp</result>
            </action>
        </package>
    </struts>

    访问调用!

    http://localhost:8080/StrutsTest/dynamic/DemoAction!add

    console打印信息

     不推荐理由,不满足seo(search engine optimization)

    2.(重点)

    修改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>
    	<package name="dynamic" namespace="/dynamic" extends="struts-default">
    		<action name="DemoAction_*" class="com.littlepage.dynamic.DemoAction" method="{1}">
    			<result name="success">/hello.jsp</result>
    		</action>
    	</package>
    </struts>
    

    将action name的改为可通配,可通配在后面method中可以使用表达式进行通配符的取出

    访问

    http://localhost:8080/StrutsTest/dynamic/DemoAction_add

    console打印

    struts2中默认配置

    练习:

  • 相关阅读:
    随笔:我为什么要写博客?
    用纯C语言写的一个植物大战僵尸的外挂
    方法:如何获取操作系统所有分区(逻辑驱动器)
    Srping syntactically incorrect.错误记录
    重建项目报错
    easyui datagrid 跨页选择
    CentOS 6编译安装ipvsadm和keepalived
    CentOS 6下ActiveMQ 5.5安装及使用MySQL
    extjs 4中TreePanel和GridPanel使用
    Linux安装性能问题
  • 原文地址:https://www.cnblogs.com/littlepage/p/10703014.html
Copyright © 2020-2023  润新知