SlideShare a Scribd company logo
Step by Step Guide
for building a simple
 Struts Application


                        1
Sang Shin
    sang.shin@sun.com
 www.javapassion.com/j2ee
Java™ Technology Evangelist
   Sun Microsystems, Inc.
                              2
Sample App We are
  going to build



                    3
Sample App
● Keld Hansen's submit application
● Things to do

     –   Creating ActionForm object
     –   Creating Action object
     –   Forwarding at either success or failure through
         configuration set in struts-config.xml file
     –   Input validation
     –   Internationalizaition
●   You can also build it using NetBeans

                                                           4
Steps to follow



                  5
Steps
1.Create development directory structure
2.Write web.xml
3.Write struts-config.xml
4.Write ActionForm classes
5.Write Action classes
6.Create ApplicationResource.properties
7.Write JSP pages
8.Build, deploy, and test the application

                                            6
Step 1: Create Development
    Directory Structure


                         7
Development Directory
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


                                               8
Step 2: Write web.xml
Deployment Descriptor


                        9
web.xml
●   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

                                                          10
Example: web.xml
1 <?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/j2ee
http://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>
                                                                                  11
Step 3: Write
struts-config.xml


                    12
struts-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>
    element
    –   make 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
                                                       13
struts-config.xml: <form-beans>
1    <?xml version="1.0" encoding="UTF-8" ?>
2
3    <!DOCTYPE struts-config PUBLIC
4    "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
5    "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
6
7
8    <struts-config>
9      <form-beans>
10          <form-bean   name="submitForm"
11                       type="submit.SubmitForm"/>
12     </form-beans>




                                                                    14
struts-config.xml:
<action-mappings>
 1
 2 <!-- ==== Action Mapping Definitions ===============-->
 3    <action-mappings>
 4
 5       <action path="/submit"
 6             type="submit.SubmitAction"
 7             name="submitForm"
 8             input="/submit.jsp"
 9             scope="request"
 10              validate="true">
 11         <forward name="success" path="/submit.jsp"/>
 12         <forward name="failure" path="/submit.jsp"/>
 13       </action>
 14
 15    </action-mappings>


                                                             15
Step 4: Write
ActionForm classes


                     16
ActionForm Class
●   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


                                                  17
Write ActionForm class
1    package submit;
2
3    import javax.servlet.http.HttpServletRequest;
4    import org.apache.struts.action.*;
5
6    public final class SubmitForm extends ActionForm {
7
8      /* Last Name */
9      private String lastName = "Hansen"; // default value
10     public String getLastName() {
11       return (this.lastName);
12     }
13     public void setLastName(String lastName) {
14       this.lastName = lastName;
15     }
16
17     /* Address */
18     private String address = null;
19     public String getAddress() {
20       return (this.address);
21     }
22     public void setAddress(String address) {
23       this.address = address;
24     }                                                      18
Write validate() method
1    public final class SubmitForm extends ActionForm {
2
3    ...
4      public ActionErrors validate(ActionMapping mapping,
5         HttpServletRequest request) {
6
7      ...
8
9       // Check for mandatory data
10       ActionErrors errors = new ActionErrors();
11       if (lastName == null || lastName.equals("")) {
12         errors.add("Last Name", new ActionError("error.lastName"));
13       }
14       if (address == null || address.equals("")) {
15         errors.add("Address", new ActionError("error.address"));
16       }
17       if (sex == null || sex.equals("")) {
18         errors.add("Sex", new ActionError("error.sex"));
19       }
20       if (age == null || age.equals("")) {
21         errors.add("Age", new ActionError("error.age"));
22       }
23       return errors;
24     }                                                                 19
Step 5: Write
Action classes


                 20
Action Classes
●   Extend org.apache.struts.action.Action class
●   Handle the request
    –   Decide what kind of server-side Model objects
        (EJB, JDO, etc.) can be invoked
●   Based on the outcome, select the next view




                                                        21
Example: Action Class
1 package submit;
2
3 import javax.servlet.http.*;
4 import org.apache.struts.action.*;
5
6 public final class SubmitAction extends Action {
7
8    public ActionForward execute(ActionMapping mapping,
9                                 ActionForm form,
10                                HttpServletRequest request,
11                                HttpServletResponse response) {
12
13      SubmitForm f = (SubmitForm) form; // get the form bean
14      // and take the last name value
15      String lastName = f.getLastName();
16      // Translate the name to upper case
17      //and save it in the request object
18      request.setAttribute("lastName", lastName.toUpperCase());
19
20      // Forward control to the specified success target
21      return (mapping.findForward("success"));
22    }
23 }                                                                22
Step 6: Create
ApplicationResource.properties
    and Configure web.xml
          accordingly


                                 23
Resource file
●   Create resource file for default locale
●   Create resource files for other locales




                                              24
Example:
ApplicationResource.properties
1   errors.header=<h4>Validation Error(s)</h4><ul>
2   errors.footer=</ul><hr>
3
4   error.lastName=<li>Enter your last name
5   error.address=<li>Enter your address
6   error.sex=<li>Enter your sex
7   error.age=<li>Enter your age




                                                     25
Step 7: Write JSP pages


                          26
JSP Pages
●   Write one JSP page for each view
●   Use Struts tags for
    –   Handing HTML input forms
    –   Writing out messages




                                       27
Example: submit.jsp
1    <%@ 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
6    <html>
7    <head><title>Submit example</title></head>
8    <body>
9
10    <h3>Example Submit Page</h3>
11
12    <html:errors/>
13
14    <html:form action="submit.do">
15    Last Name: <html:text property="lastName"/><br>
16    Address: <html:textarea property="address"/><br>
17    Sex:     <html:radio property="sex" value="M"/>Male
18          <html:radio property="sex" value="F"/>Female<br>
19    Married: <html:checkbox property="married"/><br>
20    Age:     <html:select property="age">
21            <html:option value="a">0-19</html:option>
22            <html:option value="b">20-49</html:option>
23            <html:option value="c">50-</html:option>
24          </html:select><br>
25          <html:submit/>
                                                                    28
26    </html:form>
Example: submit.jsp
1    <logic:present name="lastName" scope="request">
2    Hello
3    <logic:equal name="submitForm" property="age" value="a">
4     young
5    </logic:equal>
6    <logic:equal name="submitForm" property="age" value="c">
7     old
8    </logic:equal>
9    <bean:write name="lastName" scope="request"/>
10    </logic:present>
11
12    </body>
13    </html>




                                                                29
Step 8: Build, Deploy,
and Test Application


                         30
Accessing Web Application




                            31
Accessing Web Application




                            32
Accessing Web Application




                            33
Passion!


           34

More Related Content

PDF
Redux vs Alt
PPTX
PDF
Switch to React.js from AngularJS developer
PPTX
Academy PRO: React JS. Redux & Tooling
PPTX
Redux training
PDF
React + Redux. Best practices
PDF
React redux
PPTX
React & redux
Redux vs Alt
Switch to React.js from AngularJS developer
Academy PRO: React JS. Redux & Tooling
Redux training
React + Redux. Best practices
React redux
React & redux

What's hot (20)

PDF
React state managmenet with Redux
PDF
What's Coming in Spring 3.0
PDF
Basic Tutorial of React for Programmers
PPTX
React + Redux Introduction
PDF
React & Redux
PPTX
ProvJS: Six Months of ReactJS and Redux
PPTX
Introduction to react and redux
PPTX
React with Redux
PDF
Intro to Redux | DreamLab Academy #3
PDF
React, Redux, ES2015 by Max Petruck
PDF
React.js or why DOM finally makes sense
PPTX
React / Redux Architectures
PDF
React JS and Redux
PDF
Introduction to Redux
PDF
Quick start with React | DreamLab Academy #2
PDF
Practical Protocol-Oriented-Programming
PDF
An Introduction to ReactJS
PDF
Easy tests with Selenide and Easyb
PDF
React Native: JS MVC Meetup #15
PDF
React.js and Redux overview
React state managmenet with Redux
What's Coming in Spring 3.0
Basic Tutorial of React for Programmers
React + Redux Introduction
React & Redux
ProvJS: Six Months of ReactJS and Redux
Introduction to react and redux
React with Redux
Intro to Redux | DreamLab Academy #3
React, Redux, ES2015 by Max Petruck
React.js or why DOM finally makes sense
React / Redux Architectures
React JS and Redux
Introduction to Redux
Quick start with React | DreamLab Academy #2
Practical Protocol-Oriented-Programming
An Introduction to ReactJS
Easy tests with Selenide and Easyb
React Native: JS MVC Meetup #15
React.js and Redux overview
Ad

Viewers also liked (18)

PPT
Java & J2EE Struts with Hibernate Framework
PPTX
Introduction to Struts 2
PPT
Struts Introduction Course
PPTX
Frameworks in java
PDF
Build Java Web Application Using Apache Struts
PDF
Step by Step Guide for building a simple Struts Application
PDF
Struts Basics
PPTX
A brief overview of java frameworks
PPTX
Introduction to j2 ee frameworks
PDF
Hibernate ORM: Tips, Tricks, and Performance Techniques
PPTX
Spring Web MVC
PPT
Intro To Hibernate
ODP
Hibernate Developer Reference
PDF
Hibernate Presentation
PPTX
Introduction to Spring Framework
PDF
Spring Framework - Core
PPT
Spring ppt
PDF
Building Enterprise Application with J2EE
Java & J2EE Struts with Hibernate Framework
Introduction to Struts 2
Struts Introduction Course
Frameworks in java
Build Java Web Application Using Apache Struts
Step by Step Guide for building a simple Struts Application
Struts Basics
A brief overview of java frameworks
Introduction to j2 ee frameworks
Hibernate ORM: Tips, Tricks, and Performance Techniques
Spring Web MVC
Intro To Hibernate
Hibernate Developer Reference
Hibernate Presentation
Introduction to Spring Framework
Spring Framework - Core
Spring ppt
Building Enterprise Application with J2EE
Ad

Similar to Step By Step Guide For Buidling Simple Struts App (20)

PDF
Stepbystepguideforbuidlingsimplestrutsapp 090702025438-phpapp02
PDF
JavaServer Faces 2.0 - JavaOne India 2011
PDF
Struts An Open-source Architecture for Web Applications
PDF
Struts tutorial
PDF
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
PDF
Unit 07: Design Patterns and Frameworks (3/3)
PPT
Project Description Of Incident Management System Developed by PRS (CRIS) , N...
PPTX
Local SQLite Database with Node for beginners
PPT
Struts Overview
DOC
Ad java prac sol set
PPTX
struts unit best pdf for struts java.pptx
PPTX
struts unit best pdf for struts java.pptx
KEY
BlackBerry DevCon 2011 - PhoneGap and WebWorks
PDF
Java Web Development with Stripes
PPT
Web based development
PDF
Rest web service_with_spring_hateoas
PDF
A portlet-API based approach for application integration
PDF
ASP.NET Overview - Alvin Lau
KEY
Integrating Wicket with Java EE 6
Stepbystepguideforbuidlingsimplestrutsapp 090702025438-phpapp02
JavaServer Faces 2.0 - JavaOne India 2011
Struts An Open-source Architecture for Web Applications
Struts tutorial
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
Unit 07: Design Patterns and Frameworks (3/3)
Project Description Of Incident Management System Developed by PRS (CRIS) , N...
Local SQLite Database with Node for beginners
Struts Overview
Ad java prac sol set
struts unit best pdf for struts java.pptx
struts unit best pdf for struts java.pptx
BlackBerry DevCon 2011 - PhoneGap and WebWorks
Java Web Development with Stripes
Web based development
Rest web service_with_spring_hateoas
A portlet-API based approach for application integration
ASP.NET Overview - Alvin Lau
Integrating Wicket with Java EE 6

More from Syed Shahul (13)

PDF
Beginning java and flex migrating java, spring, hibernate, and maven develop...
PDF
Struts 2 And Spring Frameworks Together
PDF
Sahih Bukhari - Tamil
PDF
Hibernate Interview Questions
PDF
Struts Live
PDF
Struts Intro
PDF
Hibernate Reference
PDF
Hibernate Tutorial
PDF
Spring Live Sample Chapter
PDF
Spring Reference
PPT
Jamon 22
PPS
Do U Know Him
PPT
Hot Chocolate
Beginning java and flex migrating java, spring, hibernate, and maven develop...
Struts 2 And Spring Frameworks Together
Sahih Bukhari - Tamil
Hibernate Interview Questions
Struts Live
Struts Intro
Hibernate Reference
Hibernate Tutorial
Spring Live Sample Chapter
Spring Reference
Jamon 22
Do U Know Him
Hot Chocolate

Recently uploaded (20)

PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Tartificialntelligence_presentation.pptx
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Machine Learning_overview_presentation.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PPTX
1. Introduction to Computer Programming.pptx
PPTX
TLE Review Electricity (Electricity).pptx
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
A comparative analysis of optical character recognition models for extracting...
Spectral efficient network and resource selection model in 5G networks
Tartificialntelligence_presentation.pptx
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
MIND Revenue Release Quarter 2 2025 Press Release
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Machine Learning_overview_presentation.pptx
Machine learning based COVID-19 study performance prediction
Network Security Unit 5.pdf for BCA BBA.
SOPHOS-XG Firewall Administrator PPT.pptx
1. Introduction to Computer Programming.pptx
TLE Review Electricity (Electricity).pptx
Heart disease approach using modified random forest and particle swarm optimi...
Advanced methodologies resolving dimensionality complications for autism neur...
A comparative study of natural language inference in Swahili using monolingua...
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Building Integrated photovoltaic BIPV_UPV.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx

Step By Step Guide For Buidling Simple Struts App

  • 1. Step by Step Guide for building a simple Struts Application 1
  • 2. Sang Shin [email protected] www.javapassion.com/j2ee Java™ Technology Evangelist Sun Microsystems, Inc. 2
  • 3. Sample App We are going to build 3
  • 4. Sample App ● Keld Hansen's submit application ● Things to do – Creating ActionForm object – Creating Action object – Forwarding at either success or failure through configuration set in struts-config.xml file – Input validation – Internationalizaition ● You can also build it using NetBeans 4
  • 6. Steps 1.Create development directory structure 2.Write web.xml 3.Write struts-config.xml 4.Write ActionForm classes 5.Write Action classes 6.Create ApplicationResource.properties 7.Write JSP pages 8.Build, deploy, and test the application 6
  • 7. Step 1: Create Development Directory Structure 7
  • 8. Development Directory 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 8
  • 9. Step 2: Write web.xml Deployment Descriptor 9
  • 10. web.xml ● 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 10
  • 11. Example: web.xml 1 <?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/j2ee http://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> 11
  • 13. struts-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> element – make 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 13
  • 14. struts-config.xml: <form-beans> 1 <?xml version="1.0" encoding="UTF-8" ?> 2 3 <!DOCTYPE struts-config PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 5 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 6 7 8 <struts-config> 9 <form-beans> 10 <form-bean name="submitForm" 11 type="submit.SubmitForm"/> 12 </form-beans> 14
  • 15. struts-config.xml: <action-mappings> 1 2 <!-- ==== Action Mapping Definitions ===============--> 3 <action-mappings> 4 5 <action path="/submit" 6 type="submit.SubmitAction" 7 name="submitForm" 8 input="/submit.jsp" 9 scope="request" 10 validate="true"> 11 <forward name="success" path="/submit.jsp"/> 12 <forward name="failure" path="/submit.jsp"/> 13 </action> 14 15 </action-mappings> 15
  • 17. ActionForm Class ● 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 17
  • 18. Write ActionForm class 1 package submit; 2 3 import javax.servlet.http.HttpServletRequest; 4 import org.apache.struts.action.*; 5 6 public final class SubmitForm extends ActionForm { 7 8 /* Last Name */ 9 private String lastName = "Hansen"; // default value 10 public String getLastName() { 11 return (this.lastName); 12 } 13 public void setLastName(String lastName) { 14 this.lastName = lastName; 15 } 16 17 /* Address */ 18 private String address = null; 19 public String getAddress() { 20 return (this.address); 21 } 22 public void setAddress(String address) { 23 this.address = address; 24 } 18
  • 19. Write validate() method 1 public final class SubmitForm extends ActionForm { 2 3 ... 4 public ActionErrors validate(ActionMapping mapping, 5 HttpServletRequest request) { 6 7 ... 8 9 // Check for mandatory data 10 ActionErrors errors = new ActionErrors(); 11 if (lastName == null || lastName.equals("")) { 12 errors.add("Last Name", new ActionError("error.lastName")); 13 } 14 if (address == null || address.equals("")) { 15 errors.add("Address", new ActionError("error.address")); 16 } 17 if (sex == null || sex.equals("")) { 18 errors.add("Sex", new ActionError("error.sex")); 19 } 20 if (age == null || age.equals("")) { 21 errors.add("Age", new ActionError("error.age")); 22 } 23 return errors; 24 } 19
  • 20. Step 5: Write Action classes 20
  • 21. Action Classes ● Extend org.apache.struts.action.Action class ● Handle the request – Decide what kind of server-side Model objects (EJB, JDO, etc.) can be invoked ● Based on the outcome, select the next view 21
  • 22. Example: Action Class 1 package submit; 2 3 import javax.servlet.http.*; 4 import org.apache.struts.action.*; 5 6 public final class SubmitAction extends Action { 7 8 public ActionForward execute(ActionMapping mapping, 9 ActionForm form, 10 HttpServletRequest request, 11 HttpServletResponse response) { 12 13 SubmitForm f = (SubmitForm) form; // get the form bean 14 // and take the last name value 15 String lastName = f.getLastName(); 16 // Translate the name to upper case 17 //and save it in the request object 18 request.setAttribute("lastName", lastName.toUpperCase()); 19 20 // Forward control to the specified success target 21 return (mapping.findForward("success")); 22 } 23 } 22
  • 23. Step 6: Create ApplicationResource.properties and Configure web.xml accordingly 23
  • 24. Resource file ● Create resource file for default locale ● Create resource files for other locales 24
  • 25. Example: ApplicationResource.properties 1 errors.header=<h4>Validation Error(s)</h4><ul> 2 errors.footer=</ul><hr> 3 4 error.lastName=<li>Enter your last name 5 error.address=<li>Enter your address 6 error.sex=<li>Enter your sex 7 error.age=<li>Enter your age 25
  • 26. Step 7: Write JSP pages 26
  • 27. JSP Pages ● Write one JSP page for each view ● Use Struts tags for – Handing HTML input forms – Writing out messages 27
  • 28. Example: submit.jsp 1 <%@ 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 6 <html> 7 <head><title>Submit example</title></head> 8 <body> 9 10 <h3>Example Submit Page</h3> 11 12 <html:errors/> 13 14 <html:form action="submit.do"> 15 Last Name: <html:text property="lastName"/><br> 16 Address: <html:textarea property="address"/><br> 17 Sex: <html:radio property="sex" value="M"/>Male 18 <html:radio property="sex" value="F"/>Female<br> 19 Married: <html:checkbox property="married"/><br> 20 Age: <html:select property="age"> 21 <html:option value="a">0-19</html:option> 22 <html:option value="b">20-49</html:option> 23 <html:option value="c">50-</html:option> 24 </html:select><br> 25 <html:submit/> 28 26 </html:form>
  • 29. Example: submit.jsp 1 <logic:present name="lastName" scope="request"> 2 Hello 3 <logic:equal name="submitForm" property="age" value="a"> 4 young 5 </logic:equal> 6 <logic:equal name="submitForm" property="age" value="c"> 7 old 8 </logic:equal> 9 <bean:write name="lastName" scope="request"/> 10 </logic:present> 11 12 </body> 13 </html> 29
  • 30. Step 8: Build, Deploy, and Test Application 30
  • 34. Passion! 34