100% found this document useful (2 votes)
857 views18 pages

Servlet Tutorial Power Point

This document describes an example servlet application that allows a user to select a beer type from an HTML form. It then uses the Model-View-Controller (MVC) pattern to process the request. The servlet acts as the controller, delegating work to the BeerExpert model class and forwarding the result to the result.jsp view. The BeerExpert class returns beer brand recommendations based on the selected color. The jsp page then displays the results to the user. The application is deployed on Tomcat with the servlet mapped to handle requests to the /SelectBeer.do url pattern.

Uploaded by

api-26793394
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (2 votes)
857 views18 pages

Servlet Tutorial Power Point

This document describes an example servlet application that allows a user to select a beer type from an HTML form. It then uses the Model-View-Controller (MVC) pattern to process the request. The servlet acts as the controller, delegating work to the BeerExpert model class and forwarding the result to the result.jsp view. The BeerExpert class returns beer brand recommendations based on the selected color. The jsp page then displays the results to the user. The application is deployed on Tomcat with the servlet mapped to handle requests to the /SelectBeer.do url pattern.

Uploaded by

api-26793394
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 18

An Example Servlet

Putting it all together

Oct 17, 2008


Credits
 This is the first
example in Head
First Servlets & JSP
by Brian Basham,
Kathy Sierra, and
Bert Bates
 This is an excellent
book, and goes into
considerably more
detail than we will in
this course
It starts with an HTML form...
The HTML page, 1
<html>
<head>
<title>Beer Selection</title>
</head>
<body>
<h1 align="center">Beer Selection Page</h1>

...the form (on the next slide)...

</body>
</html>
The HTML page, 2
<form method="POST" action="SelectBeer.do">
Select beer characteristics:<p>
Color:
<select name="color" size="1">
<option>light</option>
<option>amber</option>
<option>brown</option>
<option>dark</option>
</select>
<br>
<br>
<center>
<input type="SUBMIT">
</center>
</form>
The deployment descriptor
 The request goes to the server, with the action
<form method="POST" action="SelectBeer.do">
 The name "SelectBeer.do" is not the name of an
actual file anywhere; it is a name given to the user
 Partly, this is for security; you don’t want the user to have
access to the actual file without going through your form
 The extension .do is just a convention used by this
particular book; no extension is necessary
 It is up to the deployment descriptor to find the correct
servlet to answer this request
 The deployment descriptor must be named web.xml
web.xml 1 -- boilerplate

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

...important stuff goes here...


</web-app>
web.xml 2 -- actual work

<servlet>
<servlet-name>Ch3 Beer</servlet-name>
<servlet-class>
com.example.web.BeerSelect
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Ch3 Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
BeerSelect.java 1
package com.example.web;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

import com.example.model.BeerExpert; // notice this

public class BeerSelect extends HttpServlet {

... doPost method goes here. ..

}
BeerSelect.java 2

public void doPost(HttpServletRequest request,


HttpServletResponse response)
throws IOException, ServletException {

String c = request.getParameter("color");

BeerExpert be = new BeerExpert();


List result = be.getBrands(c);

request.setAttribute("styles", result);
RequestDispatcher view =
request.getRequestDispatcher("result.jsp");
view.forward(request, response);
}
MVC
 BeerSelect.java acts as the controller
 It delegates the actual work to a model,
BeerExpert.java
 It delegates (forwards) the information to a JSP page
that will provide the view
 RequestDispatcher view =
request.getRequestDispatcher("result.jsp");
view.forward(request, response);
The model class
 BeerExpert is the model class; it computes results and
adds them to the HttpServletRequest object
 Not the HttpServletResponse object; that’s the HTML
output
 It returns, in the usual fashion, to the BeerSelect class,
which will then forward it to the JSP
BeerExpert.java
package com.example.model;
import java.util.*;

public class BeerExpert {

public List getBrands(String color) {


List brands = new ArrayList();
if (color.equals("amber")) {
brands.add("Jack Amber");
brands.add("Red Moose");
} else {
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
return brands;
}
}
The JSP file
 The JSP file must have the extension .jsp
 It is basically HTML, plus a few JSP directives
 It receives the HttpServletRequest and the
HttpServletResponse objects
 The HttpServletResponse object may have been
partially written by the servlet (but it’s a bad idea)
 The resultant HTML page goes back to the user
result.jsp
<%@ page import="java.util.*" %>

<html>
<body>
<h1 align="center">Beer Recommendations JSP</h1>
<p>

<%
List styles = (List)request.getAttribute("styles");
Iterator it = styles.iterator();
while (it.hasNext()) {
out.print("<br>TRY: " + it.next());
}
%>

</body>
</html>
Directory structure
jakarta-tomcat-5.0.12/
| webapps/  this is http://m174pc4.cis.upenn.edu:8080/
| | beerV1/
| | | form.html
| | | result.jsp
| | | WEB-INF/
| | | | web.xml
| | | | classes/
| | | | | com/
| | | | | | example/
| | | | | | | model/
| | | | | | | | BeerExpert.class
| | | | | | | web/
| | | | | | | | BeerSelect.class
| | | | lib/
| | yourLastName  when you ftp, this is where you are
Accessing the class server
 Tomcat should be running 24/7 on m174pc4.cis.upenn.edu
 To try it, point your browser to:
http://m174pc4.cis.upenn.edu:8080/beerV1/form.html

 When you ftp to m174pc4, pwd will tell you that you are in a
directory “/”, but you are really in a directory
C:\Tomcat\webapps\yourLastName
 This is the top-level directory for your web applications
 You should be able to put an HTML file here, say, index.html,
and access it with
http://m174pc4.cis.upenn.edu:8080/yourLastName/index.html
The End

You might also like