220 likes | 247 Views
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 and maintain dynamic web pages and dynamic XML documents. Servlet vs. JSP. Servlet Example.
E N D
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. JSP Servlet Example 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 vs. JSP (cont) JSP Example • Presentation centric • Presentation is separated from content • Easier to code • Better organization of Web application <HTML><HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <% String name = request.getParameter(“name”); %> <H1>Hello <%=name%> </H1> </BODY></HTML>
Recommendation • Use JSP • If presentation changes frequently • Presentation is complex • Use Servlets • Validation, simple business logic • Simple/small presentation
Anatomy of a JSP Page • Template (static HTML or XML) • JSP Elements • Tag libraries
HTML (XML) Template <HTML><HEAD><TITLE>First Servlet</TITLE></HEAD><BODY> <H1>Hello </H1> </BODY></HTML>
JSP Elements Directive 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>
Declarations Scriplet Expression JSP Elements Scripting 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>
Include resource Forward page Set value of class variable in Java Bean JSP Elements Action 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>
Accessing Servlet Variables • config • request • response • session • out • pageContext • application • page
JSP Elements Servlet 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>
Use Java Beans Use Tag Libraries Simplify JSP Development
Model OneArchitecture Database Output <<uses>> Request object JavaBean <<forward>> doGet/doPost <<creates>> Input JSP/Servlets in the Enterprise Model/View/Controller WebServer JSP page Servlet
Get Java Bean Reference Java Bean class variables Using Java Beans in JSPModel 1 Getting values from a java bean <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>
CreateJava Bean Forward request tonext JSP page Using Java Beans in JSPModel 1 Creating a java bean and setting values in the java bean <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>
Get Java Bean Reference Java Bean class variables Using Java Beans in JSPModel 1 Getting values from a java bean <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>
Tag 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 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>
Inherit TagSupport Invoked at starting tag Invoked at ending tag Tag Handler Class import 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); }}
Tag 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>
Tag Library Descriptor (homeDrectBank) <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 Handler Class 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); }} maps JSP Page uses <%@ taglib uri=“/homeDirectBank” prefix=“utils”><HTML><HEAD><TITLE>Test Servlet</TITLE></HEAD><BODY> <utils:deptHeader /> ….. ….. </BODY></HTML> } Using Tag in JSP Page