Struts 2 Namespace is a new concept to handle the multiple modules by given a namespace to each module. In addition, it can used to avoid conflicts between same action names located at different modules.

Struts 2 Namespaces are the equivalent of Struts 1 multiple modules

See this picture to understand how a URL match to Struts 2 action namespace.

namespace map url

1. Namespace configuration

Let go through a Struts 2 namescape configuration example to know how it match with URL and folder.

P.S The package “name” will not affect the result, just give a meaningful name.

struts.xml

<?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>
 
<package name="default" namespace="/" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>
 
<package name="common" namespace="/common" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>
 
<package name="user" namespace="/user" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>
 
</struts>

Struts 2 action namespace map to folder structure.

namespace map folder

2. JSP View Pages

3 JSP view pages with same file name but locate at different modules.

Root – webapp/pages/welcome.jsp

<html>
<head></head>
<body>
<h1>Struts 2 Namespace Example</h1>
 
<h4>Welcome - namespace = "root"</h4>
 
</body>
</html>

Common module – webapp/common/pages/welcome.jsp

<html>
<head></head>
<body>
<h1>Struts 2 Namespace Example</h1>
 
<h4>Welcome - namespace = "common"</h4>
 
</body>
</html>

User module – webapp/user/pages/welcome.jsp

<html>
<head></head>
<body>
<h1>Struts 2 Namespace Example</h1>
 
<h4>Welcome - namespace = "user"</h4>
 
</body>
</html>

3. Mapping – How it work?

Example 1
URL : http://localhost:8080/Struts2Example/SayWelcome.action
Will match the root namespace.

<package name="default" namespace="/" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>

And display the content of webapp/pages/welcome.jsp.

Example 2
URL : http://localhost:8080/Struts2Example/common/SayWelcome.action
Will match the common namespace.

<package name="common" namespace="/common" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>

And display the content of webapp/common/pages/welcome.jsp.

Example 3
URL : http://localhost:8080/Struts2Example/user/SayWelcome.action
Will match the user namespace.

<package name="user" namespace="/user" extends="struts-default">
	<action name="SayWelcome">
		<result>pages/welcome.jsp</result>
	</action>
</package>

And display the content of webapp/user/pages/welcome.jsp.

Reference

  1. Struts 2 Namespace Configuration Reference
Tags :
Founder of Mkyong.com and HostingCompass.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider making a donation to this charity, thanks.

Related Posts

Popular Posts