java server pages an introduction to jsp. containers and components several clients – one system
TRANSCRIPT
Java Server Pages
An introduction to JSP
Containers and Components
Several clients – one system
Java Server Pages (JSP)
HTML with embedded Java code Good for presentation
No print statements Compiled to a Servlet at runtime
Good performance Easy deployment
When a JSP is updated it’s recompiled Possible to compile manually
Easy for web designers to use Edited in an ordinary HTML editor
Support for Java Beans and Custom tags
JSP – Directives
At the top of a JSP page, the page directive is used <%@ page name=“value” %>
JSP – Page Directive parameters language
Default is java extends
Default is the base JSP class, but you could use your own
import=“package1,package2, class1, class2” session
True or False, determines if sessions should be automatically created. True is default
JSP – Page Directive parameters buffer
The output buffer size autoFlush
True or false, determines if the output should be flushed to the client. True is default
isThreadSafe True or false. True is default
info Descriptive text
JSP – Page Directive parameters errorPage
The page to go to in case of an error contentType isErrorPage
Defines if this is a error page. False is default. If it’s an error page a couple of extra objects are available in the page
Other Directives
Include directive <%@ include file=“relative url” %> Includes the file BEFORE compilation Only static content
JSP – Implicit objects
In JSPs, a couple of objects are allways available request
Subclass of ServletRequest getParameter(), getParameterNames() getAttribute() …
Response Subclass of ServletResponse Not used in normal situations
pageContext Used to get configuration variables for this page getAttribute()
JSP – Implicit objects
session The HttpSession Created automatically if session is not false in the page directive
application javax.servlet.ServletContext Used to get information about the application
out Used to print (in scriptlets) clear(), clearBuffer(), flush()
config javax.servlet.ServletConfig getInitParameter(), getInitParameterNames()
page exception
JSP – Implicit objects
exception Only in error pages getMessage() printStackTrace()
Java Code
Three ways to use Java Code in your JSP <%! Declaration %>
Declares member variables NOT thread safe
<%= MyClass.printMessage() %> Used to print single expressions
Java Code
<% any java code %> Can contain the entire application Use with care Can give very hard to read code
<% if(status == 1){
%><h3>Yo</h3>
<%}Else{%>
<h3>Oy</h3><% } %>
JSP Tags
There are a couple of tags available and you can extend the tag set with your own tags
XML Syntax Doesn’t distract HTML authoring tools
Forward
<jsp:forward page=“relative URL” /> Forwards the request
Include
<jsp:include page=“relative url” flusth=“true/false” />
Includes the output in runtime Can be dynamic content
UseBean
<jsp:useBean id=“instance name” scope=“page|request|session|application” beanName=“package.class”|class=“package.class” />
Used to initialize a bean. Only called once
<jsp:useBean …>
<h4>The bean is created</h4>
</jsp:useBean>
GetProperty
Used to call getXXX methods in a bean <jsp:getProperty name=“bean instance
name” property=“name” /> Will call bean.getName() Name is the same as id in <jsp:useBean>
SetProperty
Used to call setXXX methods in a bean <jsp:setProperty name=“instance name”
property=“*|propertyname” value=“value” /> When * is used as property name, a setXXX
for value in getParameterNames() will be called
Example
package test1; class TestBean{ private String name; private String surname;
public String getName(){ return name; } public String getSurname(){ return surname; } public void setSurname(String _surname){ surname=_surname; } public void setName(String name=_name){ name=_name; } }
Example cont.
<%@ page languea=“java” session=“true” %>
<jsp:useBean id=“tb” class=“test1.TestBean” scope=“session”>
<i>The bean is created </i>
<jsp:getProperty name=“tb” property=“name” />
<jsp:setProperty name=“tb” property=“name” value=“Fredrik” />