动态的方法调用:DMI
在form的action中使用动态的方法调用。action="xxx!xxx.action",第一个xxx是action中的调用的方法,和execute一样的。后面一个是所请求的action,两个可以不相同
如hello!login.action 这样子可以减少很多action的配置
另外一种方式是在struts.xml文件中加入method的方式调用,但是需要很多的action配置
另外一种方式是使用通配符的方式,在action的配置文件中使用*xxxx或者xxxx*,然后在method中写method="{1}",在form的action中写xxxxxx,则action类中的方法名对应于xxxxxx中的名字。如helloLogin
则hello对应到action类中的方法,login则是请求的action
在form的action中使用动态的方法调用。action="xxx!xxx.action",第一个xxx是action中的调用的方法,和execute一样的。后面一个是所请求的action,两个可以不相同
如hello!login.action 这样子可以减少很多action的配置
另外一种方式是在struts.xml文件中加入method的方式调用,但是需要很多的action配置
另外一种方式是使用通配符的方式,在action的配置文件中使用*xxxx或者xxxx*,然后在method中写method="{1}",在form的action中写xxxxxx,则action类中的方法名对应于xxxxxx中的名字。如helloLogin
则hello对应到action类中的方法,login则是请求的action
- <?xml version="1.0" encoding="GB18030" ?>
- <%@ page language="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <% String context = request.getContextPath(); %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
- <title>Insert title here</title>
- </head>
- <body>
- Action执行的时候并不一定要执行execute方法<br />
- 可以在配置文件中配置Action的时候用method=来指定执行哪个方法
- 也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br />
- <a href="<%=context %>/user/userAdd">添加用户</a>
- <br />
- <a href="<%=context %>/user/user!add">添加用户</a>
- <br />
- 前者会产生太多的action,所以不推荐使用
- </body>
- </html>
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<% String context = request.getContextPath(); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Action执行的时候并不一定要执行execute方法<br />
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br />
<a href="<%=context %>/user/userAdd">添加用户</a>
<br />
<a href="<%=context %>/user/user!add">添加用户</a>
<br />
前者会产生太多的action,所以不推荐使用
</body>
</html>
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <constant name="struts.devMode" value="true" />
- <package name="user" extends="struts-default" namespace="/user">
- <action name="userAdd" class="com.hugui.struts2.user.action.UserAction" method="add">
- <result>/user_add_success.jsp</result>
- </action>
- <action name="user" class="com.hugui.struts2.user.action.UserAction">
- <result>/user_add_success.jsp</result>
- </action>
- </package>
- </struts>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="com.hugui.struts2.user.action.UserAction" method="add">
<result>/user_add_success.jsp</result>
</action>
<action name="user" class="com.hugui.struts2.user.action.UserAction">
<result>/user_add_success.jsp</result>
</action>
</package>
</struts>
- package com.hugui.struts2.user.action;
- import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport {
- public String add() {
- return SUCCESS;
- }
- }
本文介绍Struts2框架中的动态方法调用(DMI)技术,包括如何通过URL动态指定要执行的方法,以及如何利用通配符进行方法匹配。此外,还对比了配置文件中指定方法的不足。

84

被折叠的 条评论
为什么被折叠?



