Web Programming with Java Servlets

Similar documents
Glassfish, JAVA EE, Servlets, JSP, EJB

Java EE Introduction, Content. Component Architecture: Why and How Java EE: Enterprise Java

Building Web Applications, Servlets, JSP and JDBC

Web Programming II JSP (Java Server Pages) ASP request processing. The Problem. The Problem. Enterprise Application Development using J2EE

Creating Java EE Applications and Servlets with IntelliJ IDEA

ACM Crossroads Student Magazine The ACM's First Electronic Publication

Web Programming: Announcements. Sara Sprenkle August 3, August 3, Assignment 6 due today Project 2 due next Wednesday Review XML

Building and Using Web Services With JDeveloper 11g

2. Follow the installation directions and install the server on ccc

Development. with NetBeans 5.0. A Quick Start in Basic Web and Struts Applications. Geertjan Wielenga

Web Container Components Servlet JSP Tag Libraries

Introduction to J2EE Web Technologies

In this chapter, we lay the foundation for all our further discussions. We start

Web Applications. For live Java training, please see training courses at

Announcements. Comments on project proposals will go out by in next couple of days...

CrownPeak Java Web Hosting. Version 0.20

An introduction to web programming with Java

JBoss SOAP Web Services User Guide. Version: M5

Database Applications Recitation 10. Project 3: CMUQFlix CMUQ s Movies Recommendation System

7 Web Databases. Access to Web Databases: Servlets, Applets. Java Server Pages PHP, PEAR. Languages: Java, PHP, Python,...

2.8. Session management

Tutorial: Building a Web Application with Struts

CSI 2132 Lab 8. Outline. Web Programming JSP 23/03/2012

Struts Tools Tutorial. Version: M5

Outline. CS 112 Introduction to Programming. Recap: HTML/CSS/Javascript. Admin. Outline

Web Applications. Originals of Slides and Source Code for Examples:

An introduction to creating JSF applications in Rational Application Developer Version 8.0

Development of Web Applications

Servlets. Based on Notes by Dave Hollinger & Ethan Cerami Also, the Online Java Tutorial by Sun

Agenda. Summary of Previous Session. Application Servers G Session 3 - Main Theme Page-Based Application Servers (Part II)

Usability. Usability

NetBeans IDE Field Guide

Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:

Implementing the Shop with EJB

Java Server Pages and Java Beans

Course Number: IAC-SOFT-WDAD Web Design and Application Development

Exam Prep. Sun Certified Web Component Developer (SCWCD) for J2EE Platform

Getting Started with Web Applications

DTS Web Developers Guide

JSP Java Server Pages

Oracle WebLogic Server

Services. Custom Tag Libraries. Today. Web Development. Role-Based. Development. Code Reuse. Tag Libraries Custom Tags. Tag Lifecycle.

Developing XML Solutions with JavaServer Pages Technology

Developing Web Applications using JavaServer Pages and Servlets

Database Access from a Programming Language: Database Access from a Programming Language

Database Access from a Programming Language:

Complete Java Web Development

Applets, RMI, JDBC Exam Review

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

Course Name: Course in JSP Course Code: P5

INTRODUCTION TO WEB TECHNOLOGY

Mastering Tomcat Development

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

Topics. Incorporating JSP Custom Tags Into Your Web Apps. A Quick Example of Using One. What They Are. Why Developers Should Consider Them

Web Application Programmer's Guide

Core Java+ J2EE+Struts+Hibernate+Spring

Outline. Lecture 9: Java Servlet and JSP. Servlet API. HTTP Servlet Basics

Web Development in Java Part I

Application Security

Supplement IV.E: Tutorial for Tomcat. For Introduction to Java Programming By Y. Daniel Liang

Web Application Architecture (based J2EE 1.4 Tutorial)

Servlet 3.0. Alexis Moussine-Pouchkine. mercredi 13 avril 2011

CS108, Stanford Handout #33 Young. HW5 Web

Security Code Review- Identifying Web Vulnerabilities

CREATE A CUSTOM THEME WEBSPHERE PORTAL

The JAVA Way: JDBC and SQLJ

Java Servlet 3.0. Rajiv Mordani Spec Lead

Oracle Hyperion Financial Management Custom Pages Development Guide

CSc 230 Software System Engineering FINAL REPORT. Project Management System. Prof.: Doan Nguyen. Submitted By: Parita Shah Ajinkya Ladkhedkar

Oracle Hyperion Financial Management Developer and Customization Guide

Intelligent Event Processer (IEP) Tutorial Detection of Insider Stock Trading

Java with Eclipse: Setup & Getting Started

Install guide for Websphere 7.0

WIRIS quizzes web services Getting started with PHP and Java

SSC - Web applications and development Introduction and Java Servlet (II)

Controlling Web Application Behavior

Web Application Development Using Borland JBuilder 8 WebLogic Edition

Crystal Reports for Borland JBuilder

Developing an EJB3 Application. on WebSphere 6.1. using RAD 7.5

TABLE OF CONTENTS...2 INTRODUCTION...3 APPLETS AND APPLICATIONS...3 JAVABEANS...4 EXCEPTION HANDLING...5 JAVA DATABASE CONNECTIVITY (JDBC)...

Managing Data on the World Wide-Web

Design Approaches of Web Application with Efficient Performance in JAVA

Hello World Portlet Rendered with JSP for WebSphere Portal Version 4.1

BAPI. Business Application Programming Interface. Compiled by Y R Nagesh 1

Portals, Portlets & Liferay Platform

Witango Application Server 6. Installation Guide for Windows

Java Web Programming. Student Workbook

Crystal Reports for Eclipse

PA165 - Lab session - Web Presentation Layer

How To Understand The Architecture Of Java 2Ee, J2Ee, And J2E (Java) In A Wordpress Blog Post

Web Application Developer s Guide

Developing Rich Web Applications with Oracle ADF and Oracle WebCenter Portal

Creating Web Services Applications with IntelliJ IDEA

Productivity Comparison for Building Applications and Web Services

}w!"#$%&'()+,-./012345<ya

Developing WCM based WebSphere Portal application using IBM Rational Application Developer

Web Applications and Struts 2

<Insert Picture Here> Betting Big on JavaServer Faces: Components, Tools, and Tricks

Xtreeme Search Engine Studio Help Xtreeme

IBM Rational Web Developer for WebSphere Software Version 6.0

Transcription:

Web Programming with Java Servlets Leonidas Fegaras University of Texas at Arlington Web Data Management and XML L3: Web Programming with Servlets 1

Database Connectivity with JDBC The JDBC API makes it possible to access databases and other data sources from Java import java.sql.*;... Class.forName("com.mysql.jdbc.Driver").newInstance(); String jdbc = "jdbc:mysql://localhost:3306/db?user=smith&password=xxx"; Connection con = DriverManager.getConnection(jdbc); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * from employee"); while (rs.next()) System.out.println(rs.getString("fname")+" "+rs.getstring("lname")); rs.close(); stmt.close(); con.close(); For updates/inserts/deletes, use stmt.executeupdate( update... ); con.commit(); Web Data Management and XML L3: Web Programming with Servlets 2

Working with ResultSet ResultSet: a table of data representing a database result set generated by executing a statement that queries the database It maintains a cursor pointing to its current row of data Initially the cursor is positioned before the first row The next method moves the cursor to the next row Provides getter methods for retrieving column values from the current row getstring, getint, getboolean, getlong,... Also provides setter methods for updating column values updatestring, updateint,... Values can be retrieved/updated using either the index number of the column (starting from 1) rs.getstring(2) rs.updatestring(2, Smith ) or the name of the column rs.getstring( name ) rs.updatestring( name, Smith ) Web Data Management and XML L3: Web Programming with Servlets 3

Updates To delete the current row from the ResultSet and from database rs.deleterow(); To update a column value in the current row rs.updatestring("name", "Smith"); rs.updateint( salary,100000); rs.updaterow(); To insert column values into the insert row rs.movetoinsertrow(); rs.updatestring("name", "Smith"); rs.updateint( salary,100000); rs.insertrow(); Web Data Management and XML L3: Web Programming with Servlets 4

Java Servlets A servlet is a small Java program that runs within a Web server Servlets receive and respond to requests from Web clients Need a servlet container (web container) to run servlets server client browser GET/POST HTML Apache httpd web server servlets Java runtime engine servlet container Tomcat Web Data Management and XML L3: Web Programming with Servlets 5

History 1997: Sun released the Java Web Server and Java Servlet Developers Kit 1999: Sun introduced JavaServer Pages (JSPs) 2003: Java 2 Enterprise Edition (J2EE) 2000: NetBeans open source IDE (Integrated Development Environment) Java EE (Enterprise Edition) Enterprise Java Beans (EJB), servlets, JSP pages, JAX-WS web services Servlet engines (web containers): hosts for servlets and JSPs Jakarta Tomcat by Apache GlassFish Sun's Java System Application Server BEA WebLogic RedHat JBoss IBM's WebSphere Web Data Management and XML L3: Web Programming with Servlets 6

Installing and Learning about NetBeans Works on most platforms (Linux, Mac OS, Solaris, MS Windows) Install JDK 6 (Java SE Development Kit 6) from: http://java.sun.com/j2se/downloads.html Install NetBeans IDE 6.8 from: http://www.netbeans.org/ Select to install both Tomcat and GlassFish To learn more about NetBeans: The Help Contents in NetBeans Visual Designer (very useful) Documentation about NetBeans Web applications: http://www.netbeans.org/kb/trails/web.html The Java EE 5 Tutorial (similar to NetBeans) http://java.sun.com/javaee/5/docs/tutorial/doc/index.html The Java API http://java.sun.com/javase/6/docs/api/ Web Data Management and XML L3: Web Programming with Servlets 7

The Servlet Interface To implement this interface, you can write a generic servlet that extends javax.servlet.genericservlet or an HTTP servlet that extends javax.servlet.http.httpservlet It defines methods to initialize/remove a servlet and to service requests Servlet life-cycle: The servlet is constructed, then initialized with the init() method Calls from clients to the service method are handled The servlet is taken out of service, then destroyed with the destroy() method, then garbage collected and finalized Other methods: getservletconfig() getservletinfo() Web Data Management and XML L3: Web Programming with Servlets 8

GenericServlet Defines a generic, protocol-independent servlet Example: import javax.servlet.*; class MyServlet extends GenericServlet { public void service ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println( <html>...</html> ); } There are also default methods to initialize (init) and finalize (destroy) a servlet that can be overridden To write an HTTP servlet for use on the Web, implement the HttpServlet interface instead Web Data Management and XML L3: Web Programming with Servlets 9

HttpServlet The HttpServlet interface extends the GenericServlet interface to handle GET/POST requests Example: import javax.servlet.*; import javax.servlet.http.*; class Hello extends HttpServlet { public void doget ( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException { response.setcontenttype("text/html"); PrintWriter out = response.getwriter(); out.println("<html>... </html>"); } dopost is similar Web Data Management and XML L3: Web Programming with Servlets 10

Cookies To read the cookies associated with the servlet request: Cookie[ ] cookies = request.getcookies(); Cookie methods: cookie.getname() cookie.getvalue() To create a new cookie: cookie = new Cookie("myCookie","some-value"); cookie.setpath(request.getcontextpath( )); cookie.setmaxage(-1); response.addcookie(cookie); Web Data Management and XML L3: Web Programming with Servlets 11

HttpSession Use getparameter() to access GET/POST parameters: String value = request.getparameter("parameter-name"); To get all parameter names: Enumeration parameters = request.getparameternames(); Method getsession() returns the current session associated with this request, or if the request does not have a session, creates one HttpSession session = request.getsession(); HttpSession methods: To get the session ID: String session_id = session.getid(); To get the names of all session attributes: Enumeration attributes = session.getattributenames(); Given the name of a session attribute, get its value: Object value = session.getattribute( name ); Change the value of a session attribute session.setattribute( name,value); Web Data Management and XML L3: Web Programming with Servlets 12

ServletContext Contains the objects common to all sessions particular to the web application its a location to share global information (eg, a database of sale items) To extract: ServletContext context = getservletcontext(); Methods: Enumeration attributes = context.getattributenames(); Object value = context.getattribute( name ); context.setattribute( name,value); Web Data Management and XML L3: Web Programming with Servlets 13

The Directory Structure The directory for the application MyApplication has structure: MyApplication/: contains all static HTML and JSP files MyApplication/WEB-INF/web.xml: the deployment descriptor MyApplication/WEB-INF/classes/: contains the Java classes MyApplication/WEB-INF/lib/: contains the JAR files The easiest way to deploy the application is to convert it to a WAR file using JAR. Inside directory MyApplication do: jar cvf MyApplication.war. WAR: Web Application Archive file Then, you can deploy the file MyApplication.war using the Tomcat manager http://localhost:8080/manager/html If you use the NetBeans Visual Studio it will create a default deployment descriptor it will deploy your application automatically Web Data Management and XML L3: Web Programming with Servlets 14

The Deployment Descriptor It's the file web.xml in the WEB-INF directory <?xml version="1.0" encoding="iso-8859-1"?> <web-app...> <display-name>hello, World Application</display-name> <description>... </description> <servlet> <servlet-name>helloservlet</servlet-name> <servlet-class>mypackage.hello</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloservlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> </web-app> After you deploy with Tomcat, to run it on browser use: http://localhost:8080/hello/ Web Data Management and XML L3: Web Programming with Servlets 15

Web Components Java Server pages (JSP) are text documents that execute as servlets but allow a more natural approach to creating web content They contain two types of text: static data, which can be expressed as HTML or XML, and JSP elements, which determine how the page constructs dynamic content JavaServer Pages Standard Tag Library (JSTL) encapsulates core functionality common to many JSP applications iterator and conditional tags tags for manipulating XML documents and for accessing databases JavaServer Faces (JSF) technology provides a user interface component framework for web applications. Components: a GUI component framework a flexible model for rendering components in HTML JSF pages are translated to JSP pages (lazily) Need library descriptor files in WEB-INF to deploy JSP pages Tomcat's Jasper Web Data Management and XML L3: Web Programming with Servlets 16

JSP Example <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <jsp:usebean id="date" class="java.util.date" /> <html> <head><title>jsp Example</title></head> <body> <h2>today's Date</h2> <c:out value="${date}" /> </body> </html> Web Data Management and XML L3: Web Programming with Servlets 17

Java Beans Java Beans are Java classes that have properties (variables) and have get and set methods for accessing the properties package org.myserver; class MyResult { String result; public String getresult () { return result; } public void setresult ( String s ) { result = s; } } There are 4 Java Bean categories (scopes) used by JSP: application (global objects) session (session objects) request (objects passing from servlet to servlet through requestdispatch) page (local to the current page) Web Data Management and XML L3: Web Programming with Servlets 18

JSP Syntax JSP expressions ${...} retrieve the value of object properties for deferred evaluation use: #{...} Variables are properties in a scope bean (the default scope is page) The custom tag c:set sets a variable: <c:set var="y" value="${x+1}" /> <c:set var="user" value="${x.user}" scope="session"/> There are custom tags to do iterations over a collection <c:foreach var= x items=... >... </c:foreach> conditions: <c:if test=... >... </c:if> XML and SQL stuff <sql:query var= x sql= select * from PUBLIC.books where id =? /> To create/update/use a Java Bean object: <jsp:usebean id= MyResult class= org.myserver scope= application /> <jsp:setproperty name= MyResult property= result value= ${...} /> ${MyResult.result} Web Data Management and XML L3: Web Programming with Servlets 19

GET/POST Parameters and Cookies Use the param object associated with the Map.Entry bean <html> <head><title>posted Data</title></head> <body> <h1>posted Data</h1> <c:foreach var="x" items="${param}"> <p><c:out value="${x.key}" />: <c:out value="${x.value}" /><p/> </c:foreach> </body> </html> For cookies, use the cookie object <c:foreach var="c" items="${cookie}"> <p><c:out value="${c.key}"/>: <c:out value="${c.value}" /></p> </c:foreach> Web Data Management and XML L3: Web Programming with Servlets 20

Database Connectivity Custom tags for SQL: <sql:transaction> <sql:update> insert into person values('john Smith','smith@domain.com') </sql:update> <sql:query var="result"> select * from person </sql:query> </sql:transaction> <c:foreach var="row" items="${result.rows}"> <c:foreach var="col" items="${row}"> <c:out value="${col.key}"/>: <c:out value="${col.value}"/> </c:foreach> </c:foreach> Web Data Management and XML L3: Web Programming with Servlets 21

Scriplets and JavaScript You can embed Java code fragments (called scriplets) into the JSP pages Syntax: <% java-code %> Not recommended because the application programming should be detached from web page content Use custom tags instead You can include JavaScript code to be executed at client side <c:import url="/web-inf/javascript/client.js" /> <form name="myform" onsubmit="popup()"> NetBeans provides a library of Ajax JavaScript templates Web Data Management and XML L3: Web Programming with Servlets 22

User-defined Custom Tags You can create your own custom tag, ct, in the namespace mytags, by providing a Java bean, the tag handler CtTag Structure of a custom tag: <mytags:ct name= x >some content</mytags:ct> Code in mypackage.tag: import javax.servlet.jsp.tagext.*; public class CtTag extends BodyTagSupport { String name; public int dostarttag () throws JspException { } public int doendtag () throws JspException { JspWriter out = pagecontext.getout( ); String content = getbodycontent().getstring().trim(); out.println(content); To import mytags: <%@taglib uri="mypackage.tags" prefix="mytags" %> Web Data Management and XML L3: Web Programming with Servlets 23

JavaServer Faces Based on a special tag library Pages are created using User Interface Components they represent common user interface components, such as buttons, output fields, input fields, etc they are organized in a tree-like structure they are separated from renderers (which map to HTML) Renderers can be redefined (in render kit) The event and listener model lets developers register listeners on components to handle events Action event: An action event is fired when a user does something, such as pressing a button or clicking a hyperlink Value-change event: A value-change event is fired when a user changes a component's value, such as by clicking a checkbox or entering a value in a text field You can define a listener to an event as a backing bean method You can have multiple registered listeners (observers) to an event Web Data Management and XML L3: Web Programming with Servlets 24

Navigation Model Must define page navigation separately Navigation is a set of rules for choosing the next page to be displayed after a button or hyperlink is clicked Instead of a URL, use a tag name Tag names are mapped to URLs in page navigation configuration file <navigation-rule> <from-view-id>/greeting.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/response.jsp</to-view-id> </navigation-case> </navigation-rule> They can be returned from event listeners public String button1_action() { return "success"; } NetBeans provides a GUI to draw navigation graphs Web Data Management and XML L3: Web Programming with Servlets 25

Backing Beans These are the back-end objects that provide the User Interface functionality They can validate a component s data They can handle an event fired by a component They can perform processing to determine the next page to which the application must navigate Types: User Interface Backing Beans: page and page fragment beans contains everything necessary to manage the server-side logic for a web page component properties and events Data backing beans: Application beans are created at the application level and available to all users, sessions, and requests Session beans are created and are available at the user session level Request beans are created for each request and are only available during the request. They are useful for passing information between two pages Web Data Management and XML L3: Web Programming with Servlets 26

Data Providers and RowSets Data providers provide a simple interface to various data sources The RowSet interface provides JDBC code that reads and updates data from a data provider (eg, a database table) Extends the standard JDBC ResultSet Interface... but can be used as a JavaBeans component supports JavaBeans events, allowing other components in an application to be notified when an event occurs on a RowSet, such as a change in its value Can have parameter placeholders: rs.setcommand("select fname, lname from CUSTOMER" + "where credit >? and region =? "); Which can be instantiated and executed later: rs.setint(1, 5000); rs.setstring(2, "West"); rs.execute(); Web Data Management and XML L3: Web Programming with Servlets 27

CachedRowSet A CachedRowSet object is a container that caches database rows in memory It is scrollable, updatable, and serializable It extends the RowSet Interface Updating a CachedRowSet object is similar to updating a ResultSet object, but must also call the method acceptchanges() to have updates written to the data source When you drag and drop a database table to a web page, you create a data provider along with the CachedRowSet for the table eg, if you drop the table CUSTOMER, you add the methods customerrowset (a CachedRowSet in session bean) customerdataprovider (a DataProvider in page bean) (plus some JDBC code in the session _init() method to connect to the DB) Web Data Management and XML L3: Web Programming with Servlets 28

A Simple Application Create a new project, called MyProject: Open the NetBeans Visual Designer and click on New Project On Choose Project, select Categories: Web, Projects: Web Application, push Next On Name and Location, put Project Name: MyProject, Server: Tomcat 6.0, push Next On Frameworks: check Visual Web JavaServer, push Finish On the Projects window, expand MyProject and Web Pages Right-click and select Refactor, to rename Page1.jsp to Main.jsp Create a new Database Customer: On the Tools menu, select Java DB Database / Create Database... Put Database Name: customer, and pick a User Name and Password On the Services window, expand Databases, right click on the jdbc:derby driver for customer and select Connect... Double left-click on the customer driver to expand it Right-click on Tables and select Create Table... Web Data Management and XML L3: Web Programming with Servlets 29

The Main Page... then create the table Person: From the Palette, drag and drop into the Main Design window Label, Text Field, Password, and Button components as follows: Web Data Management and XML L3: Web Programming with Servlets 30

The Main Page (cont.) Click on the Insert button and, in the Properties menu (right bottom), change its id to insertbutton Go to the Main JavaBean by clicking on Java on the Main window and add the following properties inside the class Main: String newusername; String newpassword; String newfullname; String newemail; Right click and select Refactor / Encapsulate Fields... Click on boxes to create getters and setters for the four new properties Push Refactor Go back to the Main.jsp Design Right-click on the Text Field (the rectangle) next to username: and Select Bind to Data..., then Bind to Object, then select newusername Do the similar thing for the other Text Field rectangles Web Data Management and XML L3: Web Programming with Servlets 31

Inserting New Data Drag and drop the PERSON table from the Services menu to the Main Design window (don't drop it on a component) Notice that there is now a persondataprovider in the Navigator menu Double-click on the Insert button to add code public String insertbutton_action() { try { SessionBean1 session = getsessionbean1(); CachedRowSet rs = session.getpersonrowset(); rs.movetoinsertrow(); rs.updatestring(1,newusername); rs.updatestring(2,newpassword); rs.updatestring(3,newfullname); rs.updatestring(4,newemail); rs.insertrow(); rs.acceptchanges(); newusername = ""; newpassword = ""; newfullname = ""; newemail = ""; } catch (Exception ex) { throw new FacesException(ex); } } return "main"; You may have to right-click and select Fix Imports Web Data Management and XML L3: Web Programming with Servlets 32

Displaying Data in a Table Go back to the Main Design window and drag and drop a Table from the Palette into the Design window Drag and drop the PERSON table from the Services window onto the header of the new Table component in the Design Window On the popup menu, select Use personrowset, press OK Right-click on the Table header and change the title to Person Web Data Management and XML L3: Web Programming with Servlets 33

Testing Right-click on the Design window and choose Page Navigation Push on the plus sign in Main.jsp to see its buttons Drag and drop the insertbutton link into Main.jsp forming a loop Select the loop line, right click, choose Rename..., and rename case1 to main Recall that the insertbutton_action() returns main, which loops back Go back to the Main Design window and save the project Push Run Main Project to build, install, and run your program It will run using Tomcat on a web browser at the URL: http://localhost:8080/myproject/ Insert few data and remember one username/password combination to use it for log-in Web Data Management and XML L3: Web Programming with Servlets 34

The Login Page Click on New File and Select JavaServer Faces and Visual Web JSF Design, click Next, put File Name: Login, push Finish On the Login Design window, drag and drop the following Click on the login button and change its id to loginbutton in the Properties window Go to the Login class by clicking on Java and add the properties String loginusername; String loginpassword; Use the refactor as before to add getter/setter methods Go back to the design and bind the username/password to these new properties (as before using Bind to an Object ) Web Data Management and XML L3: Web Programming with Servlets 35

Login using the Database Drag and drop the PERSON table from the Services window into the Login design window Choose Create SessionBean1 with personrowset1 On the Navigator menu, right-click on personrowset1 in SessionBean1 and choose Edit SQL Statement Use the SQL editor to add query criteria (parameters) and construct the SQL query SELECT ALL ADMIN.PERSON.USERNAME FROM ADMIN.PERSON WHERE ADMIN.PERSON.USERNAME =? AND ADMIN.PERSON.PASSWORD =? Right-click on Login.jsp in the Projects window and select Set as Start Page Web Data Management and XML L3: Web Programming with Servlets 36

The Login Action Double-click on login button to edit the action: public String loginbutton_action() { try { SessionBean1 session = getsessionbean1(); CachedRowSet rs = session.getpersonrowset1(); rs.setobject(1,loginusername); rs.setobject(2,loginpassword); rs.execute(); loginusername = ""; loginpassword = ""; if (rs.first()) return "main"; } catch (Exception ex) { throw new FacesException(ex); } return "login"; } Web Data Management and XML L3: Web Programming with Servlets 37

Navigation Right-click on the Login design page and select Page Navigation Draw the following navigation (based on the loginbutton action) Save and run the project again Login using one of the Person accounts Question: if we add a logout button in Main, what would be its action? Web Data Management and XML L3: Web Programming with Servlets 38