动态的方法调用: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;
- }
- }