• 初学structs2,简单配置


    一、structs2-demo1项目下新建structs.xml文件,文件名必须是structs

    二、package节点配置及其子节点配置

    <!--name:单纯给包起个名字,保证和其他包不重名就好

      namespace:为action访问加上一层或多层路径

      extends:继承一个其他包,目的是引入其他包配置-->

    <package name="hello" namespace="/aaa" extends="structs-default">

    <!--name:为action类加标识,一般使用Action类名称,访问时便于找到action

      class:action的完整类名

      method:action中的处理方法

      demo中创建了HelloAction类,在包cn.hjp.action下,里面有个excute方法,方法返回 success-->

    <action name="HelloAction" class="cn.hjp.action.HelloAction" method="excute">

    <!--name:返回结果的标识,用于找到结果路径

      type:可以决定跳转到结果的方式=》转发(dispatcher),重定向······-->

    <result name="success" type="dispatcher">/index.jsp</result>

    </action>

    </package>

    三、在web.xml文件下添加filter并配置

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

    四、java代码

    package cn.hjp.action;
    
    public class HelloAction {
        public String excute() {
            System.out.println("structs测试");
            return "Success";
        }
    }

     访问地址:http://localhost:8080/structs2-demo1/aaa/HelloAction.action

    五、修改structs2某些特定的属性配置/org/apache/struts2/default.properties

    当然不会在源文件上修改,修改方式就是在structs2.xml配置文件上配置常量的方式修改,比如修改访问路径扩展名

    配置中加入  <constant name="struts.action.extension" value="do">

    然后访问上面的地址改为 http://localhost:8080/structs2-demo1/aaa/HelloAction.do

    六、在structs2.xml中引入外部配置文件使用include标签

    <include file="文件完整路径"></include>

    七、补充,动态方法调用之structs2默认调用方式(使用感叹号分割类和方法)

    确保structs2下default.properties文件下属性struts.enable.DynamicMethodInvocation = true,默认就是true 

    如上的访问方式可改为http://localhost:8080/structs2-demo1/aaa/HelloAction!excute.action   

    可以将action配置中的method属性去除,也可不去(如果method不去除,上一个访问方式也可以访问成功)

    八、补充,动态方法调用之structs2自定义调用方式(使用通配符)

    更改action节点<action name="HelloAction" class="cn.hjp.action.HelloAction" method="excute">中的name属性和method属性

    <action name="HelloAction_*" class="cn.hjp.action.HelloAction" method="{1}">

    如上的访问方式可改为http://localhost:8080/structs2-demo1/aaa/HelloAction_excute.action   

    默认访问方式依然可以成功

    九、补充,动态方法调用之通配符方式扩展

    action节点及其result子节点改为

    <action name="*_*" class="cn.hjp.action.{1}" method="{2}">

    <result name="success" type="dispatcher">/{1}_{2}.jsp</result>

    </action>

    如果依然按照上面访问方式,则页面要改为HelloAction_excute.jsp

    十、package属性namespace简述

      此属性为可选属性,如果不配置,会在默认命名空间下查找访问的文件,如果配置了多级,会逐级从下到上直到找到匹配的文件为止。

      如访问地址/a/b/c/test.jsp,首先在c下面找,没有则在b下面找,没有则在a下面找,没有则在根位置找,没有则在默认位置找(一般默认位置为根位置),再没有就报404未找到错误

    十一、普通Action类简述

      此类可实现接口Action,但在开发中一般继承自ActionSupport类,因为此类中实现了Action接口和表单验证、国际化、以及序列化接口

    十二、属性默认值

      继承ActionSupport类的action,在action配置中,如果没有method,默认execute;没有class,默认com.opensymphony.xwork2.ActionSupport,依据structs-default.xml文件package节点下 <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />;

      在result配置总,如果没有name,默认success;如果没有type,默认dispatcher,依据structs-default.xml文件package下的resulttypes下<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>

    十三、注意

    1、structs.xml配置result节点的name值字符串大小写要与action方法返回字符串的大小写一致,如<result name="success" type="dispatcher">/Index.jsp</result>,那么方法中return "success"。如果使用继承自ActionSupport类的返回值,也要大小写一致,ActionSupport类中使用SUCCESS,则对应"success"

  • 相关阅读:
    case when完成不同条件的显示
    联行号不正确的触发器
    |待研究|委托付款的支付状态触发器
    待解决:新增客商校验触发器|两个错误|
    C#.NET和C++结构体Socket通信与数据转换
    C#中struct和class的区别详解
    C#与C++数据类型比较及结构体转换[整理]
    surging+CentOS7+docker+rancher2.0 入门部署教程
    Google Maps API Key申请办法(最新)
    开源的api文档管理系统
  • 原文地址:https://www.cnblogs.com/hujiapeng/p/4648420.html
Copyright © 2020-2023  润新知