Introdução a Servlets

Similar documents
Servlets1. What are Servlets? Where are they? Their job. Servlet container. Only Http?

Servlets Pearson Education, Inc. All rights reserved.

Java Enterprise Edition. Java EE Oct Dec 2016 EFREI/M1 Jacques André Augustin Page 1

Servlet Fudamentals. Celsina Bignoli

To follow the Deitel publishing program, sign-up now for the DEITEL BUZZ ON-

Session 8. Introduction to Servlets. Semester Project

JAVA SERVLET. Server-side Programming INTRODUCTION

Java Servlets. Preparing your System

Advanced Web Technology

Trabalhando com JavaServer Pages (JSP)

Berner Fachhochschule Haute cole spcialise bernoise Berne University of Applied Sciences 2

Servlets and JSP (Java Server Pages)

Servlet Basics. Agenda

The Basic Web Server CGI. CGI: Illustration. Web based Applications, Tomcat and Servlets - Lab 3 - CMPUT 391 Database Management Systems 4

Enterprise Java Unit 1- Chapter 4 Prof. Sujata Rizal Servlet API and Lifecycle

Database Applications Recitation 6. Project 3: CMUQFlix CMUQ s Movies Recommendation System

UNIT-V. Web Servers: Tomcat Server Installation:

HttpServlet ( Class ) -- we will extend this class to handle GET / PUT HTTP requests

Introduction to Java Servlets. SWE 432 Design and Implementation of Software for the Web

Using Java servlets to generate dynamic WAP content

Trabalhando com JavaServer Pages (JSP)

Session 9. Introduction to Servlets. Lecture Objectives

Web based Applications, Tomcat and Servlets - Lab 3 -

SERVLETS INTERVIEW QUESTIONS

Chettinad College of Engineering and Technology CHETTINAD COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND TECHNOLOGY

Module 4: SERVLET and JSP

Servlets Basic Operations

4.1 The Life Cycle of a Servlet 4.2 The Java Servlet Development Kit 4.3 The Simple Servlet: Creating and compile servlet source code, start a web

Advanced Internet Technology Lab # 4 Servlets

Enterprise Java Technologies (Part 1 of 3) Component Architecture. Overview of Java EE. Java Servlets

Servlets. An extension of a web server runs inside a servlet container

This tutorial will teach you how to use Java Servlets to develop your web based applications in simple and easy steps.

&' () - #-& -#-!& 2 - % (3" 3 !!! + #%!%,)& ! "# * +,

Unit 4 - Servlet. Servlet. Advantage of Servlet

The Structure and Components of

SSC - Web applications and development Introduction and Java Servlet (I)

Unit 5 JSP (Java Server Pages)

Topics. Advanced Java Programming. Quick HTTP refresher. Quick HTTP refresher. Web server can return:

COMP9321 Web Application Engineering

First Servlets. Chapter. Topics in This Chapter

LAB 1 PREPARED BY : DR. AJUNE WANIS ISMAIL FACULTY OF COMPUTING UNIVERSITI TEKNOLOGI MALAYSIA

HTTP and the Dynamic Web

CIS 455 / 555: Internet and Web Systems

INTRODUCTION TO SERVLETS AND WEB CONTAINERS. Actions in Accord with All the Laws of Nature

Chapter 29 Servlets: Bonus for Java Developers 1041

ServletConfig Interface

Chapter 10 Servlets and Java Server Pages

How does the Web work? HTTP and the Dynamic Web. Naming and URLs. In Action. HTTP in a Nutshell. Protocols. The canonical example in your Web browser

Servlet and JSP Review

COMP9321 Web Application Engineering

Introduction. This course Software Architecture with Java will discuss the following topics:

Introduction to Servlets. After which you will doget it

Introduction. Literature: Steelman & Murach, Murach s Java Servlets and JSP. Mike Murach & Associates Inc, 2003

Session 8. Reading and Reference. en.wikipedia.org/wiki/list_of_http_headers. en.wikipedia.org/wiki/http_status_codes

Java servlets CSCI 470: Web Science Keith Vertanen Copyright 2013

Session 9. Deployment Descriptor Http. Reading and Reference. en.wikipedia.org/wiki/http. en.wikipedia.org/wiki/list_of_http_headers

LearningPatterns, Inc. Courseware Student Guide

PSD1B Advance Java Programming Unit : I-V. PSD1B- Advance Java Programming

9.3.5 Accessing the Vote Service

2. Follow the installation directions and install the server on ccc. 3. We will call the root of your installation as $TOMCAT_DIR

********************************************************************

Tutorial: Developing a Simple Hello World Portlet

CHAPTER 2: A FAST INTRODUCTION TO BASIC SERVLET PROGRAMMING

Advance Java. Configuring and Getting Servlet Init Parameters per servlet

AJP. CHAPTER 5: SERVLET -20 marks

CS506 Web Design & Development Final Term Solved MCQs with Reference

AN OVERVIEW OF SERVLET AND JSP TECHNOLOGY

Unit-4: Servlet Sessions:

One application has servlet context(s).

a. Jdbc:ids://localhost:12/conn?dsn=dbsysdsn 21. What is the Type IV Driver URL? a. 22.

JavaServer Pages (JSP)

The Servlet Life Cycle

Questions and Answers

Chapter 17. Web-Application Development

Servlet And JSP. Mr. Nilesh Vishwasrao Patil, Government Polytechnic, Ahmednagar. Mr. Nilesh Vishwasrao Patil

Lab session Google Application Engine - GAE. Navid Nikaein

Servlets by Example. Joe Howse 7 June 2011

Supplement IV.E: Tutorial for Tomcat For Introduction to Java Programming By Y. Daniel Liang

SERVLET AND JSP FILTERS

Table of Contents Fast Track to JSF 2

Java Servlets Basic Concepts and Programming

Fast Track to Java EE 5 with Servlets, JSP & JDBC

JAVA. Web applications Servlets, JSP

11.1 Introduction to Servlets

Structure of a webapplication

Customizing ArcIMS Using the Java Connector and Python

J2EE Development. Course Detail: Audience. Duration. Course Abstract. Course Objectives. Course Topics. Class Format.

JAVA SERVLETS INTRODUCTION SERVLETS SHRI GURU RAM RAI INSTITUTE OF TECHNOLOGY & SCIENCE, DEHRADUN

sessionx Desarrollo de Aplicaciones en Red A few more words about CGI CGI Servlet & JSP José Rafael Rojano Cáceres

Database Systems Lab. 11. JSP I 충남대학교컴퓨터공학과 데이타베이스시스템연구실

JSP. Common patterns

Writing Servlets and JSPs p. 1 Writing a Servlet p. 1 Writing a JSP p. 7 Compiling a Servlet p. 10 Packaging Servlets and JSPs p.

Introduction to JSP and Servlets Training 5-days

Lecture Notes On J2EE

Stateless -Session Bean

A Servlet-Based Search Engine. Introduction

servlets and Java JSP murach s (Chapter 2) TRAINING & REFERENCE Mike Murach & Associates Andrea Steelman Joel Murach

Session 8. JavaBeans. Reading & Reference. Reading. Reference. Session 8 Java Beans. 2/27/2013 Robert Kelly, Head First Chapter 3 (MVC)

Advanced Topics in Operating Systems. Manual for Lab Practices. Enterprise JavaBeans

Introduction. This course Software Architecture with Java will discuss the following topics:

Transcription:

Introdução a Servlets Sumário 7.1.1.Introdução 7.1.2.Servlet Overview and Architecture 7.1.2.1 Interface Servlet and the Servlet Life Cycle 7.1.2.2 HttpServlet Class 7.1.2.3 HttpServletRequest Interface 7.1.2.4 HttpServletResponse Interface Handling HTTP get Requests 7.1.3.1 Setting Up the Apache Tomcat Server 7.1.3.2 Deploying a Web Application 7.1.4 Handling HTTP get Requests Containing Data 7.1.5 Handling HTTP post Requests 7.1.7 Referências sobre Servlets 7.1.8 JavaServer Pages Overview 7.1.9 First JavaServer Page Example Paulo André Castro ITA Stefanini 1

Preparando o Ambiente Eclipse http://www.eclipse.org Tomcat Servlet and JSP Container http://tomcat.apache.org/ Sysdeo Tomcat-Eclipse Plugin http://www.sysdeo.com/eclipse/tomcatplugin Descompacte o plugin dentro do diretório eclipse/plugins Inicie o Eclipse com a opção clean, para forçar a identificação de novos plugins \eclipse -clean Paulo André Castro ITA Stefanini 2

Instalação do Plugin Ativição do Plugin no Eclipse 3.0( ou superior) : selecione menu 'Window->Customize Perspective...->Commands', e clique na caixa 'Tomcat' na Tab 'Available command groups' Configure o caminho do Tomcat: Window -> Preferences, O plugin inicia o Tomcat usando a JRE default definida na janela de Preferências do Eclipe. Para definir uma JDK como JRE default para o Eclipse, abra a janela de preferências: Window -> Preferences -> Java -> Installed JREs. A JRE deve ser uma JDK (Isto é prerequisito do Tomcat). O plugin configura o classpath e bootclasspath do Tomcat, caso precise de configuração específica. Você pode altera-la em: Preferences -> Tomcat ->JVM Settings Paulo André Castro ITA Stefanini 3

Criação de Projeto TomCat Acesse o Menu File New Project Opção: Java Tomcat Project Paulo André Castro ITA Stefanini 4

7.1.3.1 Setting Up the Apache Tomcat Server (Cont.). Fig. 7.1.7 Tomcat documentation home page. (Courtesy of The Apache Software Foundation.) Paulo André Castro ITA Stefanini 5

Usuários Tomcat Usuários Tomcat são definidos em [TOMCAT_HOME]\conf\tomcat-users.xml Adicione a linha abaixo para criar um administrador com senha admin: <user username="admin" password= admin roles="standard,manager"/> Paulo André Castro ITA Stefanini 6

7.1.3.2 Deploying a Web Application Web applications JSPs, servlets and their supporting files Deploying a Web application Directory structure Context root Web application archive file (WAR file) Deployment descriptor web.xml Paulo André Castro ITA Stefanini 7

7.1.1 Introduction Java networking capabilities Socket-based and packet-based communications Package java.net Remote Method Invocation (RMI) Package java.rmi Servlets and Java Server Pages (JSP) Request-response model Packages javax.servlet javax.servlet.http javax.servlet.jsp javax.servlet.tagext Form the Web tier of J2EE Paulo André Castro ITA Stefanini 8

Servlets Thin clients 7.1.1 Introduction (Cont.) Request/response mechanism redirection Tomcat Jakarta project Official reference implementation of the JSP and servlet standards Paulo André Castro ITA Stefanini 9

7.1.2 Servlet Overview and Architecture Servlet container (servlet engine) Server that executes a servlet Web servers and application servers Sun ONE Application Server Microsoft s Internet Information Server (IIS) Apache HTTP Server BEA s WebLogic Application Server IBM s WebSphere Application Server World Wide Web Consortium s Jigsaw Web Server Paulo André Castro ITA Stefanini 10

7.1.2.1 Interface Servlet and the Servlet Life Cycle Interface Servlet All servlets must implement this interface All methods of interface Servlet are invoked by servlet container Servlet life cycle Servlet container invokes the servlet s init method Servlet s service method handles requests Servlet s destroy method releases servlet resources when the servlet container terminates the servlet Servlet implementation GenericServlet HttpServlet Paulo André Castro ITA Stefanini 11

7.1.2.1 Interface Servlet and the Servlet Life Cycle (Cont.) Method void init(servletconfig config ) ServletConfig getservletconfig() void service( ServletRequest request,servletresponse response ) Description The servlet container calls this method once during a servlet s execution cycle to initialize the servlet. The ServletConfig argument is supplied by the servlet container that executes the servlet. This method returns a reference to an object that implements interface ServletConfig. This object provides access to the servlet s configuration information such as servlet initialization parameters and the servlet s ServletContext, which provides the servlet with access to its environment (i.e., the servlet container in which the servlet executes). String getservletinfo() This method is defined by a servlet programmer to return a string containing servlet information such as the servlet s author and version. The servlet container calls this method to respond to a client request to the servlet. void destroy() Fig. 24.1 This cleanup method is called when a servlet is terminated by its servlet container. Resources used by the servlet, such as an open file or an open database connection, should be deallocated here. Methods of interface Servlet (package javax.servlet). Paulo André Castro ITA Stefanini 12

7.1.2.2 HttpServlet Class Overrides method service Two most common HTTP request types get requests post requests Method doget responds to get requests Method dopost responds to post requests HttpServletRequest and HttpServletResponse objects Paulo André Castro ITA Stefanini 13

7.1.2.2 HttpServlet Class (Cont.) Method Description dodelete Called in response to an HTTP delete request. Such a request is normally used to delete a file from a server. This may not be available on some servers, because of its inherent security risks (e.g., the client could delete a file that is critical to the execution of the server or an application). dohead Called in response to an HTTP head request. Such a request is normally used when the client only wants the headers of a response, such as the content type and content length of the response. dooptions Called in response to an HTTP options request. This returns information to the client indicating the HTTP options supported by the server, such as the version of HTTP (1.0 or 1.1) and the request methods the server supports. doput Called in response to an HTTP put request. Such a request is normally used to store a file on the server. This may not be available on some servers, because of its inherent security risks (e.g., the client could place an executable application on the server, which, if executed, could damage the server perhaps by deleting critical files or occupying resources). dotrace Called in response to an HTTP trace request. Such a request is normally used for debugging. The implementation of this method automatically returns an HTML document to the client containing the request header information (data sent by the browser as part of the request). Fig. 7.1.2 Other methods of class HttpServlet. Paulo André Castro ITA Stefanini 14

7.1.2.3 HttpServletRequest Interface Web server creates an HttpServletRequest object passes it to the servlet s service method HttpServletRequest object contains the request from the client Paulo André Castro ITA Stefanini 15

7.1.2.3 HttpServletRequest Interface (Cont.) Method String getparameter( String name ) Enumeration getparameternames() String[] getparametervalues( String name ) Cookie[] getcookies() HttpSession getsession( boolean create ) Fig. 24.3 Description Obtains the value of a parameter sent to the servlet as part of a get or post request. The name argument represents the parameter name. Returns the names of all the parameters sent to the servlet as part of a post request. For a parameter with multiple values, this method returns an array of strings containing the values for a specified servlet parameter. Returns an array of Cookie objects stored on the client by the server. Cookie objects can be used to uniquely identify clients to the servlet. Returns an HttpSession object associated with the client s current browsing session. This method can create an HttpSession object (true argument) if one does not already exist for the client. HttpSession objects are used in similar ways to Cookies for uniquely identifying clients. Some methods of interface HttpServletRequest. Paulo André Castro ITA Stefanini 16

7.1.2.4 HttpServletResponse Interface Web server creates an HttpServletResponse object passes it to the servlet s service method Paulo André Castro ITA Stefanini 17

7.1.2.4 HttpServletResponse Interface (Cont.) Method Description void Used to add a Cookie to the header of the response to the client. The addcookie(cookie Cookie s maximum age and whether Cookies are enabled on the client cookie ) determine if Cookies are stored on the client. ServletOutputStream Obtains a byte-based output stream for sending binary data to the client. getoutputstream() PrintWriter Obtains a character-based output stream for sending text data to the client. getwriter() void Specifies the MIME type of the response to the browser. The MIME type setcontenttype( helps the browser determine how to display the data (or possibly what String type ) other application to execute to process the data). For example, MIME type "text/html" indicates that the response is an HTML document, so the browser displays the HTML page. Fig. 24.4 Some methods of interface HttpServletResponse. Paulo André Castro ITA Stefanini 18

7.1.3 Handling HTTP get Requests get request Retrieve the content of a URL Example: WelcomeServlet a servlet handles HTTP get requests Paulo André Castro ITA Stefanini 19

Paulo André Castro ITA Stefanini 20

1 // Fig. 7.1.5: WelcomeServlet.java 2 // A simple servlet to process get requests. 3 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 import java.io.*; 7 8 public class WelcomeServlet extends HttpServlet { 9 10 // process "get" requests from clients 11 protected void doget( HttpServletRequest request, 12 HttpServletResponse response ) 13 throws ServletException, IOException 14 { 15 response.setcontenttype( "text/html" ); 16 PrintWriter out = response.getwriter(); Import the javax.servlet and javax.servlet.http packages. 17 18 // send XHTML page to client 19 20 // start XHTML document 21 out.println( "<?xml version = \"1.0\"?>" ); 22 23 out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + 24 "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + 25 "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); 26 Extends HttpServlet to handle HTTP get requests and HTTP post requests. Override method doget to provide custom get request processing. Uses the response object s Uses setcontenttype the response method object s to getwriter specify the content method type to of obtain the data a to reference be sent as to the the response PrintWriter to the client. object that enables the servlet to send content to the client. Create the XHTML document by writing strings with the out object s println method. Paulo André Castro ITA Stefanini 21

27 out.println( "<html xmlns = \"http://www.w3.org/1999/xhtml\">" ); 28 29 // head section of document 30 out.println( "<head>" ); 31 out.println( "<title>a Simple Servlet Example</title>" ); 32 out.println( "</head>" ); 33 34 // body section of document 35 out.println( "<body>" ); 36 out.println( "<h1>welcome to Servlets!</h1>" ); 37 out.println( "</body>" ); 38 39 // end XHTML document 40 out.println( "</html>" ); 41 out.close(); // close stream to complete the page 42 } Closes the output stream, flushes the output buffer 43 } and sends the information to the client. Paulo André Castro ITA Stefanini 22

1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 7.1.6: WelcomeServlet.html --> 6 7 <html xmlns = "http://www.w3.org/1999/xhtml"> 8 <head> 9 <title>handling an HTTP Get Request</title> 10 </head> 11 12 <body> 13 <form action = "/jhtp5/welcome1" method = "get"> 14 15 <p><label>click the button to invoke the servlet 16 <input type = "submit" value = "Get HTML Document" /> 17 </label></p> 18 19 </form> 20 </body> 21 </html> Paulo André Castro ITA Stefanini 23

7.1.3.1 Setting Up the Apache Tomcat Server Download Tomcat Define environment variables JAVA_HOME CATALINA_HOME Start the Tomcat server startup.bat Connect to the Tomcat server using a Web browser http://localhost:8080/ Paulo André Castro ITA Stefanini 24

7.1.3.2 Deploying a Web Application (Cont.) Directory Description context root This is the root directory for the Web application. All the JSPs, HTML documents, servlets and supporting files such as images and class files reside in this directory or its subdirectories. The name of this directory is specified by the Web application creator. To provide structure in a Web application, subdirectories can be placed in the context root. For example, if your application uses many images, you might place an images subdirectory in this directory. The examples of this chapter use jhtp5 as the context root. WEB-INF This directory contains the Web application deployment descriptor (web.xml). WEB-INF/classes This directory contains the servlet class files and other supporting class files used in a Web application. If the classes are part of a package, the complete package directory structure would begin here. WEB-INF/lib This directory contains Java archive (JAR) files. The JAR files can contain servlet class files and other supporting class files used in a Web application. Fig. 24.8 Web application standard directories. Paulo André Castro ITA Stefanini 25

1 <!DOCTYPE web-app PUBLIC \ 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 3 "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> 4 5 <web-app> 6 7 <!-- General description of your Web application --> 8 <display-name> 9 Java How to Program JSP 10 and Servlet Chapter Examples 11 </display-name> 12 13 <description> Element web-app defines the configuration of each servlet in the Web application and the servlet mapping for each servlet. 14 This is the Web application in which we 15 demonstrate our JSP and Servlet examples. 16 </description> 17 18 <!-- Servlet definitions --> 19 <servlet> 20 <servlet-name>welcome1</servlet-name> 21 22 <description> Element display-name specifies a name that can be displayed to the administrator of the server on which the Web application is installed. Element description specifies a description of the Web application that might be displayed to the administrator of the server. 23 A simple servlet that handles an HTTP get request. 24 </description> 25 Element description specifies a description for this particular servlet. Element Element servlet servlet-name describes a servlet. is the name for the servlet. Paulo André Castro ITA Stefanini 26

26 <servlet-class> 27 WelcomeServlet 28 </servlet-class> 29 </servlet> 30 31 <!-- Servlet mappings --> 32 <servlet-mapping> 33 <servlet-name>welcome1</servlet-name> 34 <url-pattern>/welcome1</url-pattern> 35 </servlet-mapping> 36 37 </web-app> Element servlet-class specifies compiled servlet s fully qualified class name. Element servlet-mapping specifies servlet-name and url-pattern elements. Paulo André Castro ITA Stefanini 27

7.1.3.2 Deploying a Web Application (Cont.) Invoke WelcomeServlet example /aula7/welcome1 /aula7 specifies the context root /welcome1 specifies the URL pattern URL pattern formats Exact match /aula7/welcome1 Path mappings /aula7/example/* Extension mappings *.jsp Default servlet / Paulo André Castro ITA Stefanini 28

7.1.3.2 Deploying a Web Application (Cont.) WelcomeServlet Web application directory and file structure jhtp5 servlets WelcomeServlet.html WEB-INF web.xml classes WelcomeServlet.class Fig. 24.10 Web application directory and file structure for WelcomeServlet. Paulo André Castro ITA Stefanini 29

7.1.4 Handling HTTP get Requests Containing Data Servlet WelcomeServlet2 Responds to a get request that contains data Paulo André Castro ITA Stefanini 30

Paulo André Castro ITA Stefanini 31

1 // Fig. 7.1.11: WelcomeServlet2.java 2 // Processing HTTP get requests containing data. 3 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 import java.io.*; 7 8 public class WelcomeServlet2 extends HttpServlet { 9 10 // process "get" request from client 11 protected void doget( HttpServletRequest request, 12 HttpServletResponse response ) 13 throws ServletException, IOException 14 { 15 String firstname = request.getparameter( "firstname" ); 16 The request object s 17 response.setcontenttype( "text/html" ); getparameter 18 PrintWriter out = response.getwriter(); method receives the 19 parameter name and 20 // send XHTML document to client 21 returns the 22 // start XHTML document corresponding String 23 out.println( "<?xml version = \"1.0\"?>" ); value. 24 Paulo André Castro ITA Stefanini 32

25 out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + 26 "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + 27 "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); 28 29 out.println( "<html xmlns = \"http://www.w3.org/1999/xhtml\">" ); 30 31 // head section of document 32 out.println( "<head>" ); 33 out.println( 34 "<title>processing get requests with data</title>" ); 35 out.println( "</head>" ); 36 37 // body section of document 38 out.println( "<body>" ); 39 out.println( "<h1>hello " + firstname + ",<br />" ); 40 out.println( "Welcome to Servlets!</h1>" ); 41 out.println( "</body>" ); 42 43 // end XHTML document 44 out.println( "</html>" ); 45 out.close(); // close stream to complete the page 46 } 47 } Uses the result of line 16 as part of the response to the client. Paulo André Castro ITA Stefanini 33

1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 7.1.12: WelcomeServlet2.html --> 6 7 <html xmlns = "http://www.w3.org/1999/xhtml"> 8 <head> 9 <title>processing get requests with data</title> 10 </head> 11 12 <body> 13 <form action = "/aula7/welcome2" method = "get"> 14 15 <p><label> 16 Type your first name and press the Submit button 17 <br /><input type = "text" name = "firstname" /> 18 <input type = "submit" value = "Submit" /> 19 </p></label> 20 21 </form> 22 </body> 23 </html> Get the first name from the user. Paulo André Castro ITA Stefanini 34

7.1.4 Handling HTTP get Requests Containing Data (Cont.) Descriptor element Value servlet element servlet-name welcome2 description Handling HTTP get requests with data. servlet-class WelcomeServlet2 servletmapping element servlet-name welcome2 url-pattern /welcome2 Fig. 24.13 Deployment descriptor information for servlet WelcomeServlet2. Paulo André Castro ITA Stefanini 35

7.1.5 Handling HTTP post Requests HTTP post request Post data from an HTML form to a server-side form handler Browsers cache Web pages Servlet WelcomeServlet3 Responds to a post request that contains data Paulo André Castro ITA Stefanini 36

Paulo André Castro ITA Stefanini 37

1 // Fig. 7.1.14: WelcomeServlet3.java 2 // Processing post requests containing data. 3 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 import java.io.*; 7 8 public class WelcomeServlet3 extends HttpServlet { 9 10 // process "post" request from client 11 protected void dopost( HttpServletRequest request, 12 HttpServletResponse response ) 13 throws ServletException, IOException 14 { 15 String firstname = request.getparameter( "firstname" ); 16 17 response.setcontenttype( "text/html" ); 18 PrintWriter out = response.getwriter(); 19 20 // send XHTML page to client 21 22 // start XHTML document 23 out.println( "<?xml version = \"1.0\"?>" ); 24 Declare a dopost method to responds to post requests. Paulo André Castro ITA Stefanini 38

25 out.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD " + 26 "XHTML 1.0 Strict//EN\" \"http://www.w3.org" + 27 "/TR/xhtml1/DTD/xhtml1-strict.dtd\">" ); 28 29 out.println( "<html xmlns = \"http://www.w3.org/1999/xhtml\">" ); 30 31 // head section of document 32 out.println( "<head>" ); 33 out.println( 34 "<title>processing post requests with data</title>" ); 35 out.println( "</head>" ); 36 37 // body section of document 38 out.println( "<body>" ); 39 out.println( "<h1>hello " + firstname + ",<br />" ); 40 out.println( "Welcome to Servlets!</h1>" ); 41 out.println( "</body>" ); 42 43 // end XHTML document 44 out.println( "</html>" ); 45 out.close(); // close stream to complete the page 46 } 47 } Paulo André Castro ITA Stefanini 39

1 <?xml version = "1.0"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 3 "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> 4 5 <!-- Fig. 7.1.15: WelcomeServlet3.html --> 6 7 <html xmlns = "http://www.w3.org/1999/xhtml"> 8 <head> 9 <title>handling an HTTP Post Request with Data</title> 10 </head> 11 12 <body> 13 <form action = "/aula7/welcome3" method = "post"> 14 15 <p><label> 16 Type your first name and press the Submit button 17 <br /><input type = "text" name = "firstname" /> 18 <input type = "submit" value = "Submit" /> 19 </label></p> 20 21 </form> 22 </body> 23 </html> Provide a form in which the user can input a name in the text input element firstname, then click the Submit button to invoke WelcomeServlet3. Paulo André Castro ITA Stefanini 40

Exercícios Como garantir a equivalência entre Requisições GET e POST em um Servlet? Crie um novo servlet que implemente um jogo de par ou ímpar com o usuário. Passos Crie uma página html usando radio buttons e botões para selecionar números de 1 a 5 <input type="radio" name="parimpar" value="par"> Par <input type="radio" name="parimpar" value="impar" checked>impar Crie uma classe Servlet que escolha um número aleatório de 1 a 5 Random random=new Random(); int minhajogada=random.nextint(5); E implemente a lógica do jogo Crie o mapeamento do servlet em web.xml Faça o deploy e reinicie o Tomcat Paulo André Castro ITA Stefanini 41

Exercício Paulo André Castro ITA Stefanini 42