Loading…

An Overview of Struts

Struts is a free, MVC-based, open-source framework that helps developers create modern Java applications. This framework prefers convention over configuration and is extensible through a plugin architecture. It was earlier placed under Apache Jakarta Project and called as Jakarta Struts. In 2005, it became one of the top level Apache projects. Struts is an Enterprise-ready framework that offers support for multiple view options and allows integrated debugging using the inbuilt tools. We have an impressive collection of Struts 1.2 interview questions and answers that is a must read for all developers and designers!

Development History

Struts was initially built by Craig McClanahan. Later, in May 2000, he gave it to Apache foundation. The first stable version was released in June 2001. Struts 2.0 was released in 2014. This information is commonly asked in Struts interview questions.

Latest Version: The latest version of Struts is 2.5.18 GA. It was released in October 2018. Read more about this if you are preparing for Struts interview questions and answers for 7 years experience.

Struts Interview Questions and answers

Looking for a new job? Do not miss to read our Struts Interview Questions and answers. Whether you are a fresher or an experienced, these questions and answers that can help you to crack your interview.

Struts is a free, MVC-based, open-source framework that helps developers create modern Java applications. This framework prefers convention over configuration and is extensible through a plugin architecture.

Struts was initially built by Craig McClanahan. The first stable version was released in June 2001. Struts 2.0 was released in 2014.

Following are the key components of Struts:

  • JSP Programs or View Layer Resources
  • FormBean Class Java Class or Controller Layer Resources
  • Action Servlet Built-in Controller Servlet or Controller Layer Resources
  • Action Class Java Class or Controller Layer Resources
  • web.xml Deployment Descriptor file of the web application
  • Struts Configuration File XML File or Controller Layer Resources
S.no Spring MVC Struts
1. Noninvasive Invasive
2. Loosely coupled Tightly Coupled
3. Layered architecture Not layered architecture
S.no Struts 1 Struts 2
1. Form beans define properties, setters and getters Getters and Setters are defined in action classes
2. Execute() method exposes servlet API for testing Dependency Injection simplifies the testing process
3. Multiple tag libraries The single library includes all tags
4. RequestProcessor class present Interceptors present

Installation process can be divided in four steps that's are given below:

  • Setup Java Development Kit
  • Setup Apache Tomcat
  • Setup Eclipse
  • Setup Struts2 Libraries
S.no DispatchAction LookupDispatchAction
1. Parent class of LookupDispatchAction Subclass of Dispatch Action
2. More useful if not using Internalization function Useful when using Internalization
3. Not useful in I18N Useful in I18N

Duplicate form submission can occur when you by refresh the page, press back button, or if there is a virus in your machine.

There are 2 ways to prevent duplicate requests:

  • Through isTokenValid() method
  • By managing clearing request object.

ActionServlet is like a "controller" in the MVC architecture for web apps which is known as Model 2. The requests to server pass through the controller, which is responsible for managing requests.

The usual flow in struts begins with the ActionServlet and call to process() method of RequestProcessor.

An ActionForm is a JavaBean that is associated with ActionMappings and handles session state for the apps. The ActionForm object populates automatically on the server side when any set of data is entered on the client side.

If you are preparing for Struts interviews, you can read Struts interview questions and answers for freshers for clarity and insight.

validate() is like a hook that can be overridden by different subclasses for performing validations on incoming data. This method gets called after a Form Bean gets populated with incoming data. This method includes return type ActionErrors.

Syntax is:

public ActionErrors validate(ActionMapping mapping,HttpServletRequest request)

reset() is a method that gets overridden by subclasses. It is a hook that gets summoned before FormBean gets populated with request data from HTML. Using this method, all form fields get reset.

Syntax is:

public void reset() {}

ActionMapping represents the information that is known to RequestProcessor about the mapping of a specific request to a specific Action class. This instance is used to select an Action and then passing on to that Action, thus providing access to configuration information included in the ActionMapping object.

Struts use the model 2 MVC architecture. The controller takes the command design pattern and the action classes have the adapter design pattern. In addition, the process() method of RequestProcessor uses template method design pattern.

This framework also implements the J2EE design patterns:

  • Service to Worker
  • Dispatcher View
  • Composite View (Struts Tiles)
  • Front Controller
  • View Helper
  • Synchronizer Token

The Struts framework uses one or more configuration files to load and create required application-specific components. These configuration files allow the components to be declaratively specified, rather than having hardcoded behavior and information. This can give you the flexibility to provide your own extensions. Based on XML format, configuration files can be validated against Struts DTD.

 

We can configure with the help of few important configuration files like struts.xml, web.xml,strutsconfig.xml and struts.properties

S.no Validator-rules.xml Validation.xml
1. Defines standard validation routines Defines validations that apply to form bean
2. For global specific rules For application specific rules
3. Contain logic for validation Contains types of validation

Validation error arises when a user enters invalid data format into the form. In order to validate this data, Struts enables the developer or programmer with the Validator() method for validating the data from the client side as well as the server side. You can display errors in the JSP page by using this syntax:
SYNTAX: <html:error/>

In Struts, DynaActionForm is a feature which allows the dynamic creation of ActionForm beans through the XML configuration. In such applications, Form beans are virtual and not hard-coded ActionForm classes.

This reduces the tedious process of managing and creating ActionForm classes.

Tiles are used for creating reusable presentation components. When using Tiles, first define a base layout with various sections. Next, define jsp page that should fill the corresponding regions in an external configuration file.

 

There are two ways to specify definition and attributes of Tiles - JSP Tile Definition and XML Tile Definition.

OGNL or Object-Graph Navigation Language is an open-source Expression Language that allows the navigation of objects (through syntax) for specifying symmetrically settable values. The syntax provides a high level of abstraction for navigating object graphs. This feature allows for simple array manipulation.

Technically, there is no difference between them Apache Struts and Jakarta Struts. They are both similar. Craig McClanahan created Struts and donated it to Apache Foundation. Later, it evolved as a Jakarta project and gained popularity in the J2EE community.

There are 5 core classes in Struts framework:

  • ActionServlet
  • ActionForm
  • Action
  • Action Mapping
  • ActionForward

 

This is one of the most repeatedly asked Java Struts 1.2 interview questions and answers.

To configure the Struts2 action mapping we have to add an action node inside the configuration file struts.xml.

Here is an example for this:

<action name="*welcome" class="example.action.mapping.LinkAction" method="execute">

     <result name="success">/welcome.jsp</result>

     <result name="error">/error.jsp</result>

</action>

You can use the following technologies in the view layer in Struts:

  • JSP
  • HTML
  • XML/XSLT
  • WML Files
  • Velocity Templates
  • Servlets

Struts framework offers a number of built-in validators which are called as bundled validators. These validators are for input validations such as email, phone number, user id.

Struts offer the following bundled validators.

  • requiredstring validator
  • stringlength validator
  • email validator
  • date validator
  • int validator
  • double validator
  • url validator
  • regex validator

jsonValidation interceptor is utilized to perform AJAX validation.

Field validators

  • Act on single fields that are accessible through action
  • More generic
  • Offer validations in full content

Non-field validators

  • Only add action level messages
  • Mostly domain specific
  • Offer custom implementations
  • Allows to declare both types of validators
Ask Question