Download presentation
Presentation is loading. Please wait.
Published byDrusilla Lawson Modified over 9 years ago
1
Introduction to Servlets Allen Day
2
Notes This is a training NOT a presentation Please ask questions https://tech.lds.org/wiki/Java_Stack_Training Prerequisites – Basic Java and HTML skills – Installed LDSTech IDE (or other equivalent)
3
Overview Basic Web App Architecture HTTP CGI Overview Understanding the role of servlets Maven Project Directory Structure Servlet Life Cycle Event Listeners Servlet Filters
4
Basic Web App Architecture Request WWW Browser Web Server Response
5
Basic Web App Architecture Request WWW Browser Web Server Response
6
HTTP Request WWW Browser Web Server Response HTTP
7
HTTP Request Methods GET POST HEAD TRACE PUT DELETE OPTIONS CONNECT
8
GET Method Simple The total amount of characters in a GET is limited. The data you send with the GET is appended to the URL, so whatever you send is exposed.
9
POST Method Used for complex requests, such as form submissions. Parameters are stored in the body.
10
CGI Overview 1. Submit Form WWW Browser Web Server Application Server 2. Call CGI 3. CGI Program’s response 4. CGI Program’s response
11
CGI Process Form use strict; main(); sub main () { my $query; read( STDIN, $query, $ENV{CONTENT_LENGTH} ); my @param = split( /&/, $query ); my %pairs = (); foreach my $item ( @param ) { my ($key, $value) = split( /=/, $item ); $key =~ tr/+/ /; $value =~ tr/+/ /; $key =~ s/%([A-F\d]{2})/chr(hex($1))/ieg; $value =~ s/%([A-F\d]{2})/chr(hex($1))/ieg; $pairs{$key} = $value; } my $name = $pairs{name}; my $email = $pairs{email}; my $machine = $ENV{REMOTE_HOST}; print( STDOUT "Content-Type:text/html\r\n" ); print( STDOUT "Status: 200 Ok\r\n" ); print( STDOUT "\r\n" ); print( STDOUT <<HTML ); Form example output welcome Hi $name of $email from machine $machine HTML }
12
CGI Issues May intentionally or unintentionally leak information about the host system that will help hackers break in. Scripts may be vulnerable to attacks in which the remote user tricks them into executing commands. Susceptible to Buffer overflows. Insufficient input validation. Each call to a CGI script runs as a separate process. Simultaneous CGI requests cause the CGI script to be copied and loaded into memory as many times as there are requests.
13
Servlet Overview Client Servlet ContainerWeb Server Request Response
14
Advantages of Servlets Servlets stay loaded and client requests for a Servlet resource are handled as separate threads of a single running Servlet. A servlet can be run by a servlet engine in a restrictive environment, called a sandbox. This reduces security risks.
15
Maven Project Directory Structure
16
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 org.lds.training MyServlet war 1.0 MyServlet Maven Webapp http://maven.apache.org junit 3.8.1 test
17
web.xml <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 to Java Stack Training Introduction to Servlets HelloWorldServlet org.lds.training.HelloWorldServlet HelloWorldServlet /HelloWorldServlet
18
Lab 1: Simple Servlet https://tech.lds.org/wiki/Introduction_To_Servlets #Lab_1_Simple_Servlet
19
Servlet Life Cycle 1.Load class 2.Instantiate servlet 3.init() 4.service() 5.destroy()
20
Servlet Container Client Servlet ContainerWeb Server
21
Servlet Container 1.Loads the servlet class. 2.Creates an instance of the servlet class. 3.Initializes the servlet instance by calling the init method. 4.Handles client requests. 5.If the container needs to remove the servlet it finalizes the servlet by calling the servlet's destroy method.
22
Servlet Container Communications support Lifecycle Management Multithreading Support Declarative Security JSP Support
23
Servlet Container Web Server request response Servlet
24
Servlet Container requestresponse Servlet thread
25
Servlet Container request response Servlet thread Service()
26
Servlet Container response Servlet thread Service() doGet()
27
Servlet Container Web Server request response X
28
HttpServletRequest MethodDescription getCookies()Obtain array of cookies getMethod()RETURNS the HTTP method (GET or POST) getPathInfo()Returns any extra path information for the request URI getRemoteUser()Gets the name of the user making the request (provided by HTTP authentication) getSession()Returns the current valid session associated with this request or creates a new session
29
HttpServletResponse MethodDescription addCookie()Adds the specified cookie to the response encodeURL()Encodes the URL by including the session id in it if needed sendError()Sends an error response to the user with the specified error code sendRedirect()Sends a redirect request to the user
30
Servlet Class Extends java.servlet.http.HttpServlet init() service() doGet() doPost() destroy()
31
init() public void init() throws ServletException { // custom code goes here } public void init(ServletConfig config) throws ServletException { super.init(ServletConfig) // custom code goes here }
32
service() public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Custom code goes here }
33
doGet() public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Custom Code goes here }
34
doPost() public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Custom Code goes here }
35
destroy() public void destroy() { // custom code goes here }
36
Lab 2: Page Hit Counter https://tech.lds.org/wiki/Introduction_To_Servlets #Lab_2_Page_Hit_Counter
37
Event Listeners
38
javax.servlet.ServletContextListener javax.servlet.ServletContextAttributeListener javax.servlet.http.HttpSessionListener javax.servlet.http.HttpSessionAttributeListener
39
Event Listeners javax.servlet.ServletContextListener javax.servlet.ServletContextAttributeListener javax.servlet.http.HttpSessionListener javax.servlet.http.HttpSessionAttributeListener
40
web.xml org.lds.training.HelloWorldSessionListener org.lds.training.HelloWorldContextListener
41
Servlet Filters
42
Client Servlet ContainerWeb Server Request Response Filter 1 Filter 2
43
web.xml timer filter.TimerFilter timer myservlet /mypath/*
44
Lab 3: Login Filter https://tech.lds.org/wiki/Introduction_To_Servlets #Lab_3_Login_Filter
45
Credit where credit is due http://en.wikipedia.org/wiki/Common_Gateway_Interface http://en.wikipedia.org/wiki/Java_Servlet Head First Servlets & JSP Bryan Basham, Kathy Sierra & Bert Bates More Servlets and JavaServer Pages Marty Hall http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html http://download.oracle.com/javaee/5/api/ http://download.oracle.com/docs/cd/B32110_01/web.1013/b28959/filters.htm Images from the Microsoft Clip Art gallery
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.