JSP and web applications

Slides:



Advertisements
Similar presentations
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
Advertisements

J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialistica in Informatica – Università di Trento.
11 Copyright © 2005, Oracle. All rights reserved. Creating the Business Tier: Enterprise JavaBeans.
9 Copyright © 2005, Oracle. All rights reserved. Modularizing JavaServer Pages Development with Tags.
8 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: JavaServer Pages.
J2EE Overview.
May 13th, Lucek Consulting Basic Java Servlet/JSP Web Development David Lucek Lucek Consulting
JSP and Servelets.
CGI programming. Common Gateway Interface interface between web server and other programs (cgi scripts) information passed as environment variables passed.
J2EE Architecture Overview
JSF Portlet Backing Beans and UI Components Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in.
CS4273: Distributed System Technologies and Programming I Lecture 11: JavaServer Pages (JSP)
Java Server Pages (JSP)
Apache Struts Technology
© Yaron Kanza Advanced Java Server Pages Written by Dr. Yaron Kanza, Edited by permission from author by Liron Blecher.
 2002 Prentice Hall. All rights reserved. Chapter 9: Servlets Outline 9.1 Introduction 9.2 Servlet Overview and Architecture Interface Servlet and.
 2003 Prentice Hall, Inc. All rights reserved. Chapter 24: Servlets Outline 24.1 Introduction 24.2 Servlet Overview and Architecture Interface.
JavaServerPages Some examples. About JSP Java server pages are a combination of html (or xml), java code appearing within tagged regions, and structures.
Using JavaServer Pages Harry R. Erwin, PhD CIT304/CSE301.
Object-Oriented Enterprise Application Development Tomcat 3.2 Configuration Last Updated: 03/30/2001.
WEB1P servintro1 Introduction to servlets and JSP Dr Jim Briggs.
Java 2 – Enterprise Edition Kevin J. LaFata April 21, 2003 UM – St. Louis.
1 Build a Web Application on J2EE. 2 J2EE Scenario Client – Web Server – EIS Resources Client – Web Server – EIS Resources Client – Application Server.
Apache Tomcat Server Typical html Request/Response cycle
Java Server Pages B.Ramamurthy. Java Server Pages Servlets are pure Java programs. They introduce dynamism into web pages by using programmatic content.
Objectives:1. Investigate the Web application deployment descriptor 2. Install and deploy Tomcat and struts 3. Design and deploy a struts application Struts.
Web programming for project students Dr Jim Briggs.
Web Applications Basics. Introduction to Web Web features Clent/Server HTTP HyperText Markup Language URL addresses Web server - a computer program that.
ECE356 – Database Systems Lab 1 – Building a Web Project with NetBeans Tiuley Alguindigue Lab Instructor – University of Waterloo, E & CE Dept. Fall 2013.
Java Servlets and JSP.
Introduction to Java web programming Dr Jim Briggs JWP intro1.
Struts. Agenda Preface Struts and its components An example The architecture required for Struts Applications.
Overview of JSP Technology. The need of JSP With servlets, it is easy to – Read form data – Read HTTP request headers – Set HTTP status codes and response.
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
CSCI 6962: Server-side Design and Programming Course Introduction and Overview.
CSC 2720 Building Web Applications Using Java Beans, Custom Tags and Tag Libraries in JSP pages.
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
Introduction to Java Server Pages (JSPs) Robert Thornton.
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,
|Tecnologie Web L-A Anno Accademico Laboratorio di Tecnologie Web Introduzione ad Eclipse e Tomcat
Web Applications - Basics. Introduction to Web Web features Clent/Server HyperText Transfer Protocol HyperText Markup Language URL addresses Web server.
Lecturer: Prof. Piero Fraternali, Teaching Assistant: Alessandro Bozzon, Advanced Web Technologies: Struts–
Stanisław Osiński, 2002JSP – A technology for serving dynamic web content Java Server Pages™ A technology for serving dynamic web content Stanisław Osiński,
JAVA SERVER PAGES CREATING DYNAMIC WEB PAGES USING JAVA James Faeldon CS 119 Enterprise Systems Programming.
J2EE Overview Web Programming CSCI J2EE multi-tier architecture Servlet: Java class loaded into Web server JSP page: enhanced HTML page that is.
Java Servlets & Java Server Pages Lecture July 2013.
COMP 321 Week 11. Overview Lab 8-1 Solution Tag Files Custom Tags Web Application Deployment.
JSP Fundamentals Elements of a JSP Using Beans with JSP Integrating Servlets and JSP.
JSP Tag Libraries Lec Last Lecture Example We incorporated JavaBeans in “Course Outline” Example But still have to write java code inside java.jsp.
Copyright © 2002 ProsoftTraining. All rights reserved. JavaServer Pages.
Java Server Pages (JSP)
A seminar on j2ee by saritha. s. What is J2EE J2EE (Java 2 Platform, Enterprise Edition) is a Java platform designed for the mainframe-scale computing.
An Introduction to JavaServer™ Pages Prepared by Nicole Swan.
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.
An Introduction to JavaServer™ Pages Prepared by Nicole Swan.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
COMP9321 Web Application Engineering Semester 2, 2015 Dr. Amin Beheshti Service Oriented Computing Group, CSE, UNSW Australia Week 3 1COMP9321, 15s2, Week.
STRUCTURE OF JSP PRESENTED BY: SIDDHARTHA SINGH ( ) SOMYA SHRIVASTAV ( ) SONAM JINDAL ( )
1 Distributed System using J2EE. 2 What is J2EE?  J2EE (Java2 Enterprise Edition) offers a suite of software specification to design, develop, assemble.
Modern Programming Language. Web Container & Web Applications Web applications are server side applications The most essential requirement.
Java Server Pages. 2 Servlets The purpose of a servlet is to create a Web page in response to a client request Servlets are written in Java, with a little.
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.
17 Copyright © 2004, Oracle. All rights reserved. Integrating J2EE Components.
Java Servlets By: Tejashri Udavant..
Course Outcomes of Advanced Java Programming AJP (17625, C603)
Unit 6-Chapter 2 Struts.
Introduction to Struts
MSIS 655 Advanced Business Applications Programming
JavaServer Faces: The Fundamentals
Java Servlets and JSP.
Presentation transcript:

JSP and web applications

Java 2 Enterprise Edition J2EE Edition of Java Architecture specially designed for server-based applications Including web applications Highly compatible with M-V-C Client Tier Middle Tier Enterprise Information System Tier

J2EE Overview EJB Container application EJB EJB Database Web Container JMS JavaIDL RMI JNDI XML servlet servlet browser JSP JDBC JTA/JTS Client Tier Middle Tier EIS Tier

Which J2EE components? Pure JSP Simple applications Prototyping Use M-V-C Business logic pages (model) presentation pages (view) Request processing pages (controller) Enhance with JavaBeans components and custom tags

Tomcat web container Tomcat subdirectories: bin common/lib src conf scripts to run Tomcat common/lib jar archives with javax.servlet class files src interface definitions for javax.servlet classes conf configuration files (Tomcat parameters)

Tomcat web container docs work webapps HTML documentation about Tomcat a working directory for temporary files and generated servlets webapps all web applications run on Tomcat are placed in subdirectories of this

deploying a web application create a subdirectory of webapps, e.g. myDir create a WEB-INF subdirectory of myDir WEB-INF contains web.xml file specifies deployment parameters for the web application lib directory (optional) contains any special class libraries (.jar files) needed .classes directory class files for servlet and helper classes defined for the specific application

the web.xml file written in XML and contains environment data descriptions of servlet names and locations custom tag libraries security constraints on particular servlets multiple url aliases for servlets etc

Creating a web app in NetBeans

Creating a web app in NetBeans

Creating a web app in NetBeans

Creating a web app in NetBeans

Creating a web app in NetBeans

Creating a web app in NetBeans

Creating a web app in NetBeans

Adding a JSP to the Web App

Adding a JSP to the Web App

Adding a JSP to the Web App

Adding a JSP to the Web App

Running the Web App

Browsing the JSP

Adding custom tags to a JSP

custom tags used to farm out processing to specialised classes or Beans identified by a tag library directive basic JSP tag library e.g. <jsp:useBean … /> Apache Taglib custom tag library JavaServerFaces, struts libraries can define your own custom tags

custom tags defined as Java classes that extend base classes in javax.servlet.jsp.tagext package represented in a JSP using the syntax <lib:tag att1=“...” att1=“...” att1=“...” /> (can also have element content) custom tag in JSP replaced by code in the servelet on translation

custom tag example package myPack; import java.util.*; import java.io.*; import javax.servelet.jsp.*; import javax.servelet.jsp.tagext .*; public class DateStamper extends TagSupport { protected String comment = null; public String getComment () { return comment; }

public void setComment (String cm) { comment = cm; } public int doEndTag () { try { String dateStr = (new Date()).toString (); pageContext.getOut ().println ( “<hr>This page entitled, “ + comment + “, was printed on “ + dateStr + “<br>”); catch (Exception e) {//error handling} return EVAL_PAGE; }}

<taglib> <tlibversion>1.0 </tlibversion> <jspversion>1.1 </jspversion> <shortname>myTags</shortname> <tag> <name>DateStamper</name> <tagclass>myPack.DateStamper</tagclass> <bodycontent>empty</bodycontent> <attribute> <name>comment</name> <required>true</required> </attribute> </tag> </taglib> tag library definition file, myTags.tld

deployment in a web application <taglib> <taglib-uri> /myTags </taglib-uri> <taglib-location> /WEB-INF/tlds/myTags.tld </taglib-location </taglib> </web-app>

Tag libraries

using the tag in a JSP <%@ taglib uri=“/myTagLibrary” prefix = “myTags” %> <html><head><title>Using a custom tag</title></head> <body bgcolor = “FFFFFF”> <h1>Using a custom tag</h1> <p>Hello World. My custom tag has the following to say: <myTags:DateStamper comment=“This is a custom tag” /> </body></html>

JSP, Bean and Servelet example

description football league result web application users request match results different requests possible database search html front end user interaction through web-browser servelet/JSP request handling and data processing

system architecture holds a single table Teams containing match data football.jsp highly graphic interactive results page football.html Database handles the request, submits SQL and processes result FootballSearchBean represents football game data contained in a DB table FootballGame static page to request results helper class to create the DB connection DBInfo tomcat

football.html call JSP with a search parameter <html><head><title>Football Search</title></head> <body bgcolor = “white”> <h1>Search the football league table</h1> <ul><li> <a href = “http://localhost:8080/jspeg/football.jsp?searchType=all”> List all games </a> </li><li> <a href = http://localhost:8080/jspeg/football.jsp?searchType=drawn> List drawn matches </a> </li></ul> </body></html> call JSP with a search parameter call JSP with a search parameter

FootballGame class to handle results of data query package football; import java.sql; public class FootballGame { private String team1,team2 private int score1, score2; public String getTeam1 () {return team1;} // similar methods to get team2, score1, score2 public void loadFromResultSet (ResultSet r) throws SQLException { team1 = r.getString (“TEAM1”); // ditto for team2 score1 = r.getInt (“SCORE1”); // ditto for score2 } to handle results of data query loads DB query result into the FootballGame object

FootballSearchBean handle DB queries to use Java Iterator class package football; import java.sql; import java.util; public class FootballSearchbean { private static final allstr = “select * from TEAMS”; private static final drawstr = “select * from TEAMS where SCORE1=SCORE2”; private String searchType; public void setSearchType (String type) { searchType = type; } handle DB queries to use Java Iterator class searchType query parameter from football.html ends up here set up SQL query strings

FootballSearchBean contains results from the DB query private Vector results; public Iterator games () { if (results != null) return results.iterator (); else return null; } public int numGames () { return results.size (); return 0; contains results from the DB query for manipulating retrieved data counts the number of results

FootballSearchBean connect to the database public void doSearch () { results = new Vector (); try { Connection db = DBInfo.connectToDatabase (); Statement stmt = db.createStatement (); String request = allstr; if (“drawn”.equals (searchType)) request = drawstr; // else add code for other search options connect to the database create a Statement object (SQL query) to be fired at the DB

FootballSearchBean ResultSet r = stmt.executeQuery (request); while (r.next ()) { FootballGame fg = new FootballGame (); fg.loadFromResultSet r; results.addElement (fg); } r.close (); stmt.close (); db.close (); } catch (Exception e) {// error-handling code here} fire the query at the DB and store the retrieved rows create a FootballGame object for each retrieved table row add the FootballGame to the results Vector

football.jsp util package for the Iterator class <%@ page import = “java.util.*” %> <%@ page import = “football.*” %> <html><head><title>League Results</title></head><body> <!-- cool and flashy DHTML content inserted here by the web designer. Embedded amongst that will be: --> <h1>Results</h1> <jsp:useBean id = “theLeague” class = “football.FootballSearchBean” /> <jsp:setProperty name = “theLeague” property = “*”/> util package for the Iterator class football package with its classes searchType property from football.html passed to Bean here Bean created and given an Id

football.jsp <% theLeague.doSearch (); %> <% if (theLeague.numGames () == 0) { %> <p> No games played yet </p> <% } else { %> <!-- there are results so set up a table --> <table> <caption>Results</caption> <tr> <th align = “center”>Home Team</th> <th align = “center”>Home Team Score</th> <th align = “center”>Away Team</th> <th align = “center”>Away Team Score</th> </tr> searches the database with the user selected search option determines the size of the result set and acts accordingly

football.jsp creates an Iterator containing FootballGame objects <% Iterator it = theLeague.games (); while (it.hasNext ()) { FootballGame fg = (FootballGame) it.next (); %> <tr> <td><%= fg.getTeam1 () %> </td> <td><%= fg.getScore1 () %> </td> <td><%= fg.getTeam2 () %> </td> <td><%= fg.getScore2 () %> </td> </tr> <% } %> </table> </body></html> creates an Iterator containing FootballGame objects explicit typecast of each object to access the get methods use expressions to insert names and scores for each game in table cells

some design issues Java code in the JSP fragmented through the HTML difficult to trace errors brackets parameter declarations incorrect program logic web designer could unwittingly break the code

revised system architecture Match Report.jsp No Result.jsp football.html Database FootballSearchBean web.xml preprcessing servelet FootballGame hyperlinks now go to a pre-processing servelet DBInfo tomcat

web.xml <web-app> <servelet> <servelet-name>FootballServelet</servelet-name> <servelet-class>PreprocessServelet</servelet-class> </servelet> <servelet-mapping> <url-pattern>/FootballInfo</url-pattern> </servelet-mapping> </web-app>

PreprocessServelet // import all the usual servelet stuff import football.*; public class preprocessServelet extends HttpServelet { private static final String allstr = “no results available yet”; drawstr = “there have been no drawn games”; homestr = “there have been no home wins”; awaystr = “there have been no away wins”; private static final String jspFailPage = “NoResult.jsp”; private static final String jspReportPage = “MatchReport.jsp”;

PreprocessServelet public void doGet () {HttpServeletRequest req, HttpServeletresponse res) throws ServeletException, IOException { String search = req.getParameter (“searchType”); FootballSearchBean fsb = new FootballSearchBean (); fsb.setSearchType (search); fsb.doSearch (); if (fsb.numGames () == 0) { doSearchFail (search, req, res); else doSuccess (fsb, req, res); }

PreprocessServelet private void doSearchFail (String search, HttpServeletRequest req, HttpServeletresponse res) throws ServeletException, IOException { String reason = allstr; if (“drawn”.equals (search)) reason = drawstr; // add similar clauses for other possible reasons req.setAttribute (“Message”, reason); RequestDispatcher d = req.getRequestDispatcher (jspFailPage); d.forward (req, res); }

PreprocessServelet private void doSuccess (FootballSearchBean fsb, HttpServeletRequest req, HttpServeletresponse res) throws ServeletException, IOException { req.setAttribute (“theLeague”, fsb); RequestDispatcher d = req.getRequestDispatcher (jspReportPage); d.forward (req, res); } // end of PreprocessServelet

revised JSP pages // NoResult.jsp <!-- contains the following minimal content --> <jsp:useBean scope=“request” id=“Message” class=“String”> <%= Message %> ********************************************************** //MatchReport.jsp <jsp:useBean scope=“request” id=“theLeague” class=“football.FootballSearchBean”> ... <% Iterator it = theLeague.games (); while (it.hasNext ()) { FootballGame fg = (FootballGame) it.next (); %> <tr><td><%= fg.getTeam1 () %> </td> <!-- etc. -->

revised architecture much improved iterator code still exposed separation of most of the code from the web designer iterator code still exposed replace by custom tags from Apache Struts library <logic:iterate id=“fg” collection=“<%= theLeague.games() >” > <td><bean:write name = “fg” property = “team1” /> ... <!-- HTML and JSP actions to write other cells --> </logic:iterate>

Timetable change From next week: Two lectures moved into one slot: Wednesday 11-1 B39 (lab with GE being moved) Labs will still be Thursday, 9-11