Struts(八):动态方法调用
动态方法调用:通过url动态调用action中的方法。
默认情况下,Struts的动态方法调用处于禁用状态。
测试定义一个action类:
1 package com.dx.actions; 2 3 public class DynamicAction { 4 public String index(){ 5 System.out.println("index method"); 6 return "success"; 7 } 8 9 public String save1(){ 10 System.out.println("save1 method11"); 11 return "success"; 12 } 13 }
修改配置struts.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 8 <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 9 <constant name="struts.devMode" value="false" /> 10 11 <package name="default" namespace="/" extends="struts-default"> 12 <action name="dynamicTest" class="com.dx.actions.DynamicAction" method="index"> 13 <result name="success">/WEB-INF/test.jsp</result> 14 </action> 18 </package> 19 20 21 </struts>
添加测试页面index.jsp
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>Insert title here</title> 8 </head> 9 <body> 10 <a href="dynamicTest.action">test</a><br/> 11 <a href="dynamicTest!save1.action">test2</a> 12 </body> 13 </html>
点击链接后,发现两个方法都可以被调用,尽管我们没有定义save方法为一个action在struts.xml中。
注意:
及时定义了save的action节点
1 <action name="saveTest" class="com.dx.actions.DynamicAction" method="save1"> 2 <result name="success">/WEB-INF/tes25t.jsp</result> 3 </action>
,通过
<a href="dynamicTest!save1.action">test2</a>
调用,也不会跳转到指定的页面。而是跳转到了test.jsp页面,比较奇怪。
基础才是编程人员应该深入研究的问题,比如:
1)List/Set/Map内部组成原理|区别
2)mysql索引存储结构&如何调优/b-tree特点、计算复杂度及影响复杂度的因素。。。
3)JVM运行组成与原理及调优
4)Java类加载器运行原理
5)Java中GC过程原理|使用的回收算法原理
6)Redis中hash一致性实现及与hash其他区别
7)Java多线程、线程池开发、管理Lock与Synchroined区别
8)Spring IOC/AOP 原理;加载过程的。。。
【+加关注】。