Date post: | 17-Jan-2016 |
Category: |
Documents |
Upload: | randall-walker |
View: | 237 times |
Download: | 0 times |
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