Struts uses the configuration file (struts.xml) to initialise its resources such as interceptors, actions and resources. The interceptor may be preprocessor or postprocessor. The resource files is used to prepare views, templates and velocity. The struts.xml file is core configuration file for struts application.
Before configuring the struts.xml file you also need to do filter mapping in web.xml file. This filter is the StrutsPrepareAndExecuteFilter. An example of mapped web.xml file is given below
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>Struts2 JSP Example</display-name> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
The following is the structure of the struts.xml file
<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <!-- Package Mapping --> <package name="roseindia" namespace="/roseindia" extends="struts-default"> <!-- Action Mapping --> <action name="helloWorld" class="net.roseindia.HelloWorld"> <result>/jsp/HelloWorld.jsp</result> </action> </package> </struts>
The struts.xml file must confirmed that it is using DTD Struts Configuration 2.0. This file provides the information about the elements and structure that the struts.xml file should have.
Here the package name is the roseindia you can give any name to the package. Package is the way to group the action, interceptors and views together in a logical unit.
The action tag contains the name of the action, class and results which forwards the action by matching there names.
The Mapping for above action can be done as
<?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> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="roseindia" namespace="/roseindia" extends="struts-default"> <action name="loginPage"> <result>/jsp/test.jsp</result> </action> <action name="doLogin" class="net.roseindia.SimpleAction"> <result name="error">/jsp/test.jsp</result> <result name="success">/jsp/home.jsp</result> </action> </package> </struts>
Here net.roseindia is the full package path of SimpleAction class, and its action name is given "doLogin". The resul forwarded the control to the test.jsp and home.jsp when its matching is found.
Advertisements
Ads
Ads