zoukankan      html  css  js  c++  java
  • Struts2 动态调用方法

    struts2动态调用方法有两种方式

    方式一:用通配符进行调用:

    Action方法:

     1 package com.bjyinfu.struts.actions;
     2 
     3 public class CatchDynamicMethod {
     4 
     5     public String doFirst(){
     6         System.out.println("执行doFirst方法");
     7         return "success";
     8     }
     9 
    10     public String doSecond(){
    11         System.out.println("执行doSecond方法");
    12         return "success";
    13     }
    14 }

    Struts2中注册方法:(注:method对应得是占位符从1开始,在提交请求的时候,*是什么,method对应的就是什么,也就是说提交请求的时候,*对应的应该是对应的方法名称)

    1 <struts>
    2 
    3   <package name="dynamic" namespace="/dynamic" extends="default">
    4         <action name="execute_*" class="com.bjyinfu.struts.actions.CatchDynamicMethod" method="{1}">
    5             <result name="success">/welcome01.jsp</result>        
    6         </action>
    7     </package>
    8     
    9 </struts>

    展示页面:

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>My First Struts2 Project</title>
     8 </head>
     9 <body>
    10     welcome01 page
    11 </body>
    12 </html>

    (方法一就是讲通配符*换成方法名即可)

    方法二:开启常量设置实现动态调用方法:

    再Struts2.xml配置文件中注册方法的时候,将常量"struts.enable.DynamicMethodInvocation"开启

    1 <struts>
    2   <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    3     <package name="dynamic" namespace="/dynamic" extends="default">
    4         <action name="execute" class="com.bjyinfu.struts.actions.CatchDynamicMethod">
    5             <result name="success">/welcome01.jsp</result>        
    6         </action>
    7     </package>
    8 </struts>

    地址栏访问的时候,http://127.0.0.1:8080/projectName/dynamic/execute!方法名.action

  • 相关阅读:
    Delphi 与 VC 共享接口和对象
    Delphi线程类 DIY(把类指针作为参数传进去,就可以执行类里面的方法啦)
    delphi 在多线程中使用 CreateOleObject 导致失败(一定要使用CoInitialize和CoUninitialize,举例查询WMI)
    delphi调用LUA函数来处理一些逻辑
    后台管理系统
    .NET平台机器学习
    kafka
    一些技术视频资源
    异步
    CQRS(命令查询职责分离)和 EDA(事件驱动架构)
  • 原文地址:https://www.cnblogs.com/lubolin/p/7251588.html
Copyright © 2011-2022 走看看