basic_jsp

advertisement
Basic JSP
Celsina Bignoli
bignolic@smccd.net
Problems with Servlets
• Servlets contain
– request processing,
– business logic
– response generation
all lumped together!
• Problems:
– good Java knowledge is needed to develop and
maintain the application
– changing look and feel or a new client type
require changes to the Servlet code
– cannot use web page development tools
Advantages of JSP
• separates request processing and business
logic from the presentation
– places all static HTML in a JSP page and adds
a few JSP elements to generate the dynamic
content
• allows the separation of tasks between Java
programmers and WEB page authors
• makes it easier to change presentation
without affecting business layer and
viceversa
A Simple JSP Page
JSP tag
HTML
Scriptlet
<%@ page import=“java.text.*, java.util.*”%>
<html>
<head><title><Date Example</title></head>
<body>
<%
Date d=new Date();
String today = DateFormat.getInstance().format(d);
%>
Today is:
<em><%=today%></em>
</body>
</html>
Example.jsp
• Static: HTML/XML elements
• Dynamic: scriptlets
• Special JSP elements
JSP Processing- Translation Phase
request
JSP
Page
(.jsp)
response
JSP
Translator
Servlet
Source
(.java)
Text
Buffer
Java
Compiler
Servlet
Class
(.class
)
Servlet
Container
Translation
Phase
JVM
Request Processing
Phase
JSP Processing- Request Processing Phase
request
JSP
Page
(.jsp)
response
JSP
Translator
Servlet
Source
(.java)
Text
Buffer
Java
Compiler
Servlet
Class
(.class
)
Servlet
Container
Translation
Phase
JVM
Request Processing
Phase
JSP Translation - Example
package jsp;
import
import
…
import
import
javax.servlet.*;
javax.servlet.http.*;
java.text.*;
java.util.*;
public class example_jsp
extends org.apache.jasper.runtime.HttpJspBase
{ …
}
example_jsp.java
extends: javax.servlet.http.HttpServlet
service() method - Example
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
…
try
{
out = pageContext.getOut();
out.write("<html>\r\n");
out.write("<head><title><Date Example</title></head>\r\n");
out.write("<body>\r\n");
Date d=new Date();
String today = DateFormat.getInstance().format(d);
out.write("\r\n");
out.write("Today is:\r\n");
out.write("<em>");
out.print(today);
out.write("</em>\r\n");
out.write("</body>\r\n");
out.write("</html>");
}
…
}
JSP Elements
• Directives
• Comments
• Actions
– standard actions
– custom actions and JSTL
• Expression Language (EL)
• Scripting
• JavaBean components
JSP Directive Elements
• Specify attribute of the page itself
– type of content
– buffering requirements
– resources used
– how runtime errors should be handled
• Do not affect content of a response but how
the container should handle it.
• Enclosed between <%@ and and %>
• Have a name and one or more
attribute/value pairs
– attribute and values are case-sensitive
– values must be enclosed in single or double
quotes
Page Directive
<%@page contentType=“text/html” %>
• other possible values for contentType
– text/plain
– text/xml
– text/vnd.wap.wml
• other possible attributes
–
–
–
–
–
–
errorPage
isErrorPage
session
pageEncoding
buffer
autoFlush
Taglib Directive
<%@taglib prefix=“c”
uri=“http://java.sun.com/jsp/jstl/core” %>
• declares a JSTL custom tag library used in
the page
• the prefix is the name used for the library in
the JSP page
• the uri uniquely identifies the library
JSP Comments
<%-- comment goes here --%>
• delimited by <%-- and --%>
• ignored when the page is processed
• never sent to the browser
JSP Actions
• represent dynamic actions to be performed at
runtime
<prefix: action-name attr1=“value1” attr2=“value2”>
action_body
</brefix:action-name>
• or
<prefix: action-name attr1=“value1” attr2=“value2”>
• allows dor actions in different libraries to have the same
name
• allow contaienr to determine which library an action belongs
Standard Actions
<isp:useBean>
makes a java bean component available to a page
<jsp:getProperty>
gets a property value from a JavaBean components and
adds it to the response
<jsp:setProperty>
Set a JavaBean property value
<jsp:include>
Include the response from a servlet or JSP page during the
request processing phase
<jsp:forward>
Forwards the processing of a request to a servlet or JSP
page
Standard Actions (2)
<isp:param>
adds a parameter to a request handed over to another
servlet or JSP page
<jsp:plugin>
Used to run applets on the browser
<jsp:attribute>
Set the value of an action attribute
<jsp:body>
Sets the action element body
<jsp:element>
Dynamically generate an XML element
<jsp:text>
to encapsulate text “verbatim”
JSP Standard Tag Library (JSTL)
• group of libraries each containing related
actions
• Core
• XML processing
• Internationalization
• Relational Database Access
• Functions
JSP Expression Language
• based on both ECMAScript and XPath
• built-in support for JavaBean access and
manipulation, collection of objects,
automatic type conversion etc…
• EL expressions enclosed within ${ and }
• ${anObject.aProperty}
• <c:if test=“${user.salary > 10000}”>
…
</C:if>
Scripting Elements
• fragments of java code embedded in a
JSP page
• Declarations
• Expressions
• Scriptlets
• heavily used in early JSP pages but rarely
in newer developments (and discouraged)
Declarations
• used to insert methods, constants and
variable declarations in JSP pages
<%!
private static String EXAMPLE=“/example2”;
private static String SHOP_PAGE=“/estore.jsp”;
private static String CART_PAGE=“/shopcart.jsp”;
private String dispPrice(String price)
{
// method body
}
%>
Expressions
• an embedded Java expression that is
evaluated and converted to a text String
• The text string is placed in the JSP output
at the location in which the element
appears
<table>
<tr>
<td> <%= curItem.getName() %> </td>
<td> <%= String.valueOf(dispPrice(curItem.getPrice())) %>
</td>
</tr>
</table>
Scriptlets
• used to include complete fragments of java
code in a JSP page
• cau use the out implicit object (of type
javax.servlet.jsp.JspWriter) to write output
<%
if (state.isLocal())
out.print(totalCost * localTax)
else
out.print(totalCost)
%>
Problems with Scriptlets
• discouraged since they do not promote
separation of presentation from data/logic
• look as a Servlet inside-out
• make JSP page as hard to write/maintain as
corresponding Servlet
Model-View-Controller Design
• Separation of
– data and business logic (Model)
– data presentation (View)
– data interaction (Controller)
• The user interacts with the Controller to ask
for things to be done.
• Controller forward the request to the Model
• the result of the request is displayed by the
View
Model-View-Controller Design
Request
Response
Browser
Controller
(Servlet)
Model
(JavaBean)
View
(JSP)
JSP/Servlet Container
Data
Data
Data Tier
Download