USING JAVABEANS COMPONENT IN JSP DOCUMENTS. References Marty Hall. Core Servlet and Java Server Page. Sun Micro System. Prentice Hall PTR; 1 edition 2000.

Slides:



Advertisements
Similar presentations
JSP1 Java Server Pages (JSP) Introducing JavaServer Pages TM (JSP TM ) JSP scripting elements.
Advertisements

 Copyright Wipro Technologies JSP Ver 1.0 Page 1 Talent Transformation Java Server Pages.
J2EE Servlets and JSP Advanced topics Presented by Bartosz Sakowicz.
18-Jun-15 JSP Java Server Pages Reference: Tutorial/Servlet-Tutorial-JSP.html.
JSP Java Server Pages Reference:
MVC Architecture1 Usage Rules PowerPoint slides for use only in for-credit courses at degree-granting institutions Slides can be modified.
Integrating Servlets and JavaServer Pages Vijayan Sugumaran School of Business Administration Oakland University Parts of this presentation provided by.
JSP Architecture  JSP is a simple text file consisting of HTML or XML content along with JSP elements  JSP packages define the interface for the compiled.
Java Servlets. What Are Servlets? Basically, a java program that runs on the server Basically, a java program that runs on the server Creates dynamic.
Java Enterprise Edition Java Web Development Structure of a web project Introduction to Web Applications The first project Introduction to Java Web Development.
1 CIS336 Website design, implementation and management (also Semester 2 of CIS219, CIS221 and IT226) Lecture 9 JavaServer Pages (JSP) (Based on Møller.
CSC 2720 Building Web Applications Using Java Beans, Custom Tags and Tag Libraries in JSP pages.
Using JavaBeans Components in JSP Documents. Contents 1. Why using beans? 2. What are beans? 3. Using Beans: Basic Tasks 4. Sharing Beans 5. Practice.
Introduction to JSP Based on: Marty Hall, Larry Brown, Core Servlets and JavaServer Pages.
J2EE training: 1 Course Material Usage Rules PowerPoint slides for use only in full-semester, for-credit courses at degree-granting.
What Are Beans? beans are simply Java classes that are written in a standard format. A bean class must have a zero-argument (default) constructor. A bean.
JavaServer Faces Jeff Schmitt October 5, Introduction to JSF Presents a standard framework for building presentation tiers for web applications.
J2EE training: 1 Course Material Usage Rules PowerPoint slides for use only in full-semester, for-credit courses at degree-granting.
Li Tak Sing COMPS311F. Static attributes in Servlets Since Servlets are also Java classes, you can also use static attributes to store values that can.
Chapter 7 Java Server Pages. Objectives Explain how the separation of concerns principle applies to JSP Describe the operation and life-cycle of a JSP.
Introduction to JavaServer Pages (JSP) Slides from Dr. Mark Llewellyn.
Jordan Anastasiade. All rights reserved.
JSP Architecture Outline  Model 1 Architecture  Model 2 Architecture.
Java Server Pages A JSP page is a text-based document that contains two types of text: static template data, which can be expressed in any text-based format,
Chapter 8 Script-free pages. Problem with scripting in JSP When you use scripting (declaration, scriplet, expressions) in your JSP, you actually put Java.
Mark Dixon 1 12 – Java Beans. Mark Dixon 2 Session Aims & Objectives Aims –To cover the use of Java Beans Objectives, by end of this week’s sessions,
CGS – 4854 Summer 2012 Web Site Construction and Management Instructor: Francisco R. Ortega Chapter 2.
JAVA SERVER PAGES CREATING DYNAMIC WEB PAGES USING JAVA James Faeldon CS 119 Enterprise Systems Programming.
Slides © Marty Hall, book © Sun Microsystems Press 1 JSP Scripting Elements Core Servlets & JSP book:
Chapter 3 Servlet Basics. 1.Recall the Servlet Role 2.Basic Servlet Structure 3.A simple servlet that generates plain text 4.A servlet that generates.
16-Oct-15 JSP Implicit Objects. 2 JSP Implicit Objects are the Java objects that the JSP Container makes available to developers in each page and developer.
Java Servlets & Java Server Pages Lecture July 2013.
J2EE training: 1 Course Material Usage Rules PowerPoint slides for use only in full-semester, for-credit courses at degree-granting.
CS320 Web and Internet Programming Java Beans and Expression Language (EL) Chengyu Sun California State University, Los Angeles.
J2EE training: 1 Course Material Usage Rules PowerPoint slides for use only in full-semester, for-credit courses at degree-granting.
Liang, Introduction to Java Programming, Fifth Edition, (c) 2005 Pearson Education, Inc. All rights reserved Chapter 27 JavaServer Page.
Java Server Pages (JSP)
CSC 2720 Building Web Applications Frameworks for Building Web Applications.
Fall 2007cs4201 Advanced Java Programming Umar Kalim Dept. of Communication Systems Engineering
 Obtaining a RequestDispatcher Forwarding requests from servlets to dynamic resources  Forwarding requests from servlets to static resources  Using.
1 Processing phase Translation phase JSP page translation and processing phases Client Server Request Response Hello.jsp helloServlet.class helloServlet.java.
JavaServer Page by Antonio Ko. Overview ► Introduction ► What is a servlet? ► What can servlets do? ► Servlets Vs JSP ► Syntax ► Samples ► JavaBean ►
CSC 2720 Building Web Applications JavaServer Pages (JSP) JSP Directives and Action Elements.
Fall 2007cs4201 Advanced Java Programming Umar Kalim Dept. of Communication Systems Engineering
JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the page is HTML –Dynamic portion is Java Easy way to develop.
JSP. Types of JSP Scripting Elements Expressions of the form, which are evaluated and inserted into the servlet's output. Scriptlets of the form, which.
1 Java Servlets l Servlets : programs that run within the context of a server, analogous to applets that run within the context of a browser. l Used to.
Web Technologies Java Beans & JSP By Praveen Kumar G.
Slides © Marty Hall, book © Sun Microsystems Press 1 Using JavaBeans with JSP Core Servlets & JSP book:
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, Responds oriented other.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Basic JSP Celsina Bignoli Problems with Servlets Servlets contain –request processing, –business logic –response generation all lumped.
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 3 1COMP9321, 15s2, Week.
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 43 JavaServer Page.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
1 Chapter 27 JavaServer Page. 2 Objectives F To know what is a JSP page is processed (§27.2). F To comprehend how a JSP page is processed (§27.3). F To.
INVOKING JAVA CODE WITH JSP SCRIPTING ELEMENTS. Creating Template Text A large percentage of your JSP document consists of static text (usually HTML),
Introduction To HTML Dr. Magdi AMER. HTML elements.
 Java Server Pages (JSP) By Offir Golan. What is JSP?  A technology that allows for the creation of dynamically generated web pages based on HTML, XML,
JSP JavaServer Pages. What is JSP? Java based technology that simplifies the development of dynamic web sites JSP pages are HTML pages with embedded code.
Chapter 4 Request and Response. Servlets are controlled by the container.
Chapter 14 Using JavaBeans Components in JSP Documents.
Bayu Priyambadha, S.Kom. Static content  Web Server delivers contents of a file (html) 1. Browser sends request to Web Server 3. Web Server sends HTML.
Introduction to Server-Side Web Development Introduction to Server-Side Web Development Introduction to Server-Side Web JavaBeans; basic concepts and syntax.
Java Servlets By: Tejashri Udavant..
Scripted Page Web App Development (Java Server Pages)
USING JAVABEANS COMPONENTS IN JSP DOCUMENTS K. Phani Sirisha
Java Server Pages JSP 11/11/2018.
Engineering the Java Web Application (MVC)
Web Technologies Java Beans & JSP
Presentation transcript:

USING JAVABEANS COMPONENT IN JSP DOCUMENTS

References Marty Hall. Core Servlet and Java Server Page. Sun Micro System. Prentice Hall PTR; 1 edition (Chapter 14, 15, 16)

Content Why use Beans What are Beans Using Beans (setting, getting Bean Properties) (type, scope) Sharing Beans Setting Bean Properties: Advanced Techniques Examples

Strategies for invoking dynamic code from JSP

Why use Beans ? No Java syntax Simpler object sharing Convenient correspondence between request parameters and object properties: The JSP bean constructs greatly simplify the process of reading request parameters, converting from strings, and putting the results inside objects.

What are Beans? Beans are simply Java classes that are written in a standard format A bean class must have a zero-argument (default) constructor. A bean class should have no public instance variables (fields). Persistent values should be accessed through methods called getXxx and setXxx

Using Beans jsp:useBean. In the simplest case, this element builds a new bean. It is normally used as follows: Ex: or <% MyBeans.SimpleBean simBean = new MyBeans.SimpleBean(); %>

Using Beans jsp:getProperty. This element reads and outputs the value of a bean property. Reading a property is a shorthand notation for calling a method of the form getXxx. This element is used as follows: jsp:setProperty. This element modifies a bean property (i.e., calls a method of the form setXxx). It is normally used as follows:

Installing Bean Classes In the same directories where servlets can be installed WEB-INF/classes/subdirectoryMatchingPackageName Example: MyWebApp/WEB-INF/classes/MyBeans/BookClass.class WEB-INF/lib for JAR files.

Example 1: SimpleBean.Java package MyBeans; public class SimpleBean { private String msg = "No Message"; private intid = 0; public String getMessage() { return msg; } public void setMessage(String msg) { this.msg = msg; } public void setId(int iId) { this.id = iId; } public int getId() { return this.id; } }

Example 1: useSimpleBean.jsp Message: ID: After Setting: Message: ID:

Using jsp:useBean Options: type In most cases, you want the local variable to have the same type as the object being created. In a few cases, however, you might want the variable to be declared to have a type that is a superclass of the actual bean type or is an interface that the bean implements. Use the type attribute to control this declaration, as in the following example. This use results in code similar to the following being inserted into the _jspService method. java.lang.Runnable thread1 = new myPackage.MyClass();

Using jsp:useBean Options: scope : default :

Sharing Beans First, a jsp:useBean element results in a new bean being instantiated only if no bean with the same id and scope can be found. If a bean with the same id and scope is found, the preexisting bean is simply bound to the variable referenced by id. Second, instead of you can use statements

Sharing Beans The point of using the second form is that the statements between the jsp:useBean start and end tags are executed only if a new bean is created, not if an existing bean is used. Because jsp:useBean invokes the default (zero-argument) constructor, you frequently need to modify the properties after the bean is created. To mimic a constructor, however, you should make these modifications only when the bean is first created, not when an existing (and presumably updated) bean is accessed. No problem: multiple pages can contain jsp:setProperty statements between the start and end tags of jsp:useBean; only the page first accessed executes the statements.

Sharing Beans : in addition to being bound to a local variable, the bean object should be placed in the PageContext object for the duration of the current request. This indicates that the bean is not shared and thus a new bean will be created for each request.

Sharing Beans : in addition to being bound to a local variable, the bean object should be placed in the HttpServletRequest object for the duration of the current request

Sharing Beans : in addition to being bound to a local variable, the bean will be stored in the HttpSession object associated with the current request

Sharing Beans : in addition to being bound to a local variable, the bean will be stored in the ServletContext. The ServletContext is shared by all servlets and JSP pages in the Web application

Example 2: AccessCountBean.java package coreservlets; /** Simple bean to illustrate sharing beans through * use of the scope attribute of jsp:useBean. */ public class AccessCountBean { private String firstPage; private int accessCount = 1; public String getFirstPage() { return(firstPage); }

Example 2: AccessCountBean.java public void setFirstPage(String firstPage) { this.firstPage = firstPage; } public int getAccessCount() { return(accessCount); } public void setAccessCountIncrement(int increment) { accessCount = accessCount + increment; } }

Example 2: SharedCounts1.jsp Shared Access Counts: Page 1 Shared Access Counts: Page 1 <jsp:useBean id="counter" class="coreservlets.AccessCountBean" scope="application"> <jsp:setProperty name="counter" property="firstPage" value="SharedCounts1.jsp" />

Example 2: SharedCounts1.jsp Of SharedCounts1.jsp (this page), SharedCounts2.jsp, and SharedCounts3.jsp, was the first page accessed. Collectively, the three pages have been accessed times. <jsp:setProperty name="counter" property="accessCountIncrement" value="1" />

Example 2

Setting Bean Properties: Advanced Techniques For example, the SaleEntry class shown in has an itemID property (a String), a numItems property (an int), a discountCode property (a double), and two read-only properties, itemCost and totalCost

Setting Bean Properties: Advanced Techniques ' /> ???

Setting Bean Properties: Advanced Techniques – SaleEntry Class package coreservlets; /** Simple bean to illustrate the various forms * of jsp:setProperty. */ public class SaleEntry { private String itemID = "unknown"; private double discountCode = 1.0; private int numItems = 0; public String getItemID() { return(itemID); } public void setItemID(String itemID) { if (itemID != null) { this.itemID = itemID; } else { this.itemID = "unknown"; } }

Setting Bean Properties: Advanced Techniques - SaleEntry Class public double getDiscountCode() { return(discountCode); } public void setDiscountCode(double discountCode) { this.discountCode = discountCode; } public int getNumItems() { return(numItems); } public void setNumItems(int numItems) { this.numItems = numItems; }

Setting Bean Properties: Advanced Techniques - SaleEntry Class public double getItemCost() { double cost; if (itemID.equals("a1234")) { cost = 12.99*getDiscountCode(); } else { cost = -9999; } return(roundToPennies(cost)); } private double roundToPennies(double cost) { return(Math.floor(cost*100)/100.0); } public double getTotalCost() { return(getItemCost() * getNumItems()); } }

Setting Bean Properties: Advanced Techniques - SaleEntry1-Form.jsp

Invoking SaleEntry1.jsp Invoking SaleEntry1.jsp Item ID: Number of Items: Discount Code:

Setting Bean Properties: Advanced Techniques - SaleEntry1.jsp <jsp:setProperty name="entry" property="itemID" value=' ' /> <% int numItemsOrdered = 1; try { numItemsOrdered = Integer.parseInt(request.getParameter("numItems")); } catch(NumberFormatException nfe) {} %> <jsp:setProperty name="entry" property="numItems" value=" " />

Setting Bean Properties: Advanced Techniques - SaleEntry1.jsp <% double discountCode = 1.0; try { String discountString = request.getParameter("discountCode"); discountCode = Double.parseDouble(discountString); } catch(NumberFormatException nfe) {} %> " />

Setting Bean Properties: Advanced Techniques - SaleEntry1.jsp … $ $ …

Setting Bean Properties: Advanced Techniques Instead of using the value attribute, you use param to name an input parameter. The value of the named request parameter is automatically used as the value of the bean property, and type conversions from String to primitive types (byte, int, double, etc.) and wrapper classes (Byte, Integer, Double, etc.) are automatically performed.

Setting Bean Properties: Advanced Techniques You can simplify the code slightly if the request parameter name and the bean property name are the same.

Setting Bean Properties: Advanced Techniques – SaleEntry2.jsp......

Setting Bean Properties: Advanced Techniques – SaleEntry3.jsp Associating All Properties with Request Parameters......

Warnings No action is taken when an input parameter is missing. Automatic type conversion does not guard against illegal values as effectively as does manual type conversion Bean property names and request parameters are case sensitive. So, the property name and request parameter name must match exactly.

INTEGRATING SERVLETS AND JSP: THE MVC MODEL ARCHITECTURE

References Marty Hall. Core Servlet and Java Server Page. Sun Micro System. Prentice Hall PTR; 1 edition (Chapter 14, 15, 16)

Content Understanding the benefits of MVC Using RequestDispatcher to implement MVC sendRedirect method of Response & forward method of RequestDispatcher Summarizing MVC Code JSP/Servlet & JavaBean MVC Examples

Strategies for invoking dynamic code from JSP

Understanding the benefits of MVC Servlets are good at data processing: reading and checking data, communicating with databases, invoking business logic, and so on. JSP pages are good at presentation: building HTML to represent the results of requests.  How to combine servlets and JSP pages to best make use of the strengths of each technology?

Understanding the benefits of MVC The original request is handled by a servlet Model: The servlet invokes the business-logic and data-access code and creates beans to represent the results. That's the model. View: The servlet decides which JSP page is appropriate to present those particular results and forwards the request there (the JSP page is the view) Controller: The servlet decides what business logic code applies and which JSP page should present the results (the servlet is the controller).

Implementing MVC with RequestDispatcher Define beans to represent the data: Your first step is define beans to represent the results that will be presented to the user. Use a servlet to handle requests: In most cases, the servlet reads request parameters. Populate the beans: The servlet invokes business logic, or data-access code to obtain the results. The results are placed in the beans that were defined in step 1

Implementing MVC with RequestDispatcher Store the bean in the request, session, or servlet context: The servlet calls setAttribute on the request, session, or servlet context objects to store a reference to the beans that represent the results of the request. Forward the request to a JSP page: The servlet determines which JSP page is appropriate to the situation and uses the forward method of RequestDispatcher to transfer control to that page. Extract the data from the beans: The JSP page accesses beans with jsp:useBean and a scope. The page then uses jsp:getProperty to output the bean properties

sendRedirect & RequestDispatcher sendRedirect requires the client to reconnect to the new resource, whereas the forward method of RequestDispatcher is handled completely on the server. sendRedirect results in a different final URL, whereas with forward, the URL of the original servlet is maintained. sendRedirect does not automatically preserve all of the request data; forward does.

Applying MVC Example: Random Number package coreservlets; public class NumberBean { private double num = 0; public NumberBean(double number) { setNumber(number); } public double getNumber() { return(num); } public void setNumber(double number) { num = number; } }

Applying MVC Example: Random Number package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** Servlet that generates a random number, stores it in a bean, * and forwards to JSP page to display it. */ public class RandomNumberServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { NumberBean bean = new NumberBean(Math.random()); request.setAttribute("randomNum", bean); String address = "/WEB-INF/mvc-sharing/RandomNum.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(address); dispatcher.forward(request, response); } }

Applying MVC Example: Random Number … <jsp:useBean id="randomNum" type="coreservlets.NumberBean" scope="request" /> Random Number: …

Applying MVC Example: Random Number

Note If your JSP pages only make sense in the context of servlet-generated data, place the pages under the WEB-INF directory. That way, servlets can forward requests to the pages, but clients cannot access them directly.

Summarizing MVC Code Summarize the code that would be used for request- based,session-based,and application-based MVC approaches

Summarizing MVC Code Request-Based Data Sharing The servlet stores the beans in the HttpServletRequest Servlet ValueObject value = new ValueObject(...); request.setAttribute("key", value); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/SomePage.jsp"); dispatcher.forward(request, response); JSP Page

Summarizing MVC Code Session-Based Data Sharing The servlet stores the beans in the HttpSession, where they are accessible to the same client in the destination JSP page or in other pages. Servlet ValueObject value = new ValueObject(...); HttpSession session = request.getSession(); session.setAttribute("key", value); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/SomePage.jsp"); dispatcher.forward(request, response); JSP Page

Summarizing MVC Code Application-Based Data Sharing The servlet stores the beans in the ServletContext, where they are accessible to any servlet or JSP page in the Web application. To guarantee that the JSP page extracts the same data that the servlet inserted, you should synchronize your code as below.

Summarizing MVC Code Application-Based Data Sharing Servlet synchronized(this) { ValueObject value = new ValueObject(...); getServletContext().setAttribute("key", value); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/SomePage.jsp"); dispatcher.forward(request, response); } JSP Page

Applying MVC Example: Bank Account Balances package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** Servlet that reads a customer ID and displays * information on the account balance of the customer who has that ID. */ public class ShowBalance extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { BankCustomer customer = BankCustomer.getCustomer(request.getParameter("id")); String address; if (customer == null) { address = "/WEB-INF/bank-account/UnknownCustomer.jsp"; }

Applying MVC Example: Bank Account Balances else if (customer.getBalance() < 0) { address = "/WEB-INF/bank-account/NegativeBalance.jsp"; request.setAttribute("badCustomer", customer); } else if (customer.getBalance() < 10000) { address = "/WEB-INF/bank-account/NormalBalance.jsp"; request.setAttribute("regularCustomer", customer); } else { address = "/WEB-INF/bank-account/HighBalance.jsp"; request.setAttribute("eliteCustomer", customer); } RequestDispatcher dispatcher = request.getRequestDispatcher(address); dispatcher.forward(request, response); } }

Applying MVC Example: Bank Account Balances NegativeBalance.jsp … <jsp:useBean id="badCustomer“ type="coreservlets.BankCustomer" scope="request" /> Watch out,, we know where you live. Pay us the $ you owe us before it is too late! …

Applying MVC Example: Bank Account Balances

NormalBalance.jsp … <jsp:useBean id="regularCustomer“ type="coreservlets.BankCustomer" scope="request" /> First name: <jsp:getProperty name="regularCustomer" property="firstName" /> Last name: <jsp:getProperty name="regularCustomer" property="lastName" /> ID: <jsp:getProperty name="regularCustomer" property="id" /> Balance: $<jsp:getProperty name="regularCustomer" property="balance" /> …

Applying MVC Example: Bank Account Balances

<jsp:useBean id="eliteCustomer" type="coreservlets.BankCustomer" scope="request" /> It is an honor to serve you, ! Since you are one of our most valued customers, we would like to offer you the opportunity to spend a mere fraction of your $ on a boat worthy of your status. Please visit our boat store for more information.

Applying MVC Example: Bank Account Balances

Applying MVC Example: Show Name (Session-Based Sharing ) Our goal is to display users' first and last names. If the users fail to tell us their name, we want to use whatever name they gave us previously. If the users do not explicitly specify a name and no previous name is found, a warning should be displayed. Data is stored for each client, so session-based sharing is appropriate.

Applying MVC Example: Show Name (Session-Based Sharing ) package coreservlets; public class NameBean { private String firstName = "Missing first name"; private String lastName = "Missing last name"; public NameBean() {} public NameBean(String firstName, String lastName) { setFirstName(firstName); setLastName(lastName); } public String getFirstName() { return(firstName); }

Applying MVC Example: Show Name (Session-Based Sharing ) public void setFirstName(String newFirstName) { firstName = newFirstName; } public String getLastName() { return(lastName); } public void setLastName(String newLastName) { lastName = newLastName; } }

Applying MVC Example: Show Name (Session-Based Sharing ) package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** Reads firstName and lastName request parameters and forwards * to JSP page to display them. Uses session-based bean sharing * to remember previous values. */ public class RegistrationServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); NameBean nameBean = (NameBean)session.getAttribute("nameBean");

Applying MVC Example: Show Name (Session-Based Sharing ) if (nameBean == null) { nameBean = new NameBean(); session.setAttribute("nameBean", nameBean); } String firstName = request.getParameter("firstName"); if ((firstName != null) && (!firstName.trim().equals(""))) { nameBean.setFirstName(firstName); } String lastName = request.getParameter("lastName"); if ((lastName != null) && (!lastName.trim().equals(""))) { nameBean.setLastName(lastName); } String address = "/WEB-INF/mvc-sharing/ShowName.jsp"; RequestDispatcher dispatcher = request.getRequestDispatcher(address); dispatcher.forward(request, response); } }

Applying MVC Example: Show Name (Session-Based Sharing ) ShowName.jsp … <jsp:useBean id="nameBean" type="coreservlets.NameBean" scope="session" /> First Name: Last Name: …