cs 112 introduction to programming web programming: backend (server side) programming with servlet,...
TRANSCRIPT
![Page 1: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/1.jpg)
CS 112 Introduction to Programming
Web Programming: Backend (server side)
Programming with Servlet, JSP
Yang (Richard) YangComputer Science Department
Yale University308A Watson, Phone: 432-6400
Email: [email protected]
![Page 2: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/2.jpg)
2
Outline
Admin and recap Server-side web programming overview Servlet programming Java servlet page (JSP)
![Page 3: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/3.jpg)
3
Admin
PS8 Part 2 (Bulldog tournament) Due Tuesday at 11:55 pm
Project checkpoint Due Thursday at 11:55 pm (Please use the
CHECKPOINT template)
Project demo day 11:30 – 12:30 pm Apr. 30 at TEAL
![Page 4: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/4.jpg)
Recap: HTML/CSS/Javascript
HTML: page content (model) Document object model (DOM)
CSS: display of content (view) Javascript: interaction
![Page 5: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/5.jpg)
5
Outline
Admin and recap Server-side web programming overview
![Page 6: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/6.jpg)
6
Web App--Server Side: Motivating Example (OPS2b)
Madlib (template):
One of the most <adjective> characters in fiction is named"Tarzan of the <plural-noun> ." Tarzan was raised by a/an<noun> and lives in the <adjective> jungle in theheart of darkest <place> . He spends most of his timeeating <plural-noun> and swinging from tree to <noun> .Whenever he gets angry, he beats on his chest and says," <funny-noise> !" This is his war cry. Tarzan always dresses in<adjective> shorts made from the skin of a/an <noun>and his best friend is a/an <adjective> chimpanzee namedCheetah. He is supposed to be able to speak to elephants and<plural-noun> . In the movies, Tarzan is played by <person's-name> .
![Page 7: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/7.jpg)
7
Web App--Server Side: Motivating Example
Welcome to the game of Mad Libs.I will ask you to provide several wordsand phrases to fill in a mad lib story.The result will be displayed to you.
Template file? tarzan.txt
Please input an adjective: sillyPlease input a plural noun: applesPlease input a noun: frisbeePlease input an adjective: hungryPlease input a place: New Haven, CTPlease input a plural noun: beesPlease input a noun: umbrellaPlease input a funny noise: burpPlease input an adjective: shinyPlease input a noun: jelly donutPlease input an adjective: beautifulPlease input a plural noun: spoonsPlease input a person's name: Keanu Reeves
Commandline Madlib (interaction):
Your mad-lib has been created:
One of the most silly characters in fiction is named "Tarzan of the apples ." Tarzan was raised by a/an frisbee and lives in the hungry jungle in the heart of darkest New Haven, CT . He spends most of his time eating bees and swinging from tree to umbrella . Whenever he gets angry, he beats on his chest and says, " burp !" This is his war cry. Tarzan always dresses in shiny shorts made from the skin of a/an jelly donut and his best friend is a/an beautiful chimpanzee named Cheetah. He is supposed to be able to speak to elephants and spoons . In the movies, Tarzan is played by Keanu Reeves .
pseudo code?
![Page 8: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/8.jpg)
Cmdline Madlib Pseudo CodeDisplay welcome message
Ask user to choose story template
Process given template file
foreach token in template file
ask user input
store token -> user input mapping
Display story
for each line
for each word in line
if word is token
print user input
else
print word as it is
• Web presents a different mediumto deliver app.
• The unit of interaction is Web page.
• Q: what Web pages?http://mrt-cs112-0.appspot.com/
![Page 9: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/9.jpg)
Webpage-Based Programming One way to think about a dynamic Web page is
to think it as an object: it is constructed with given input parameters
A Web page may collect input from user and then create another Web page (object)--browsing
P1
input P2
input P3
input
![Page 10: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/10.jpg)
Input to Create Each Page?Display welcome message
Ask user to choose story template file
Process given template file
foreach token in template file
ask user input
store token -> user input mapping
Display story
for each line
for each word in line
if word is token
print user input
else
print word as it is
• Input: • None
• Input• Chosen
template• Who collect?
• Input• User input
for each token
• ChosenTemplate
• Who collect?
P1
P2
P3
![Page 11: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/11.jpg)
Server-side Page Creation
input parameter
created html page
Q: What is the mechanism in Web to collect user input?
![Page 12: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/12.jpg)
HTML Form
Form
http://www.teaching-materials.org/htmlcss/lesson3/slides.html
![Page 13: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/13.jpg)
HTML Form
A form gives instruction to the browser on inputs to be collected from user URL (program) to be invoked when sending to server
http://www.teaching-materials.org/htmlcss/lesson3/slides.html
<form action="/create" method="get”> Step 1: Please pick an input story template: <div> <input type="text" name="file" size ="40" value="tarzan.txt"> </div> <input type="hidden" name="Language" value="English”> <div> <input type="submit" value="Next" /> </div> </form>
Program to be invoked
An input item to be collected
How input is transported to
server:get/post
Invisible on page. Used to pass internal data
![Page 14: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/14.jpg)
Form Input Type
http://www.teaching-materials.org/htmlcss/lesson3/slides.html
<input type=”text" name="q"> <input type=“checkbox” name = “myc”/> <input type=“radio” name =
“mypizzasize”/> <input type=“range” min=“0” max=“10”
name = “cheesiness”/> <select name="crust”>
<option value="thin">Thin</option> <option value="thick">Thick</option> <option value="cheese">Cheese</option>
</select>
![Page 15: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/15.jpg)
Web Execution Flow: Client Side After user clicks submit on a form,
browser encodes each input in a format
<name>=<value> requests page with URL:
<form action>?<name>=<value>&<name>=<value>
http://www.bing.com/search?q=yale
![Page 16: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/16.jpg)
Web Execution Flow: Server Side
Web server receives the request for the URL, finds the application for the URL, and passes the values of the parameters to the application
The application retrieves the parameters, generates a Web page, and sends the page back to the browser to display
![Page 17: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/17.jpg)
Google App Engine
17
A platform to simplify the development and hosting of Web applications Simplified deployment
• Load balancing • Automatic scaling
Useful high-level services and APIs
![Page 18: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/18.jpg)
Discussion: What GAE can do to allow simple, flexible server-side app programming? Client browser
After user clicks submit on a form, browser• encodes each input in a format <name>=<value>• requests page with URL:
<form action>?<name>=<value>&<name>=<value>
Web server receives the request for the URL, finds the application for the URL, and passes the values of the parameters to the
application. the application retrieves the request parameters,
generates a response Web page back to the browser to display
web.xml:User defines
URL mapping
![Page 19: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/19.jpg)
Discussion: What GAE can do to allow simple, flexible server-side app programming? Client browser
After user clicks submit on a form, browser• encodes each input in a format <name>=<value>• requests page with URL:
<form action>?<name>=<value>&<name>=<value>
Web server receives the request for the URL, finds the application for the URL, and passes the values of the parameters to the
application. the application retrieves the request parameters,
generates a response Web page back to the browser to display
Define Servlet class: conduct
common processing steps; app overrides
key step (doGet/doPost) to
define app-specific behavior
![Page 20: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/20.jpg)
Discussion: What GAE can do to allow simple, flexible server-side app programming? Client browser
After user clicks submit on a form, browser• encodes each input in a format <name>=<value>• requests page with URL:
<form action>?<name>=<value>&<name>=<value>
Web server receives the request for the URL, finds the application for the URL, and passes the values of the parameters to the
application. the application retrieves the request parameters,
generates a response Web page back to the browser to display
Define HttpServletRequest
class to allow simple methods to retrieve
parameter, e.g.,getParameter(“name”)
![Page 21: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/21.jpg)
Discussion: What GAE can do to allow simple, flexible server-side app programming? Client browser
After user clicks submit on a form, browser• encodes each input in a format <name>=<value>• requests page with URL:
<form action>?<name>=<value>&<name>=<value>
Web server receives the request for the URL, finds the application for the URL, and passes the values of the parameters to the
application. the application retrieves the request parameters,
generates a response Web page back to the browser to display
Define HttpServletResponse
class to allow simple methods to write response (not worry about sending
across network), e.g.,getWriter().println(
“<p>Hello”)
![Page 22: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/22.jpg)
ExampleDisplay welcome message
Ask user to choose story template file
Process given template file
foreach token in template file
ask user input
store token -> user input mapping
Display story
for each line
for each word in line
if word is token
print user input
else
print word as it is
Input: Noneindex.html (see Note)
![Page 23: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/23.jpg)
web.xml
23
<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5”>
<welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list>
</web-app>
![Page 24: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/24.jpg)
ExampleDisplay welcome message
Ask user to choose story template file
Process given template file
foreach token in template file
ask user input
store token -> user input mapping
Display story
for each line
for each word in line
if word is token
print user input
else
print word as it is
Input: Chosen template
CreateMadlibServlet.java
![Page 25: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/25.jpg)
web.xml
Allow a WebApp developer to declare the applications (servlets), and which servlet will serve which URL
25
<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>CreateMadlibServlet</servlet-name> <servlet-class>madlibs.CreateMadlibServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>CreateMadlibServlet</servlet-name> <url-pattern>/create</url-pattern> </servlet-mapping>
<welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>
![Page 26: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/26.jpg)
ExampleDisplay welcome message
Ask user to choose story template file
Process given template file
foreach token in template file
ask user input
store token -> user input mapping
Display story
for each line
for each word in line
if word is token
print user input
else
print word as it is
Input: User input for each token/template
DisplayMadlibServlet.java
![Page 27: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/27.jpg)
web.xml
Allow a WebApp developer to declare the applications (servlets), and which servlet will serve which URL
27
<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>CreateMadlibServlet</servlet-name> <servlet-class>madlibs.CreateMadlibServlet</servlet-class> </servlet>
<servlet> <servlet-name>DisplayMadlibServlet</servlet-name> <servlet-class>madlibs.DisplayMadlibServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>CreateMadlibServlet</servlet-name> <url-pattern>/create</url-pattern> </servlet-mapping>
<servlet-mapping> <servlet-name>DisplayMadlibServlet</servlet-name> <url-pattern>/display</url-pattern> </servlet-mapping>
<welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>
![Page 28: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/28.jpg)
28
Outline
Admin and recap Server-side programming overview Java Servlet Java Servlet Page (jsp)
![Page 29: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/29.jpg)
Motivation
Most used statement in CreateMadlibServlet.java?
29
![Page 30: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/30.jpg)
Motivation
For many Web pages, most of the content will be static, and hence only a small portion will be generated dynamically
The Servlet architecture asks you to print the whole document (i.e., a large number of Java print and escape statements for printing the static part)
JSP goal: remove most of the print statements
30
![Page 31: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/31.jpg)
Motivating Example Generate an html page consisting of a
list of 10 random numbers
31
![Page 32: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/32.jpg)
Manual HTML
32
<html><body><h2>My list</h2><ul> <li>1: 9</li> <li>2: 3</li> <li>3: 5</li> <li>4: 1</li> <li>5: 7</li> <li>6: 4</li> <li>7: 0</li> <li>8: 2</li> <li>9: 8</li> <li>10: 9</li></ul></body></html>
![Page 33: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/33.jpg)
Servlet
33
import java.util.Random;public class NumListServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { doGet(req, resp); } public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html");
resp.getWriter().println("<html>"); resp.getWriter().println("<body>"); resp.getWriter().println(”<h2>My list</h2>"); resp.getWriter().println("<ul>"); Random rand = new Random(); for (int i = 1; i < 11; i ++) { resp.getWriter().print(” <li>"); resp.getWriter().print( i + ”: ” + rand.nextInt(10) ); resp.getWriter().println("</li>"); } resp.getWriter().println("</ul>");
resp.getWriter().println("</body>"); resp.getWriter().println("</html>");}
![Page 34: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/34.jpg)
JSP Motivation
34
![Page 35: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/35.jpg)
JSP Motivation
35
Directive
Called a JSP scriptlet, containing a fragment of java
code
Why it does not work?
![Page 36: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/36.jpg)
Run test.jsp as /test
36
![Page 37: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/37.jpg)
web.xml
37
<?xml version="1.0" encoding="utf-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>CreateMadlibServlet</servlet-name> <servlet-class>madlibs.CreateMadlibServlet</servlet-class> </servlet>
<servlet> <servlet-name>DisplayMadlibServlet</servlet-name> <servlet-class>madlibs.DisplayMadlibServlet</servlet-class> </servlet>
<servlet> <servlet-name>TestJSP</servlet-name> <jsp-file>test.jsp</jsp-file> </servlet>
<servlet-mapping> <servlet-name>TestJSP</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping>
...
<welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list></web-app>
![Page 38: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/38.jpg)
JSP Motivation
38
Directive
Called a JSP scriptlet, containing a fragment of java
code
implicit object
See http://www.tutorialspoint.com/jsp/jsp_implicit_objects.htm for implicit objects
![Page 39: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/39.jpg)
Output
39
![Page 40: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/40.jpg)
Problem
40
Use implicit object out to print. out !=
response.getWrite()
![Page 41: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/41.jpg)
Fix
41
![Page 42: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/42.jpg)
Motivation
42
What if we do not want to use the print
statement?
![Page 43: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/43.jpg)
Attempt
43
Problem: i and rand.NextInt(10) are
not treated as Java exp.
![Page 44: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/44.jpg)
JSP Expression
44
<%= %> encloses JSP expression, whose
value appears in the output to out.
![Page 45: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/45.jpg)
Motivation: Reduce Embedded Scriptlets
45
![Page 46: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/46.jpg)
JSTL (JavaServer Pages Stanard Tag Library)
Objective: introduce JSP tags for common tasks such as conditional execution, loops, XML data access
46
![Page 47: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/47.jpg)
Motivation: Reduce Embedded Scriptlets
47
http://www.tutorialspoint.com/jsp/jstl_core_foreach_tag.htm
![Page 48: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/48.jpg)
Java Servlet Page (JSP)
History Released in 1999 Similar to PHP but supports more
sophisticated J2EE programming Can be considered as a high-level
abstraction of Java servlets In real implementation, JSPs are
translated to servlets at runtime
48
![Page 49: CS 112 Introduction to Programming Web Programming: Backend (server side) Programming with Servlet, JSP Yang (Richard) Yang Computer Science Department](https://reader035.vdocuments.site/reader035/viewer/2022062314/56649e905503460f94b956e1/html5/thumbnails/49.jpg)
Exercise
Turn CreateMadlibServlet.java into createmadlib.jsp
49