JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the...

Post on 17-Jan-2016

237 views 0 download

Transcript of JSP Pages. What and Why of JSP? JSP = Java code imbedded in HTML or XML –Static portion of the...

JSP PagesJSP Pages

What and Why of JSP?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 and maintain dynamic web pages and dynamic XML documents

Servlet vs. JSPServlet vs. JSP

Import java.io.*;import javax.servlet.*;import javax.servlet.http.*;publc class HtmlPage extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType(“text/html”); PrintWriter out = response.getWriter(): String name = req.getParameter(“name”); out.Println(“<HTML>”); out.Println(“<HEAD><TITLE>First Servlet</TITLE></HEAD>”); out.Println(“<BODY>”); out.Println(“<H1>Hello “ + name + “</H1>”); out.Println(“</BODY>”); out.Println(“</HTML>”); }}

Servlet Example

Servlet vs. JSP (cont)Servlet vs. JSP (cont)

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <% String name = request.getParameter(“name”); %> <H1>Hello <%=name%> </H1> </BODY></HTML>

JSP Example

• Presentation centric• Presentation is separated from content• Easier to code• Better organization of Web application

RecommendationRecommendation

• Use JSP– If presentation changes frequently– Presentation is complex

• Use Servlets– Validation, simple business logic– Simple/small presentation

Anatomy of a JSP PageAnatomy of a JSP Page

• Template (static HTML or XML)

• JSP Elements

• Tag libraries

Element Type JSP Syntax Description

Directives <%@ directive_name%> Controls to define translation into Java code

Scripting <% …………… %> Embed Java code in HTML

Actions <jsp: …………. > JSP-specific tag for Java Beans

HTML (XML) TemplateHTML (XML) Template

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <H1>Hello </H1>

</BODY></HTML>

JSP ElementsJSP ElementsDirective Elements

<%@ page info=“HomeDirectBank” %><%@ page import=“java.sql.*, java.math.*” %><%@ page isThreadSafe=“true” %><%@ page errorPage=“/homedirectbank/error.jsp” %>

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <%@ include file=“Header.jsp” %>

<H1>Hello World</H1> </BODY></HTML>

JSP ElementsJSP ElementsScripting Elements

<%! private double totalAmount; %>

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <H1>Hello World</H1> <% double amount = request.getParameter(“amt”); totalAmount += amount; %>

<P>The total amount is <% =totalAmount %> </P> </BODY></HTML>

Declarations

Scriplet

Expression

JSP ElementsJSP ElementsAction Elements

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY>

<jsp:usebean id=account class=model.Student scope=Session/> <jsp:include page=“/pageHeader” flush=“true” />

<% if (request.getParameter(“amount”) < 0) %> <jsp:forward page=“/errorPage2.jsp” flush=“true” /> <% else %> <jsp:setProperty name=“account” property=“balance” value=“25.32” /> <jsp:include page=“/pageFooter/” flush=“true” /> </BODY></HTML>

Include resource

Forward page

Set value of class variable in Java Bean

Accessing Servlet VariablesAccessing Servlet Variables

• config• request• response• session• out• pageContext• application• page

JSP ElementsJSP ElementsServlet Variables

<HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <H1>Hello World</H1> <br>Date: <% out.print(new java.util.Date()); %>

<% double amount = request.getParameter(“amt”); totalAmount += amount; Double taxRate = (Double) session.getAttribute(“taxRate”); %>

<P>The total amount is <% =totalAmount %> </P> </BODY></HTML>

Simplify JSP DevelopmentSimplify JSP Development

Use Java Beans

Use Tag Libraries

Model/View/Controller

JavaBean

Request object

JSP/Servlets in the EnterpriseJSP/Servlets in the Enterprise

Servlet

JSP page

Database

WebServer

Model One

Architecture

Output

doGet/doPostInput

<<forward>> <<creates>>

<<uses>>

Using Java Beans in JSPUsing Java Beans in JSPModel 1Model 1

<HTML><HEAD><TITLE>JSP Page 2</TITLE></HEAD> <BODY> ….

<jsp:useBean id=“employee” class=“javaBeans.Employee” scope=“request” /> ....

<br>lastname = <jsp:getProperty name=“employee” property=“lastName” /> <br>firstname = <jsp:getProperty name=“employee” property=“firstName” />

<br>lastname = <%= employee.getLastName() %> <br>firstname = <%= employee.getFirstName() %>

…. </BODY></HTML>

Getting values from a java bean

Get Java Bean

Reference Java Bean class variables

Using Java Beans in JSPUsing Java Beans in JSPModel 1Model 1

<HTML><HEAD><TITLE>JSP Page 1</TITLE></HEAD> <BODY> ….

<jsp:useBean id=“customer1” class=“control.Customer” scope=“request”> <jsp:setProperty name=“customer1” property=“lastName” value=“Flintstone” /> <jsp:setProperty name=“customer1” property=“firstName” value=“Wilma” /> <% customer1.setUserid(“flintstonew”); %> <% customer1.setPassword(“dino”); %> </jsp:useBean>

….

<jsp:forward page=”/jspPage2” />”/>

…. </BODY></HTML>

Creating a java bean and setting values in the java bean

CreateJava Bean

Forward request tonext JSP page

Using Java Beans in JSPUsing Java Beans in JSPModel 1Model 1

<HTML><HEAD><TITLE>JSP Page 2</TITLE></HEAD> <BODY> ….

<jsp:useBean id=“customer1” class=“control.Customer” scope=“request” /> ....

<br>Last name = <jsp:getProperty name=“customer1” property=“lastName” /> <br>first name = <jsp:getProperty name=“customer1” property=“firstName” /> <br>Username = <% customer1.getUserid(); %> <br>Password = <% customer1.getPassword(); %>

…. </BODY></HTML>

Getting values from a java bean

Get Java Bean

Reference Java Bean class variables

Tag LibrariesTag Libraries

• Create custom XML tags that you can imbed in JSP pages– Custom commands (i.e., macros)– Java tag handler class defined for each

custom tag– XML tag in JSP Java method called for

tag

Tag TypesTag Types

• XML format– Tag without a body

<rkjTagLib:deptHeader/>

– Tag without a body but with an attribute

<rkjTagLib:table rowcount=5 colcount=3 />

– Tag with body and an attribute

<rkjTagLib:table rowcount=5 colcount=3 > Title of Table </rkjTagLIb:table>

Tag Handler ClassTag Handler Classimport java.io.*;import java.servlet.jsp.*;import java.servlet.jsp.tagext.*;

public class DeptHeader extends TagSupport{ public int doStartTag() { try { JspWriter out = pageContext.getOut(); out.println(“<H2>Information Systems Dept.</H1>”); out.println(“<H3>Brigham Young University-Idaho </H3>”); } catch (IOException ioex) {

…. }

return (SKIP_BODY); }

public int doEndTag() { return(EVAL_PAGE); }}

Inherit TagSupport

Invoked at starting tag

Invoked at ending tag

Tag Library DescriptorTag Library Descriptor<?xml version=“1.0” encoding=“ISO-8859-1” ?><!DOCTYPE taglib PUBLIC “-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN” http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd>

<taglib>

<tlib-version>1.0</tlib-version>> <jspversion>1.2</jspversion> <shortname>homeDirectBank</shortname>

<tag> <name>deptHeader</name> <tagclass>homedirectbank.DeptHeader</tagclass> <bodycontent>EMPTY</bodycontent> <info>Inserts IS department header</info> </tag>

</taglib>

Using Tag in JSP PageUsing Tag in JSP Page<taglib> <tlibversion>1.1</tlibversion> <jspversion>1.2</jspversion> <shortname>homeDirectBank</shortname>

<tag> <name>deptHeader</name> <tagclass>com.taglib.homedirectbank.DeptHeader</tagclass> <bodycontent>EMPTY</bodycontent> <info>Inserts IS department header</info> </tag>

</taglib>

Tag Library Descriptor (homeDrectBank)

<%@ taglib uri=“/homeDirectBank” prefix=“utils”><HTML><HEAD><TITLE>Test Servlet</TITLE></HEAD> <BODY> <utils:deptHeader /> ….. …..</BODY></HTML>

}

JSP Page

import java.io.*;import java.servlet.jsp.*;import java.servlet.jsp.tagext.*;

public class DepHeader extends TagSupport{ public int doStartTag() { try { JspWriter out = pageContext.getOut(); out.println(“<H2>Information Systems Dept.</H1>”); out.println(“<H3>Brigham Young University-Idaho </H3>”); } catch (IOException ioex) {

…. }

return (SKIP_BODY); }

public int doEndTag() { return(EVAL_PAGE); }}

Tag Handler Class

maps

uses