💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 动态方法调用 ## 方法1 ~~~ <struts> <!-- 配置动态方法调用是否开启常量 默认是关闭的,需要开启 --> <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant> <!-- .... --> ~~~ ![](https://box.kancloud.cn/7250a6e496edd8bec15e1ba90ab980e4_995x155.png) 根据这个访问你的方法 个人不建议这样,不利于SEO优化 ## 方法2 ~~~ <package name="dynamic" namespace="/dynamic" extends="struts-default" > <!-- 动态方法调用方式2:通配符方式 使用{1} 取出第一个星号通配的内容 --> <action name="Demo1Action_*" class="cn.itheima.b_dynamic.Demo1Action" method="{1}" > <result name="success" >/hello.jsp</result> </action> ~~~ ![](https://box.kancloud.cn/7ab36501ccf83cd00c5e1904e8da5e48_1241x84.png) 根据这个访问你的方法 # Action类的创建 ## 方式1 ~~~ //方式1: 创建一个类.可以是POJO //POJO:不用继承任何父类.也不需要实现任何接口. //使struts2框架的代码侵入性更低. public class DemoAction { } ~~~ ## 方式2 ~~~ import com.opensymphony.xwork2.Action; //方式2: 实现一个接口Action // 里面有execute方法,提供action方法的规范. // Action接口预置了一些字符串.可以在返回结果时使用.为了方便 public class DemoAction implements Action { @Override public String execute() throws Exception { return null; } } ~~~ ## 方式3 ~~~ import com.opensymphony.xwork2.ActionSupport; //方式3: 继承一个类.ActionSupport // 帮我们实现了 Validateable, ValidationAware, TextProvider, LocaleProvider . //如果我们需要用到这些接口的实现时,不需要自己来实现了. public class Demo5Action extends ActionSupport{ } ~~~ # 创建一个类实现一个Action接口 com.opensymphony.xwork2.Action ![](https://box.kancloud.cn/860f3eb5aeccf57c6af8bf1947e634dc_594x438.png) 在Action接口中定义了五个常量,一个execute方法 五个常量:它们是默认的五个结果视图`<result name=””>:` ERROR : 错误视图 INPUT: 它是struts2框架中interceptor中发现问题后会访问的一个视图 LOGIN:它是一个登录视图,可以在权限操作中使用 NONE:它代表的是null,什么都不做(也不会做跳转操作) SUCCESS:这是一个成功视图 优点:耦合度低 缺点:还是需要自己来完成功能