问题引出:如果有好几个form的action都是regist,但是又希望对应不同的class,我们就可以设置不同的package来定义不同的namespace,这样当访问同名的action,只要namespace设置对了就可以正确访问到class,例子如下
struts.xml文件内容如下
<package name="default" namespace="/" extends="struts-default">
<action name="regist" class="action.RegistOne">
<result>/content/success.jsp</result>
</action>
</package>
<package name="one" namespace="/test1" extends="struts-default">
<action name="regist" class="action.RegistTwo">
<result>/content/success.jsp</result>
</action>
</package>
<package name="two" namespace="/test2" extends="struts-default">
<action name="regist" class="action.RegistThree">
<result>/content/success.jsp</result>
</action>
</package>
定义三个类RegistOne、RegistTwo、RegistThree,用来标识不同的class,内容都差不多,我就不都贴出来了
package action;
import com.opensymphony.xwork2.ActionSupport;
public class RegistOne extends ActionSupport {
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println("这里是RegistOne");
return super.execute();
}
}
JSP文件这样写
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<s:form action="regist" namespace="/">
<s:submit value="访问one"/>
</s:form>
<s:form action="regist" namespace="/test1">
<s:submit value="访问two"/>
</s:form>
<s:form action="regist" namespace="/test2">
<s:submit value="访问three"/>
</s:form>
</body>
</html>
这样当我们按第一个按钮的时候应该就可以访问到第一个class啦~