Struts – Wildcards example

时间:2023-03-09 17:28:32
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.