一个web应用可能有很多action声明。可以利用struts提供的通配符映射机制,把多个彼此相似的映射关系简化为一个映射关系。
通配符规则:
1.若找到多个匹配,没有通配符的那个执行
2。若制定动作不存在,struts将将尝试把uri与任何一个包含着通配符*的动作名及进行匹配
3.被通配符匹配到的uri字符串的子串可以用{1},{2}来引用。
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="UserAction-*" class="com.hcx.action.UserAction" method={1}">
<result name="{1}-success">/success.jsp</result>
</action>
<!--
<action name="UserAction-update" class="com.hcx.action.UserAction">
<result name="update-success">/success.jsp</result>
</action>
<action name="UserAction-delete" class="com.hcx.action.UserAction">
<result name="delete-success">/success.jsp</result>
</action>
<action name="UserAction-query" class="com.hcx.action.UserAction">
<result name="query-success">/success.jsp</result>
</action>
-->
</package>
</struts>
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<a href="UserAction-save">User save</a><br>
<a href="UserAction-update">User update</a><br>
<a href="UserAction-delete">User delete</a><br>
<a href="UserAction-query">User query</a><br>
</body>
</html>
UserAction.java:
package com.hcx.action;
public class UserAction {
public String save() {
System.out.println("save");
return "save-success";
}
public String update() {
System.out.println("update");
return "update-success";
}
public String delete() {
System.out.println("delete");
return "delete-success";
}
public String query() {
System.out.println("query");
return "query-success";
}
}