Struts – Wildcards example

Struts wildcards can helps to reduce the repetition in your struts-config.xml file, as long as your Struts project is following some regular file structure. For example, in User module, to implement the CRUD function, your struts-config.xml may look like following

1. No Wildcards

You need to create four action mappings for each list, add, delete and update function, and a lot of repetition.

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
 
<struts-config>
	
	<action-mappings>

	 	<action
			path="/ListUserAction"
			type="com.mkyong.common.action.UserAction"
			parameter="ListUser"
			>
 
			<forward name="success" path="/pages/ListUser.jsp"/>
 
		</action>
		
		<action
			path="/AddUserAction"
			type="com.mkyong.common.action.UserAction"
			parameter="AddUser"
			>
 
			<forward name="success" path="/pages/AddUser.jsp"/>
 
		</action>
		
		<action
			path="/EditUserAction"
			type="com.mkyong.common.action.UserAction"
			parameter="EditUser"
			>
 
			<forward name="success" path="/pages/EditUser.jsp"/>
 
		</action>
		
		<action
			path="/DeleteUserAction"
			type="com.mkyong.common.action.UserAction"
			parameter="DeleteUser"
			>
 
			<forward name="success" path="/pages/DeleteUser.jsp"/>
 
		</action>
		
		
	</action-mappings>
	
</struts-config>

2. With Wildcards

With Struts wildcards feature, your struts-config.xml can cut down into one action mapping.

struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" 
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
 
<struts-config>
	
	<action-mappings>

	 	<action
			path="/*UserAction"
			type="com.mkyong.common.action.UserAction"
			parameter="{1}User"
			>
 
			<forward name="success" path="/pages/{1}User.jsp"/>
 
		</action>

	</action-mappings>
	
</struts-config>

Let’s see an use case, try access via http://localhost:8080/StrutsExample/EditUserAction.do. The “EditUserAction.do” will match the “/*UserAction” pattern, and the * matched string “Edit” is represent by {1} for later use.

In above case, the wildcards action mapping will change from

       <action
		path="/*UserAction"
		type="com.mkyong.common.action.UserAction"
		parameter="{1}User"
	>
 
	<forward name="success" path="/pages/{1}User.jsp"/>
 
	</action>

to

       <action
		path="/EditUserAction"
		type="com.mkyong.common.action.UserAction"
		parameter="EditUser"
	>
 
	<forward name="success" path="/pages/EditUser.jsp"/>
 
	</action>

Conclusion

Both struts-config.xml samples have the same functionality, but with less repetition in wildcards support. However, DO NOT overuse this wildcards feature in your project, it’s less manageable than the normal declaration.

posted @ 2015-08-28 13:29  wuhn  阅读(183)  评论(0编辑  收藏  举报