Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Struts Flow

 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello Friends,
Can any one explain me the detailed flow of Struts?right from the url entry in the browser by the client to the response it gets.?
 
maha lakshmi
Greenhorn
Posts: 7
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
find the below Url
http://www.roseindia.net/struts/
 
Devi Sri
Ranch Hand
Posts: 115
Eclipse IDE Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

Struts flow of execution is like this:

1. You would enter an url in the browser.

2. Then, from the url and messageresources.properties file, it will identify the path to the action class, and the method name.

3. Then, after execution of the method, it will take the action mapping from the method, and be forwarded to the specified path in the struts-config.xml file.

4. In the struts-config.xml file, it will find the appropriate jsp file through the mapping.findforward name, and executes that jsp file.

Hope you got it.

Regards,
--Devisri.
 
Merrill Higginson
Ranch Hand
Posts: 4864
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If you're talking about Struts 1, the following link gives a good summary of the flow in Struts using UML diagrams. Pay particular attention to the sequece diagram.

http://rollerjm.free.fr/pro/Struts11.html
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thanks a lot for all the replies, but where does that messageresources.properties file lie??
where does the actionServlet lie??
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
when i enter the url in the browser, it will be .do page?
suppose it is login.do.

this then goes to the Url-Pattern :
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>?
after that it maps to the actionServlet using this:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>

in the Web.Xml file?
then it goes to struts-config.xml file using :
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
after it goes to struts-config.xml

the .do page will be mapped to the path attribute in the

<action-mappings>
<action input="/LoginForm.jsp" name="LoginActionForm" path="/login"
scope="request" type="com.myapp.struts.LoginAction" validate= "true">
<forward name="success" path="/Cust_Reg.jsp"/>
</action>
<action-mappings>?

now this /path attribute in <action input="/LoginForm.jsp" name="LoginActionForm" path="/login"
scope="request" type="com.myapp.struts.LoginAction" validate= "true">

should the same as

<html:form action="login">in the <action input="/LoginForm.jsp"> so that this will show the LoginForm.jsp?

after i enter the login id and password in this page these values will be stored in LoginActionForm formbean?
if validations are to be performed,they will be performed in the validate method of the form bean itself?

after the validations are performed, it will go to
<type="com.myapp.struts.LoginAction> action class where the business logic is to be performed and the forwarding decisions are made?
after this if success then it will forward to cust_reg.jsp using <forward name="success" path="/Cust_Reg.jsp"/>?

please explain me where i am correct and where i am wrong and then interpret the full flow in this way.?

Thanks and Regards,
-pankaj
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
if required, iam pasting those files over here.:

LoginForm.jsp is as follows:


<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LoginForm</title>
</head>
<body bgcolor="blue">

<h1>LoginForm</h1>
<html:form action="login" focus="name" >
<table border="1" align="center">
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td><bean:message key="login.name" /></td>
<td><html:text property="name" /></td>
</tr>
<tr>
<td><bean:message key="login.password"/></td>
<td><html assword property="password"/></td>
</tr>
<tr>
<td><html:submit value="Login" /></td>
<td><html:reset/></td>
</tr>
</tbody>
</table>
<html:errors />

</html:form>


</body>
</html>



LoginAction.java:

package com.myapp.struts;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;


public class LoginAction extends Action {

private final static String CANCEL = "cancel";
private final static String SUCCESS = "success";
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (isCancelled(request)){
return mapping.findForward(CANCEL);
}


return mapping.findForward(SUCCESS);

}
}

LoginActionForm

package com.myapp.struts;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;


public class LoginActionForm extends org.apache.struts.action.ActionForm {

private String name;
private String password;

public String getName() {
return name;
}

public String getPassword(){
return password;
}


public void setName(String string) {
name = string;
}

public void setPassword(String Password){
password = Password;
}

public LoginActionForm() {
super();
// TODO Auto-generated constructor stub
}

public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
ActionErrors errors = new ActionErrors();
if ((getName() == null || getName().length() < 1)||(getPassword()== null || getPassword().length()<1)) {
errors.add("name", new ActionMessage("error.name.required"));

}

return errors;

}
}

struts-config file:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">


<struts-config>
<form-beans>
<form-bean name="DelActionForm" type="com.myapp.struts.DelActionForm"/>
<form-bean name="LoginActionForm" type="com.myapp.struts.LoginActionForm"/>
<form-bean name="RegActionForm" type="com.myapp.struts.RegActionForm"/>
</form-beans>

<global-exceptions>

</global-exceptions>

<global-forwards>
<forward name="welcome" path="/welcome.do"/>

</global-forwards>

<action-mappings>
<action input="/LoginForm.jsp" name="LoginActionForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate= "true">
<forward name="success" path="/Cust_Reg.jsp"/>
</action>
<action input="/Cust_Reg.jsp" name="RegActionForm" path="/Cust_Reg" scope="request" type="com.myapp.struts.RegAction" validate="true">
<forward name="success" path="/Del_Dest.jsp"/>
</action>
<action input="/Del_Dest.jsp" name="DelActionForm" path="/Del_Dest" scope="request" type="com.myapp.struts.Del_DestAction" validate="true"/>
<forward name="success" path="/Del_Dest.jsp"/>
<action/>
<action path="/welcome" forward="/welcomeStruts.jsp"/>
</action-mappings>

<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

<message-resources
parameter="com/myapp/struts/ApplicationResource"/>

<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="moduleAware" value="true" />
</plug-in>

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

</struts-config>


Web.Xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<session-config><session-timeout>
30
</session-timeout></session-config><welcome-file-list><welcome-file>
index.jsp
</welcome-file></welcome-file-list></web-app>

Thanks and Regards,
Pankaj
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
In the above mentioned files,
what is the
1.Struts Controller or ActionServlet?
2.RequestProcessor?
3.Action?
4.ActionForm?
5.Business Delegate?
6.Helper?
7.View?

It's my humble request to make me understand them so that i can move ahead.
Thanks and Regards,
-Pankaj
 
Jeanne Boyarsky
author & internet detective
Marshal
Posts: 34401
346
Eclipse IDE Java VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Pankaj,
Have you read a book or Struts tutorial yet? This is a difficult question to answer without writing an article length reply.
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yeah , I know that it is a difficult question to answer,but actually i don't want the meaning of those terms,but i want the explaination of the flow and the location of message-resources,Struts Controller or ActionServlet,RequestProcessor.
and i just want to know
the
1.Struts Controller or ActionServlet?
2.RequestProcessor?
3.Action?
4.ActionForm?
5.Business Delegate?
6.Helper?
7.View?
 
Jeanne Boyarsky
author & internet detective
Marshal
Posts: 34401
346
Eclipse IDE Java VI Editor
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Pankaj,
Repeating the question doesn't make it shorter to answer.

The Struts manual has three paragraphs about the page view including the location and several pages on the flow.

Try to answer your questions from the manual and then post more specifically which ones you still have questions on - including what you understand about it so far. Seven general questions requires an essay to answer.
 
sitaram
Greenhorn
Posts: 26
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
There is form.It as three fields and one button.client will enter the three fields and press the submit button. at the time,the request goes to the controller. The controller reads the Structs-config.xml.The controller will check where exactly matches the request that related form bean ,action class will be executed.then related forward page will be display on the browser.
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello every one,
Thanks to all those who tried to help me...
I have got answer, i.e flow of struts.
but i am not able to guess where the ActionServlet and ProcessController lie.
if i ll be able to actually access those files so that i can know the contents of the same, i would be able to understand in detail.
I refered to the journal from javaranch
web page
 
Anubhav Anand
Ranch Hand
Posts: 341
Firefox Browser Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The ActionServlet is in the default package of struts "org.apache.struts.action.ActionServlet". Download the struts-src.zip to view the class.
 
Pankaj Shet
Ranch Hand
Posts: 294
Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
thanks a lot anubhav
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic