Servlet Tutorial Power Point

18
Aug 26, 2 022 An Example Servlet Putting it all together

Transcript of Servlet Tutorial Power Point

Page 1: Servlet Tutorial Power Point

Apr 11, 2023

An Example Servlet

Putting it all together

Page 2: Servlet Tutorial Power Point

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

Page 3: Servlet Tutorial Power Point

It starts with an HTML form...

Page 4: Servlet Tutorial Power Point

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>

Page 5: Servlet Tutorial Power Point

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>

Page 6: Servlet Tutorial Power Point

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

Page 7: Servlet Tutorial Power Point

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>

Page 8: Servlet Tutorial Power Point

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>

Page 9: Servlet Tutorial Power Point

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. ..

}

Page 10: Servlet Tutorial Power Point

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); }

Page 11: Servlet Tutorial Power Point

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);

Page 12: Servlet Tutorial Power Point

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

Page 13: Servlet Tutorial Power Point

BeerExpert.javapackage 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; }}

Page 14: Servlet Tutorial Power Point

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

Page 15: Servlet Tutorial Power Point

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>

Page 16: Servlet Tutorial Power Point

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

Page 17: Servlet Tutorial Power Point

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 directoryC:\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 withhttp://m174pc4.cis.upenn.edu:8080/yourLastName/index.html

Page 18: Servlet Tutorial Power Point

The End