Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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 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 <HTML> <HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <% String name = request.getParameter(“name”); %> <H1>Hello <%=name%> </H1> </BODY> </HTML> • • • • Presentation centric Presentation is separated from content Easier to code Better organization of Web application 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 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 • Tag libraries HTML (XML) Template <HTML> <HEAD><TITLE>First Servlet</TITLE></HEAD> <BODY> <H1>Hello </BODY> </HTML> </H1> 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> 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> Declarations Scriplet Expression 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” /> Include resource <% if (request.getParameter(“amount”) < 0) %> <jsp:forward page=“/errorPage2.jsp” flush=“true” /> Forward page <% else %> <jsp:setProperty name=“account” property=“balance” value=“25.32” /> <jsp:include page=“/pageFooter/” flush=“true” /> </BODY> Set value of class </HTML> variable in Java Bean 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> Simplify JSP Development Use Java Beans Use Tag Libraries JSP/Servlets in the Enterprise Model One Architecture Model/View/Controller JSP page Output Web Server <<uses>> Request object JavaBean <<forward>> Input doGet/ doPost <<creates>> Servlet Data base Using Java Beans in JSP Model 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> Get Java Bean Reference Java Bean class variables Using Java Beans in JSP Model 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> Create Java Bean Forward request to next JSP page Using Java Beans in JSP Model 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” /> .... Get Java Bean <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(); %> Reference Java Bean class variables …. </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> 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) { …. } Inherit TagSupport Invoked at starting tag return (SKIP_BODY); } public int doEndTag() { return(EVAL_PAGE); } } Invoked at ending tag 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> Using Tag in JSP Page 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> JSP Page uses <%@ taglib uri=“/homeDirectBank” prefix=“utils”> <HTML> <HEAD><TITLE>Test Servlet</TITLE></HEAD> <BODY> <utils:deptHeader /> ….. ….. </BODY> </HTML> } Tag Handler Class import java.io.*; import java.servlet.jsp.*; import java.servlet.jsp.tagext.*; maps 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); } }