+ All Categories
Home > Documents > Strut Framework Basics

Strut Framework Basics

Date post: 12-Sep-2021
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
42
25/01/54 1 Strut Framework Basics
Transcript
Page 1: Strut Framework Basics

25/01/54 1

Strut FrameworkBasics

Page 2: Strut Framework Basics

225/01/54

Agenda

Introduction of MVC pattern Evolution of Web Application design

architectureModel 1Model 2Application frameworks

Apache Struts

Page 3: Strut Framework Basics

325/01/54

MVC Pattern

Page 4: Strut Framework Basics

425/01/54

Three Logical Layers in a WebApplication: Model Model (Business process layer)

Models the data and behavior behind the business process

Responsible for actually doing Performing DB queries Calculating the business process Processing orders

Encapsulate of data and behavior which are independent of presentation

Page 5: Strut Framework Basics

525/01/54

Three Logical Layers in a WebApplication: View View (Presentation layer)Display information according to client

typesDisplay result of business logic (Model)Not concerned with how the information

was obtained, or from where (since that is the responsibility of Model)

Page 6: Strut Framework Basics

625/01/54

Three Logical Layers in a WebApplication: Controller Controller (Control layer)

Serves as the logical connection between the user's interaction and the business services on the back

Responsible for making decisions among multiple presentations e.g. User's language, locale or access level dictates a

different presentation. A request enters the application through the control

layer it will decide how the request should be handled and what information should be returned

Page 7: Strut Framework Basics

725/01/54

Evolution of MVC Architecture

No MVC MVC Model 1 (Page-centric) MVC Model 2 (Servlet-centric) Web application frameworks

Struts Standard-based Web application framework

JavaServer Faces (JSR-127)

Page 8: Strut Framework Basics

825/01/54

Model 1 Architecture (Page-centric)

Page 9: Strut Framework Basics

925/01/54

Page-centric Architecture

Composed of a series of interrelated JSP pages JSP pages handle all aspects of the application

presentation, control, and business process

Business process logic and control decisions are hard coded inside JSP pages in the form of JavaBeans, scriptlets, expression

Next page selection is determined by A user clicking on a hyper link, e.g. <A HERF="find.jsp> Through the action of submitting a form, e.g. <FORM ACTION="search.jsp">

Page 10: Strut Framework Basics

1025/01/54

Page-centric Architecture

Page 11: Strut Framework Basics

1125/01/54

Page-centric Scenario

Page 12: Strut Framework Basics

1225/01/54

Model 2 Architecture (Servlet-centric)

Page 13: Strut Framework Basics

1325/01/54

Why Model 2 Architecture?

What if you want to present different JSP pages depending on the data you receive? JSP technology alone even with JavaBeans and

custom tags (Model 1) cannot handle it well Solution

Use Servlet and JSP together (Model 2) Servlet handles initial request, partially process the

data, set up beans, then forward the results to one of a number of different JSP pages

Page 14: Strut Framework Basics

1425/01/54

Servlet-centric Architecture

JSP pages are used only for presentation Control and application logic handled by a servlet (or set of

servlets) Servlet serves as a gatekeeper

Provides common services, such as authentication, authorization, login, error handling, and etc

Servlet serves as a central controller Act as a state machine or an event dispatcher to decide upon the

appropriate logic to handle the request Performs redirecting

Page 15: Strut Framework Basics

1525/01/54

Servlet-centric Scenario

Page 16: Strut Framework Basics

1625/01/54

Web Application Frameworks

Based on MVC Model 2 architecture Web-tier applications share common set of

functionalityDispatching HTTP requests Invoking model methodsSelecting and assembling views

Provide classes and interfaces that can be used/extended by developers

Page 17: Strut Framework Basics

1725/01/54

Why Web Application Framework?

Built-in de-coupling of presentation tier and business logic into separate components

Provides a central point of control Provides rich set of features Facilitates unit-testing and maintenance Availability of compatible tools Provides stability Enjoys community-supports Simplifies internationalization Simplifies input validation

Page 18: Strut Framework Basics

1825/01/54

Why Web Application Framework?

Frameworks have evolved with Java Server technologyJSP/Servlets are still hard to use

Frameworks define re-usable components to make this job easier.

A good framework defines how components work to create a usable application.

Page 19: Strut Framework Basics

1925/01/54

Web Application Frameworks

Apache Struts JavaServer Faces (JSR-127)A server side user interface component

framework for JavaTM technology-based web applications

Echo Tapestry

Page 20: Strut Framework Basics

2025/01/54

Apache Struts

Struts is an open source Web application framework developed as Apache Jakarta project http://jakarta.apache.org/struts/

Model-View-Controller (MVC) framework Used for constructing web applications based

Servlets and JSP technologies Struts application is a genuine Web application that

should be able to run on any Sevlet container including all JavaEE compliant App servers

Page 21: Strut Framework Basics

2125/01/54

How Struts Works

Page 22: Strut Framework Basics

2225/01/54

The controller components

Page 23: Strut Framework Basics

2325/01/54

Sample Application Things to doCreating ActionForm object

Input validationCreating Action object

Forwarding at either success or failure through configuration set in struts-config.xml file

You can also build it using NetBeans

Page 24: Strut Framework Basics

2425/01/54

Step by Step1. Create development directory structure2. Write web.xml3. Write struts-config.xml4. Write ActionForm classes5. Write Action classes6. Create ApplicationResource.properties7. Write JSP pages8. Build, deploy, and test the application

Page 25: Strut Framework Basics

2525/01/54

Step 1: Create DevelopmentDirectory Structure Same development directory structure for

any typical Web application Ant build script should be written

accordingly If you are using NetBeans, the

development directory structure is automatically created

Page 26: Strut Framework Basics

2625/01/54

Step 2: Write web.xmlDeployment Descriptor Same structure as any other Web application

ActionServlet is like any other servlet Servlet definition and mapping of ActionServlet

needs to be specified in the web.xml There are several Struts specific

<init-param> elements Location of Struts configuration file

Struts tag libraries could be defined

Page 27: Strut Framework Basics

2725/01/54

Example: web.xml1.<?xml version="1.0" encoding="UTF-8"?>2.<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/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">3. <servlet>4. <servlet-name>action</servlet-name>5. <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>6. <init-param>7. <param-name>config</param-name>8. <param-value>/WEB-INF/struts-config.xml</param-value>9. </init-param>10. ...11. </servlet>12. <servlet-mapping>13. <servlet-name>action</servlet-name>14. <url-pattern>*.do</url-pattern>15. </servlet-mapping>

Page 28: Strut Framework Basics

2825/01/54

Step 3: Writestruts-config.xml Identify required input forms and then define

them as <form-bean> elements Identify required Action's and then define them

as <action> elements within <action-mappings>elementmake sure same value of name attribute of <form-

bean> is used as the value of name attribute of <action> element

define if you want input validation Decide view selection logic and specify them as

<forward> element within <action> element

Page 29: Strut Framework Basics

2925/01/54

struts-config.xml: <form-beans>1.<?xml version="1.0" encoding="UTF-8" ?>2.<!DOCTYPE struts-config PUBLIC3."-//Apache Software Foundation//DTD Struts Configuration

1.2//EN"4."http://jakarta.apache.org/struts/dtds/struts-

config_1_2.dtd">

5.<struts-config>6. <form-beans>7. <form-bean name="submitForm"8. type="submit.SubmitForm"/>9. </form-beans>

Page 30: Strut Framework Basics

3025/01/54

struts-config.xml: <action mappings>

10. <!-- ==== Action Mapping Definitions ==============-->11. <action-mappings>12. <action path="/submit"13. type="submit.SubmitAction"14. name="submitForm"15. input="/submit.jsp"16. scope="request"17. validate="true">18. <forward name="success" path="/submit.jsp"/>19. <forward name="failure" path="/submit.jsp"/>20. </action>21. </action-mappings>s

Page 31: Strut Framework Basics

3125/01/54

Step 4: Write ActionForm classes Extend org.apache.struts.action.ActionForm

class Decide set of properties that reflect the input

form Write getter and setter methods for each

property Write validate() method if input validation is

desired

Page 32: Strut Framework Basics

3225/01/54

Write ActionForm class1.package submit;2.import javax.servlet.http.HttpServletRequest;3.import org.apache.struts.action.*;4.public final class SubmitForm extends ActionForm {5. /* Last Name */6. private String lastName = "Hansen"; // default value7. public String getLastName() {8. return (this.lastName);9. }10. public void setLastName(String lastName) {11. this.lastName = lastName;12. }13. /* Address */14. private String address = null;15. public String getAddress() {16. return (this.address);17. }18. public void setAddress(String address) {19. this.address = address;20. }21....

Page 33: Strut Framework Basics

3325/01/54

Write validate() method22. public ActionErrors validate(ActionMapping mapping,23. HttpServletRequest request) {24. // Check for mandatory data25. ActionErrors errors = new ActionErrors();26. if (lastName == null || lastName.equals("")) {27. errors.add("Last Name", new 28. ActionError("error.lastName"));29. }30. if (address == null || address.equals("")) {31. errors.add("Address", new ActionError("error.address"));32. }33. if (sex == null || sex.equals("")) {34. errors.add("Sex", new ActionError("error.sex"));35. }36. if (age == null || age.equals("")) {37. errors.add("Age", new ActionError("error.age"));38. }39. return errors;40. }41. ...

Page 34: Strut Framework Basics

3425/01/54

Step 5: Write Action classes

Extend org.apache.struts.action.Actionclass

Handle the requestDecide what kind of server-side Model objects

(EJB, JDO, etc.) can be invoked

Based on the outcome, select the next view

Page 35: Strut Framework Basics

3525/01/54

Example: Action Class1.package submit;2.import javax.servlet.http.*;3.import org.apache.struts.action.*;4.public final class SubmitAction extends Action {5. public ActionForward execute(ActionMapping mapping,6. ActionForm form,7. HttpServletRequest request,8. HttpServletResponse response) {9. SubmitForm f = (SubmitForm) form; // get the form bean10. // and take the last name value11. String lastName = f.getLastName();12. // Translate the name to upper case13. //and save it in the request object14. request.setAttribute("lastName", lastName.toUpperCase());15.16. // Forward control to the specified success target17. return (mapping.findForward("success"));18. }19.}

Page 36: Strut Framework Basics

3625/01/54

Step 6: CreateApplicationResource.properties and Configure web.xml accordingly

1.errors.header=<h4>Validation Error(s)</h4><ul>2.errors.footer=</ul><hr>3.error.lastName=<li>Enter your last name4.error.address=<li>Enter your address5.error.sex=<li>Enter your sex6.error.age=<li>Enter your age

Example: ApplicationResource.properties

Page 37: Strut Framework Basics

3725/01/54

Step 7: Write JSP pages

Write one JSP page for each view Use Struts tags forHanding HTML input formsWriting out messages

Page 38: Strut Framework Basics

3825/01/54

Example:submit.jsp1. <%@ page language="java" %>2. <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>3. <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>4. <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>5. <html>6. <head><title>Submit example</title></head>7. <body>8. <h3>Example Submit Page</h3>9. <html:errors/>10. <html:form action="submit.do">11. Last Name: <html:text property="lastName"/><br>12. Address: <html:textarea property="address"/><br>13. Sex: <html:radio property="sex" value="M"/>Male14. <html:radio property="sex" value="F"/>Female<br>15. Married: <html:checkbox property="married"/><br>16. Age: <html:select property="age">17. <html:option value="a">0-19</html:option>18. <html:option value="b">20-49</html:option>19. <html:option value="c">50-</html:option>20. </html:select><br>21. <html:submit/>22.</html:form>

Page 39: Strut Framework Basics

3925/01/54

Example: submit.jsp (cont.)...

23. <logic:present name="lastName" scope="request">24. Hello25. <logic:equal name="submitForm" property="age" value="a">26. young27. </logic:equal>28. <logic:equal name="submitForm" property="age" value="c">29. old30. </logic:equal>31. <bean:write name="lastName" scope="request"/>32.</logic:present>33.</body>34.</html>

Page 40: Strut Framework Basics

4025/01/54

Step 8: Build, Deploy,and Test Application

Page 41: Strut Framework Basics

4125/01/54

Accessing Web Application

Page 42: Strut Framework Basics

4225/01/54

Acknowledgement

Most contents are borrowed from thepresentation slides of Sang Shin, Java™Technology Evangelist, Sun Microsystems,Inc.


Recommended