Documente Academic
Documente Profesional
Documente Cultură
ITM 602
Topics
JSP Fundamentals
JSP Scripting Elements
JSP Implicit Objects
JSP Directives
JSP Actions
JSP Example (Loan Calculator)
Servlets & JSPs together
Tag Libraries
Deploying and Running a JSP Application
Fundamentals
Scripting Elements
Implicit Objects
Directives
Actions
Architecture
Translation Phase
Execution Phase
HTTP Server
Receive
Request
JSP Container
Page Compiler Servlet
JSP Servlet
Current?
Yes
Yes
No
Parse JSP
JSP Servlet
Loaded?
Generate JSP
Servlet Source
Load Servlet
Compile JSP
Servlet
No
Generate
Response
Send
Response
Scripting Elements
Types
Declarations
Scriptlets
Expressions
Declarations
Basics
Scriptlets
Basics
%>
int x = 5;
int y = 7;
int z = x + y;
Expressions
Basics
Scope
List
Example
<html>
<head>
<title>Implicit Objects</title>
</head>
<body style="font-family:verdana;font-size:10pt">
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
</body>
</html>
Save file:
$TOMCAT_HOME/webapps/jsp/Implicit.jsp
http://localhost:8080/jsp/Implicit.jsp?name=Sanjay
Access file
Directives
Used for
Page Directives
Language: (Default Java) Defines server side scripting language (e.g. java)
Import: Declares the packages and classes that need to be imported for using
in the java code (comma separated list)
Extends: Declares the class which the servlet compiled from JSP needs to
extend
Session: (Default true) Boolean which says if the session implicit variable is
allowed or not
Buffer: defines buffer size of the jsp in kilobytes (if set to none no buffering
is done)
Page Directives
Types cont.
Page Directives
Example
<%@
page language=java
buffer=10kb
autoflush=true
errorPage=/error.jsp
%>
import=java.util.*, javax.sql.RowSet
Include Directive
Basics
Example
JSP Actions
Include action
Param action
Forward action
useBean action
getProperty action
setProperty action
plugIn action
JSP Actions
Include
Example
<jsp:include page=inlcudedPage.jsp>
Includes the the output of includedPage.jsp into the page where this
is included.
JSP Actions
Forward
Can be avoided by setting a high buffer size for the forwarding jsp
page
Example
<jsp:forward page=Forwarded.html>
JSP Actions
Param
Example
<jsp:forward page=Param2.jsp>
</jsp:forward>
JSP Actions
useBean
Syntax:
<jsp:useBean id=name
bean=beanName type=typeName |
type=typeName />
Example
</jsp:useBean>
JSP Actions
get/setProperty
JSP Actions
plugIn
</jsp:params>
</jsp:plugin>
Example
Loan Calculator
Gets input to compute loan from user
error.jsp
simple.jsp
Handles error if
exception is thrown
Header.jsp
Footer.jsp
index.jsp
controller.jsp
Header.jsp
Footer.jsp
Calculate loan
Handles error if
exception is thrown
Calculate loan
Loan Calculator
index.jsp
<html>
<head>
<title>Include</title>
</head>
<body style="font-family:verdana;font-size:10pt;">
<%@ include file="header.html" %>
<form action="controller.jsp">
<td>Amount:</td>
</tr>
<tr>
<td>Interest in %:</td>
</tr>
<tr>
<td>Compound:</td>
</tr>
<tr>
<td>Simple:</td>
</tr>
<tr>
<td>Period:</td>
</tr>
</table>
</form>
<jsp:include page="footer.jsp"/>
</body>
</html>
Loan Calculator
Miscelaneous
controller.jsp
<%
%>
<jsp:forward page="/simple.jsp"/>
<%
} else {
%>
<jsp:forward page="/compound.jsp"/>
<%
}
%>
error.jsp
<head>
<title>Simple</title>
</head>
<body style="font-family:verdana;font-size:10pt;">
<%@ include file="header.html" %>
<p style="color=#FF0000"><b><%=
exception.getMessage() %></b></p>
<jsp:include page="footer.jsp"/>
</body>
</html>
header.jsp
<h3>Loan Calculator</h3>
footer.jsp
Loan Calculator
simple.jsp
if(interest <= 0) {
if(period <= 0) {
}
}
%>
<html>
<head>
<title>Simple</title>
</head>
<body style="font-family:verdana;font-size:10pt;">
<%@ include file="header.html" %>
<%
double amount =
Double.parseDouble(request.getParameter("amou
nt"));
double interest =
Double.parseDouble(request.getParameter("inter
est"));
int period =
Integer.parseInt(request.getParameter("period"));
%>
<jsp:include page="footer.jsp"/>
</body>
</html>
Loan Calculator
compound.jsp
if(interest <= 0) {
if(period <= 0) {
}
}
%>
<html>
<head>
<title>Compound</title>
</head>
<body style="font-family:verdana;font-size:10pt;">
<%@ include file="header.html" %>
<%
double amount =
Double.parseDouble(request.getParameter("amo
unt"));
double interest =
Double.parseDouble(request.getParameter("inter
est"));
int period =
Integer.parseInt(request.getParameter("period"))
;
%>
<jsp:include page="footer.jsp"/>
</body>
</html>
Example
Inventory
ListServlet
List.jsp
Renders form for new item
EditServlet
New.html
Edit.jsp
CreateServlet
UpdateServlet
DeleteServlet
Deletes a record
from the item table
Inventory
ListServlet
package edu.albany.mis.goel.servlets;
import javax.servlet.ServletException;
try {
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import javax.sql.RowSet;
rs.setUrl(sourceURL);
import sun.jdbc.rowset.CachedRowSet;
rs.execute();
req.setAttribute("rs", rs);
super.init(config);
getServletContext().getRequestDispatcher("/List.jsp").
forward(req, res);
} catch(Exception ex) {
throws ServletException {
doGet(req, res);
Inventory
EditServlet
package edu.albany.mis.goel.servlets;
import javax.servlet.ServletException;
try {
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.DriverManager;
import javax.sql.DataSource;
rs.setUrl(sourceURL);
import javax.sql.RowSet;
import sun.jdbc.rowset.CachedRowSet;
rs.setInt(1, Integer.parseInt(req.getParameter("id")));
rs.execute();
req.setAttribute("rs", rs);
getServletContext().getRequestDispatcher("/Edit.jsp
").forward(req, res);
super.init(config);
} catch(Exception ex) {
doGet(req, res);
Inventory
UpdateServlet
package edu.albany.mis.goel.servlets;
import javax.servlet.ServletException;
System.out.println("Connected Connection");
con = DriverManager.getConnection(sourceURL);
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
("update item " + "set name = ?, " + "description = ?, " + "price = ?, "
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
stmt.setString(1, req.getParameter("name"));
import javax.naming.InitialContext;
stmt.setDouble(3, Double.parseDouble(req.getParameter("price")));
import javax.sql.DataSource;
stmt.setString(2, req.getParameter("description"));
import java.sql.DriverManager;
stmt.setInt(4, Integer.parseInt(req.getParameter("stock")));
import java.sql.Connection;
stmt.setInt(5, Integer.parseInt(req.getParameter("id")));
import java.sql.PreparedStatement;
stmt.executeUpdate();
import java.sql.ResultSet;
stmt.close();
getServletContext().getRequestDispatcher("/List").
forward(req, res);
super.init(config);
} catch(Exception ex) {
} finally {
throws ServletException {
try {
doGet(req, res);
if(con != null) {
throws ServletException {
} catch(Exception ex) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con.close();
Inventory
DeleteServlet
package edu.albany.mis.goel.servlets;
try {
import javax.servlet.ServletException;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
con = DriverManager.getConnection(sourceURL);
import javax.sql.DataSource;
System.out.println("Connected Connection");
import javax.naming.InitialContext;
// Create Statement
import java.sql.Connection;
PreparedStatement stmt =
import java.sql.DriverManager;
import java.sql.PreparedStatement;
stmt.setInt(1, Integer.parseInt(req.getParameter("id")));
stmt.close();
import java.sql.ResultSet;
stmt.executeUpdate();
getServletContext().getRequestDispatcher("/List").
super.init(config);
forward(req, res);
} catch(Exception ex) {
throws ServletException {
} finally {
doGet(req, res);
try {
} catch(Exception ex) {
throws ServletException {
Inventory
CreateServlet
package edu.albany.mis.goel.servlets;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
con = DriverManager.getConnection(sourceURL);
import javax.servlet.http.HttpServlet;
System.out.println("Connected Connection");
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import javax.naming.InitialContext;
stmt.setString(1, req.getParameter("name"));
import java.sql.Connection;
stmt.setDouble(3, Double.parseDouble(req.getParameter("price")));
import java.sql.DriverManager;
stmt.setString(2, req.getParameter("description"));
import java.sql.PreparedStatement;
stmt.setInt(4, Integer.parseInt(req.getParameter("stock")));
import java.sql.ResultSet;
stmt.executeUpdate();
stmt.close();
getServletContext().getRequestDispatcher("/List").forward(req, res);
super.init(config);
} catch(Exception ex) {
} finally {
throws ServletException {
try {
doGet(req, res);
} catch(Exception ex) {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Inventory
Edit.jsp
<%@page contentType="text/html"%>
<tr>
<td><b>Price:</b></td>
<html>
<td>
<head>
<title>Inventory - Edit</title>
</td>
</head>
</tr>
<body style="font-family:verdana;font-size:10pt;">
<tr>
<%
<td><b>Stock:</b></td>
if(rs.next()) {
<td>
%>
<form action="Update">
</td>
</tr>
<tr>
<tr>
<td></td>
<td><b>Name:</b></td>
<td>
<td>
</td>
</tr>
<tr>
<td><b>Description:</b></td>
<td>
</td>
</tr>
</td>
</tr>
</table>
<%
}
%>
</body>
</html>
Inventory
Edit.jsp
<%@page contentType="text/html"%>
<head>
<title>Inventory - List</title>
<tr>
</head>
Delete
<body style="font-family:verdana;font-size:10pt;">
<th>Name</th>
</a>
</td>
<td>
<th>Description</th>
<th>Price</th>
<th>Stock</th>
<th></th>
<th></th>
</tr>
<%
while(rs.next()) {
%>
Edit
</a>
</td>
</tr>
<%
}
%>
</table>
</body>
</html>
Inventory
<html>
New.html
<head>
</head>
<body style="font-family:verdana;font-size:10pt;">
<form action="Create">
<td><b>Name:</b></td>
</tr>
<tr>
<td><b>Description:</b></td>
</tr>
<tr>
<td><b>Price:</b></td>
</tr>
<tr>
<td><b>Stock:</b></td>
</tr>
<tr>
<td></td>
</tr>
</table>
</body>
</html>