Presentation is loading. Please wait.

Presentation is loading. Please wait.

Introduction to Servlets Allen Day. Notes This is a training NOT a presentation Please ask questions https://tech.lds.org/wiki/Java_Stack_Training Prerequisites.

Similar presentations


Presentation on theme: "Introduction to Servlets Allen Day. Notes This is a training NOT a presentation Please ask questions https://tech.lds.org/wiki/Java_Stack_Training Prerequisites."— Presentation transcript:

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


Download ppt "Introduction to Servlets Allen Day. Notes This is a training NOT a presentation Please ask questions https://tech.lds.org/wiki/Java_Stack_Training Prerequisites."

Similar presentations


Ads by Google