SlideShare una empresa de Scribd logo
1 de 3
Descargar para leer sin conexión
En esta práctica vamos a explicar el código        de un Servlet que escribe una
página web con el mensaje “Hola Mundo”.


package pkgServletHM;

import   java.io.IOException;
import   java.io.PrintWriter;
import   javax.servlet.ServletException;
import   javax.servlet.annotation.WebServlet;
import   javax.servlet.http.HttpServlet;
import   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HolaMundo
 */
@WebServlet("/HolaMundo")
public class HolaMundo extends HttpServlet {
      private static final long serialVersionUID = 1L;

      /**
       * @throws IOException
       * @see HttpServlet#doGet(HttpServletRequest request,
HttpServletResponse response)
       */
      protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException,IOException {
             // TODO Auto-generated method stub

              PrintWriter out;
              out = response.getWriter();
              response.setContentType("text/html");
              out.println("<html>");
              out.println("<head><title>Ejemplo de Servlet</title></head>");
              out.println("<body>");
              out.println("<h1>Hola Mundo</h1>");
              out.println("</body></html>");

         }

}
public class HolaMundo extends HttpServlet {


Para escribir un servlet específicamente para el protocolo http, servlet de
tipo HTTP, se usa la clase HttpServlet que extiende a la clase GenericServlet
la cual proporciona una implementación básica del interfaz Servlet Interface
(todo servlet debe directa o indirectamente implementar este interfaz).




Los métodos para la clase HttpServlet son:


Method Summary
protected doDelete(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet to
           handle a DELETE request.
protected doGet(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet   to
           handle a GET request.
protected doHead(HttpServletRequest req, HttpServletResponse resp)
     void      Receives an HTTP HEAD request from the protected service
           method and handles the request.
protected doOptions(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet to
           handle a OPTIONS request.
protected doPost(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet   to
           handle a POST request.
protected doPut(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet   to
           handle a PUT request.
protected doTrace(HttpServletRequest req, HttpServletResponse resp)
     void      Called by the server (via the service method) to allow a servlet to
           handle a TRACE request.
protected getLastModified(HttpServletRequest req)
     long      Returns the time the HttpServletRequest     object was last modified,
           in milliseconds since midnight January 1, 1970 GMT.
protected service(HttpServletRequest req, HttpServletResponse resp)
     void      Receives standard HTTP requests from the public service method
           and dispatches them to the doXXX methods defined in this class.
     void service(ServletRequest req, ServletResponse res)
               Dispatches client requests to the protected service method.
protected   void    doGet(HttpServletRequest    request,   HttpServletResponse
response) throws ServletException,IOException   {


Dependiendo del protocolo utilizado para las peticiones (mediante POST o
GET), el servlet ejecutará el método doPost() o el método doGet(), que se
corresponden con el método service() del Servlet.

En nuestro caso el método doGet() es llamado por el servidor (a través del
médotod service()) para permitir al servlet manejar peticiones de tipo GET.


Los servlets están diseñados para un tipo de interacción petición-respuesta.
Cuando el servidor web recibe una petición para un servlet llama al método
public void service(HttpServletRequest req, HttpServletResponse res) con dos
parámetros: el primero, de la clase HttpServletRequest, representa la
petición del cliente y el segundo, de la clase HttpServletResponse,
representa la respuesta del servlet.


             PrintWriter out;
             out = response.getWriter();
             response.setContentType("text/html");
             out.println("<html>");
             out.println("<head><title>Ejemplo de Servlet</title></head>");
             out.println("<body>");
             out.println("<h1>Hola Mundo</h1>");
             out.println("</body></html>");



Como en el ejemplo no utilizamos ninguna información del cliente, no usamos
el parámetro HttpServletRequest. De la clase HttpServletResponse usamos dos
métodos:

   •   PrinterWriter getWriter(void) con el que obtendremos un PrinterWriter
       en donde iremos escribiendo los datos que queremos que el cliente
       reciba.

             PrintWriter out;
             out = response.getWriter();

   •   setContextType(String str) para establecer el tipo de respuesta que
       vamos a dar. Para indicar que se trata de una página web usamos el
       tipo "text/html".

       response.setContentType("text/html");

Más contenido relacionado

La actualidad más candente

Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSPjubacalo
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desdejbersosa
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptjubacalo
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datosjbersosa
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbcjbersosa
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportjbersosa
 
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11Miguel Angel
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jspdtbadboy0
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLESludiviarosa
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportjbersosa
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datosjubacalo
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - TrovitJordi Gerona
 

La actualidad más candente (20)

Elementos de script en JSP
Elementos de script en JSPElementos de script en JSP
Elementos de script en JSP
 
Conexión a postgres desde
Conexión a postgres desdeConexión a postgres desde
Conexión a postgres desde
 
Práctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScriptPráctica Completa en Flash – ActionScript
Práctica Completa en Flash – ActionScript
 
Conectar java con una base de datos
Conectar java con una base de datosConectar java con una base de datos
Conectar java con una base de datos
 
Uso java jdbc
Uso java jdbcUso java jdbc
Uso java jdbc
 
Continuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper reportContinuación 3 de la creación de reportes con jasper report
Continuación 3 de la creación de reportes con jasper report
 
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
SALUDOS EN INGLES
SALUDOS EN INGLESSALUDOS EN INGLES
SALUDOS EN INGLES
 
Ejemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper reportEjemplo de base de datos y reports con jasper report
Ejemplo de base de datos y reports con jasper report
 
Objetos implícitos en jsp
Objetos implícitos en jspObjetos implícitos en jsp
Objetos implícitos en jsp
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Java web Lección 04 - JSTL
Java web Lección 04 - JSTLJava web Lección 04 - JSTL
Java web Lección 04 - JSTL
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Java::Acceso a Bases de Datos
Java::Acceso a Bases de DatosJava::Acceso a Bases de Datos
Java::Acceso a Bases de Datos
 
Conceptos basicos en CakePHP
Conceptos basicos en CakePHPConceptos basicos en CakePHP
Conceptos basicos en CakePHP
 
Presentación1
Presentación1Presentación1
Presentación1
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - Trovit
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 

Destacado

Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSPjubacalo
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadorajubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Rayajubacalo
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threadsjubacalo
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosjubacalo
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iteratorjubacalo
 
Java HashMap
Java HashMapJava HashMap
Java HashMapjubacalo
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojubacalo
 
Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysqljubacalo
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oraclejubacalo
 
Matrices02
Matrices02Matrices02
Matrices02jubacalo
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datosjubacalo
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámicajubacalo
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jubacalo
 

Destacado (20)

Proyecto JSP
Proyecto JSPProyecto JSP
Proyecto JSP
 
Java AWT Calculadora
Java AWT CalculadoraJava AWT Calculadora
Java AWT Calculadora
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 
Java AWT Tres en Raya
Java AWT Tres en RayaJava AWT Tres en Raya
Java AWT Tres en Raya
 
Sincronizar Threads
Sincronizar ThreadsSincronizar Threads
Sincronizar Threads
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Programa Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viverosPrograma Java que gestiona los productos que comercializan varios viveros
Programa Java que gestiona los productos que comercializan varios viveros
 
Java ArrayList Iterator
Java ArrayList IteratorJava ArrayList Iterator
Java ArrayList Iterator
 
Java HashMap
Java HashMapJava HashMap
Java HashMap
 
jQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogojQuery Mobile :: Cuadros de diálogo
jQuery Mobile :: Cuadros de diálogo
 
Word VBA
Word VBAWord VBA
Word VBA
 
Tienda virtual php_mysql
Tienda virtual php_mysqlTienda virtual php_mysql
Tienda virtual php_mysql
 
Crear Base de Datos en Oracle
Crear Base de Datos en OracleCrear Base de Datos en Oracle
Crear Base de Datos en Oracle
 
Java net yjava_nio(chat)
Java net yjava_nio(chat)Java net yjava_nio(chat)
Java net yjava_nio(chat)
 
Gráficos
GráficosGráficos
Gráficos
 
Matrices02
Matrices02Matrices02
Matrices02
 
Solver
SolverSolver
Solver
 
Tabla de Datos
Tabla de DatosTabla de Datos
Tabla de Datos
 
Tabla Dinámica
Tabla DinámicaTabla Dinámica
Tabla Dinámica
 
jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.jQuery Mobile :: Enlaces a páginas internas.
jQuery Mobile :: Enlaces a páginas internas.
 

Similar a Explicación del código del Servlet HolaMundo

Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er deptLeonardo Moreno
 
Peticiones y respuestas
Peticiones y respuestasPeticiones y respuestas
Peticiones y respuestasEdwin Enriquez
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSPousli07
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servletssrcid
 
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoAJAX a cuerda
Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda Lo básico sobre AJAX y su funcionamientoRoberto Allende
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móvilesChristian Cabrera
 
Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jqueryiva29234
 
Objetos implicitos de jsp
Objetos implicitos de jspObjetos implicitos de jsp
Objetos implicitos de jspPaulis Rincon
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 

Similar a Explicación del código del Servlet HolaMundo (20)

Programación web 1er dept
Programación web 1er deptProgramación web 1er dept
Programación web 1er dept
 
Peticiones y respuestas
Peticiones y respuestasPeticiones y respuestas
Peticiones y respuestas
 
Desarrollo web2
Desarrollo web2Desarrollo web2
Desarrollo web2
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Clase servlet - Análisis de Sistemas
Clase servlet - Análisis de SistemasClase servlet - Análisis de Sistemas
Clase servlet - Análisis de Sistemas
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servlets
 
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoAJAX a cuerda
Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
 
servlets
servlets servlets
servlets
 
Ajax
AjaxAjax
Ajax
 
Como usar ajax con jquery
Como usar ajax con jqueryComo usar ajax con jquery
Como usar ajax con jquery
 
Objetos implicitos de jsp
Objetos implicitos de jspObjetos implicitos de jsp
Objetos implicitos de jsp
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 

Más de jubacalo

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagenjubacalo
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2jubacalo
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Androidjubacalo
 
Escenarios
EscenariosEscenarios
Escenariosjubacalo
 
Textura de agua
Textura de aguaTextura de agua
Textura de aguajubacalo
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionalesjubacalo
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometrojubacalo
 

Más de jubacalo (7)

MIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en ImagenMIT App Inventor2 Pintar en Imagen
MIT App Inventor2 Pintar en Imagen
 
Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2Cronómetro con MIT App Inventor 2
Cronómetro con MIT App Inventor 2
 
Configurar entorno Android
Configurar entorno AndroidConfigurar entorno Android
Configurar entorno Android
 
Escenarios
EscenariosEscenarios
Escenarios
 
Textura de agua
Textura de aguaTextura de agua
Textura de agua
 
Funciones lógicas y condicionales
Funciones lógicas y condicionalesFunciones lógicas y condicionales
Funciones lógicas y condicionales
 
Java Thread Cronometro
Java Thread CronometroJava Thread Cronometro
Java Thread Cronometro
 

Explicación del código del Servlet HolaMundo

  • 1. En esta práctica vamos a explicar el código de un Servlet que escribe una página web con el mensaje “Hola Mundo”. package pkgServletHM; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HolaMundo */ @WebServlet("/HolaMundo") public class HolaMundo extends HttpServlet { private static final long serialVersionUID = 1L; /** * @throws IOException * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { // TODO Auto-generated method stub PrintWriter out; out = response.getWriter(); response.setContentType("text/html"); out.println("<html>"); out.println("<head><title>Ejemplo de Servlet</title></head>"); out.println("<body>"); out.println("<h1>Hola Mundo</h1>"); out.println("</body></html>"); } }
  • 2. public class HolaMundo extends HttpServlet { Para escribir un servlet específicamente para el protocolo http, servlet de tipo HTTP, se usa la clase HttpServlet que extiende a la clase GenericServlet la cual proporciona una implementación básica del interfaz Servlet Interface (todo servlet debe directa o indirectamente implementar este interfaz). Los métodos para la clase HttpServlet son: Method Summary protected doDelete(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a DELETE request. protected doGet(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a GET request. protected doHead(HttpServletRequest req, HttpServletResponse resp) void Receives an HTTP HEAD request from the protected service method and handles the request. protected doOptions(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a OPTIONS request. protected doPost(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a POST request. protected doPut(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a PUT request. protected doTrace(HttpServletRequest req, HttpServletResponse resp) void Called by the server (via the service method) to allow a servlet to handle a TRACE request. protected getLastModified(HttpServletRequest req) long Returns the time the HttpServletRequest object was last modified, in milliseconds since midnight January 1, 1970 GMT. protected service(HttpServletRequest req, HttpServletResponse resp) void Receives standard HTTP requests from the public service method and dispatches them to the doXXX methods defined in this class. void service(ServletRequest req, ServletResponse res) Dispatches client requests to the protected service method.
  • 3. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { Dependiendo del protocolo utilizado para las peticiones (mediante POST o GET), el servlet ejecutará el método doPost() o el método doGet(), que se corresponden con el método service() del Servlet. En nuestro caso el método doGet() es llamado por el servidor (a través del médotod service()) para permitir al servlet manejar peticiones de tipo GET. Los servlets están diseñados para un tipo de interacción petición-respuesta. Cuando el servidor web recibe una petición para un servlet llama al método public void service(HttpServletRequest req, HttpServletResponse res) con dos parámetros: el primero, de la clase HttpServletRequest, representa la petición del cliente y el segundo, de la clase HttpServletResponse, representa la respuesta del servlet. PrintWriter out; out = response.getWriter(); response.setContentType("text/html"); out.println("<html>"); out.println("<head><title>Ejemplo de Servlet</title></head>"); out.println("<body>"); out.println("<h1>Hola Mundo</h1>"); out.println("</body></html>"); Como en el ejemplo no utilizamos ninguna información del cliente, no usamos el parámetro HttpServletRequest. De la clase HttpServletResponse usamos dos métodos: • PrinterWriter getWriter(void) con el que obtendremos un PrinterWriter en donde iremos escribiendo los datos que queremos que el cliente reciba. PrintWriter out; out = response.getWriter(); • setContextType(String str) para establecer el tipo de respuesta que vamos a dar. Para indicar que se trata de una página web usamos el tipo "text/html". response.setContentType("text/html");