Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of 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);
}
}