Está en la página 1de 9

Servlets y JSP la tecnología se ha convertido en la tecnología de elección para el desarrollo de

las tiendas en línea, aplicaciones interactivas Web y otros sitios web dinámicos. ¿Por qué? este
capítulo se ofrece una descripción de alto nivel de la tecnología y algunas de las razones de su
popularidad. En capítulos posteriores se proporcionan detalles específicos sobre las técnicas
de programación.

1.1 Un Servlet de Trabajo

Los servlets son programas Java que se ejecutan en servidores web o aplicación, actuando
como un medio capa de entre las peticiones procedentes de los navegadores web u otros
clientes HTTP y bases de datos o aplicaciones en el servidor HTTP. Su trabajo consiste en
realizar las siguientes tareas, como se ilustra en la Figura 1-1.

Capítulo 1 ■ Una visión general de Servlets y JSP Tecnología

1. Leer los datos explícitos enviados por el cliente. El usuario final normalmente entra
estos datos en un formulario HTML en una página Web página. Sin embargo, los
datos también podría provenir de un applet o una costumbre Programa cliente
HTTP. El capítulo 4 se explica cómo los servlets leer estos datos.

2. Lea las implícitas de datos de peticiones HTTP enviadas por el navegador.


Figura 1-1 muestra una flecha que va desde el cliente para la Web
servidor (la capa donde los servlets y JSP ejecutar), pero en realidad hay
dos variedades de datos: los datos explícitos que el usuario final entra en una
formulario y la información detrás de las escenas de HTTP. Ambas variedades son
crítico. La información incluye las cookies HTTP, la información sobre
tipos de medios y sistemas de compresión del navegador entiende, y
etc, sino que se discute en el capítulo 5.

3. Generar los resultados.


Este proceso puede requerir hablar con una base de datos, la ejecución de un RMI
o Llamada EJB, invocar un servicio Web, o el cálculo de la respuesta directamente.
Los datos reales pueden estar en una base de datos relacional. Muy bien. Sin
embargo, su base de datos Probablemente no habla HTTP o devuelven los
resultados en HTML, por lo que la Web navegador no puede hablar directamente
con la base de datos. Incluso si pudiera, de la seguridad razones, es probable que
no lo quiere. El mismo argumento se aplica a la mayoría de otras aplicaciones. Es
necesario que la capa media Web extraer los datos de entrada de la secuencia
HTTP, hablar con la aplicación, e incrustar los resultados dentro de un documento.
4. Enviar los datos explícitos (es decir, el documento) para el cliente.
Este documento puede ser enviado en una variedad de formatos, incluyendo el
texto
(HTML o XML), binario (GIF), o incluso un formato comprimido
como gzip que se coloca sobre la parte superior de algún tipo de formato
subyacente. Pero, HTML es con mucho el formato más común, por lo que un
servlet importante / JSP tarea consiste en envolver los resultados dentro de HTML.
5. Enviar los datos de respuesta HTTP implícitas.
Figura 1-1 muestra una flecha que va desde la capa Web medio (el
servlet o página JSP) para el cliente. Pero, en realidad hay dos variedades de
los datos enviados: el propio documento y la información detrás de las escenas de
HTTP.
Una vez más, ambas variedades son cruciales para un desarrollo efectivo.
El envío de datos de respuesta HTTP consiste en decirle al navegador u otras
cliente qué tipo de documento está siendo devuelto (por ejemplo, HTML), el
establecimiento de cookies y almacenamiento en caché, y otros parámetros tales
tareas. Estas tareas son discuten en los capítulos 6 y 7.

1.2 ¿Por qué crear aplicaciones Web Páginas de forma dinámica? Después de
Marty escribió la primera edición de Servlets y JavaServer Pages básicos, varios de
sus programas no-conocedores de parientes y amigos le preguntan qué libro se
trataba. Marty se lanzaba a una larga discusión, técnicos de Java, programación
orientada a objetos, y HTTP, sólo para ver a los ojos de inmediato se ponen
vidriosos. Finalmente, exasperado, se preguntaba: "¡Oh, así que su libro es acerca
de cómo hacer páginas web, ¿verdad?" "Bueno, no," la respuesta sería: "Ellos se
refieren a cómo hacer que los programas que hacer que las páginas Web. " "¿Eh?
¿Por qué esperar hasta que el cliente solicita la página y luego tener un programa
de construcción de el resultado? ¿Por qué no construir la página Web antes de
tiempo? " Sí, muchas peticiones de clientes pueden ser satisfechas por los
documentos creados previamente, y el servidor se ocuparía de estas solicitudes sin
necesidad de invocar los servlets. En muchos casos sin embargo, un resultado
estático no es suficiente, y una página debe ser generada para cada solicitud.
Hay una serie de razones por las páginas Web necesitan ser construido sobre la
marcha:
• La página Web se basa en los datos enviados por el cliente.
Por ejemplo, la página de resultados de los motores de búsqueda y orden de
confirmación páginas en las tiendas en línea son específicos de usuario en
particular peticiones. Usted no sabe lo que desea mostrar hasta que haya leído los
datos que el usuario envía. Sólo recuerde que el usuario envía dos tipos de
datos: explícitos (es decir, datos de formularios HTML) e implícita (es decir,
petición HTTP cabeceras). De cualquier tipo de entrada puede ser utilizado para
construir la página de salida. En particular, es bastante común para construir una
página específica del usuario sobre la base de un galletas de valor.
• La página Web se deriva de los datos que cambian con frecuencia.
Si los cambios de página para cada solicitud, a continuación, que sin duda necesita
para construir la respuesta en tiempo de petición. Si sólo cambia periódicamente,
sin embargo, puedes hacerlo de dos maneras: en forma periódica podría construir
una nueva página web en el servidor (con independencia de las solicitudes de
cliente), o usted podría esperar y sólo construyen la página cuando el usuario lo
solicita. El enfoque correcto depende de la situación, pero a veces es más
conveniente hacer la segunda: esperar a que la solicitud del usuario. Por ejemplo,
un clima de informes o el sitio de noticias titulares podrían construir las páginas de
forma dinámica, tal vez devolviendo una página previamente construida y que la
página sigue siendo hasta la fecha.
• La página Web utiliza la información de bases de datos corporativas o
otros del lado del servidor de fuentes. Si la información está en una base de datos,
es necesario el procesamiento de servidor incluso si el cliente está utilizando el
contenido Web dinámico, como un applet. Imagine utilizar un applet en sí mismo
para un sitio de motor de búsqueda:

"Descarga 50 applet de un terabyte, por favor espere!" Obviamente, eso es una


tontería; que usted necesita para hablar con la base de datos. Yendo desde el
cliente hasta el nivel de Web la base de datos (un enfoque de tres niveles) en lugar
de un applet directamente a una base de datos (un enfoque de dos niveles)
proporciona una mayor flexibilidad y seguridad, con reducción del rendimiento
escaso o nulo. Después de todo, la llamada base de datos es generalmente el paso
limitante, por lo que va a través del El servidor Web no hace las cosas más
despacio. De hecho, un enfoque de tres niveles es a menudo más rápido debido a
que el nivel medio puede llevar a cabo el almacenamiento en caché y la
agrupación de conexiones.
En principio, los servlets no se limitan a los servidores Web o aplicación que se
encargan de Solicitudes HTTP pero puede ser utilizado para otros tipos de
servidores también. Por ejemplo, los servlets podrían ser incorporados en
servidores FTP o correo electrónico para ampliar su funcionalidad. Y, una servlet
API para SIP (Session Initiation Protocol) ha sido recientemente estandarizada
servidores (Véase http://jcp.org/en/jsr/detail?id=116). En la práctica, sin embargo,
este uso de los servlets no se ha propagado, y sólo vamos a estar discutiendo
servlets HTTP.
1.3 Un vistazo rápido a código de servlet Ahora bien, este no es el momento para
ahondar en las profundidades de la sintaxis de servlet. No te preocupes, usted
obtendrá un montón de que a lo largo del libro. Pero vale la pena echar un vistazo
rápido en un servlet simple, sólo para conseguir una sensación para el nivel básico
de la complejidad.
Listado 1.1 muestra un servlet que genera una página HTML pequeña para el
cliente.
La Figura 1-2 muestra el resultado.
El código se explica en detalle en el capítulo 3 (Fundamentos de Servlets), pero por
el momento justo, cuenta cuatro puntos:
• Es normal el código de Java. Hay nuevas API, pero no una nueva sintaxis.
• Cuenta con las declaraciones de importación no están familiarizados. El servlet y
JSP API son no forman parte de la Plataforma Java 2, Standard Edition (J2SE), son
una especificación separada (y también forman parte de la plataforma Java 2,
Enterprise Edition-J2EE).
• Se extiende una clase estándar (HttpServlet). Los servlets proporcionan un rico
la infraestructura para hacer frente a HTTP.
• Se reemplaza el método doGet. Los servlets tienen diferentes métodos para
responder a diferentes tipos de comandos HTTP.

HelloServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>Hello</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>Hello</H1>\n" +
"</BODY></HTML>");
}
}

1.4 Las ventajas de los servlets Más de CGI "Tradicional" Servlets de Java son más
eficientes, más fáciles de usar, más potente, más portable, más seguro, y más
barato que los tradicionales CGI y muchas otras tecnologías como CGI.

Eficiente
Con CGI tradicional, un nuevo proceso que se inicia para cada solicitud HTTP. Si el
CGI programa en sí es relativamente corta, la sobrecarga de iniciar el proceso
puede dominar el tiempo de ejecución. Con los Servlets, la máquina virtual Java se
mantiene en funcionamiento y se encarga de cada solicitud, con un ligero hilo de
Java, no un proceso del sistema operativo de peso pesado.
De manera similar, en CGI tradicional, si hay solicitudes de N en el programa CGI
misma, el código del programa CGI se carga en memoria N veces. Con los servlets,
sin embargo, habría hilos N, pero sólo una única copia de la clase servlet sería
cargado. Este enfoque reduce los requisitos de memoria del servidor y ahorra
tiempo crear instancias de un menor número de objetos. Por último, cuando un
programa CGI termina el manejo de una solicitud, el programa termina. Este
enfoque hace que sea difícil para los cálculos de caché, mantener las conexiones
de base de datos abierta, y realizar otras optimizaciones que se basan en
persistente datos. Servlets, sin embargo, permanecen en la memoria incluso
después de completar un respuesta, por lo que es fácil de almacenar los datos
arbitrariamente complejas entre el cliente peticiones.

Conveniente
Servlets tienen una gran infraestructura para análisis automático y decodificación
Los datos de formularios HTML, leer y seleccionar cabeceras HTTP, manejar
cookies, seguimiento de sesiones, y muchos otros de tan alto nivel de servicios
públicos. En CGI, que tiene que hacer gran parte de este usted mismo. Además, si
usted ya conoce el lenguaje de programación Java, por qué aprender Perl
también? Usted ya está convencido de que la tecnología Java hace más fiable y de
código de un solo uso que hace de Visual Basic, VBScript o C + +. ¿Por qué volver a
los idiomas para la programación del lado del servidor?

Poderoso

Los servlets soportar varias capacidades que son difíciles o imposibles de llevar a
cabo con CGI normal. Los servlets pueden hablar directamente con el servidor
Web, mientras que el CGI normal los programas no pueden, al menos no sin el uso
de una API específica del servidor. La comunicación con el servidor Web hace que
sea más fácil de traducir las direcciones URL relativas al camino de cemento
nombres, por ejemplo. Varios servlets también pueden compartir los datos, por lo
que es fácil de implementar base de datos de la agrupación de conexiones y
similares optimizaciones de recursos compartidos. Servlets También puede
mantener la información de solicitud en solicitud, la simplificación de las técnicas
de como seguimiento de sesión y el caché de cálculos anteriores.

Portátil
Los Servlets están escritos en el lenguaje de programación Java y siguen una API
estándar. Servlets están soportados directamente o mediante un plugin en
prácticamente todos los servidores Web. En consecuencia, servlets escritos, por
ejemplo, Macromedia JRun puede ejecutar sin modificarse en
Apache Tomcat, Microsoft Internet Information Server (con un plugin por
separado), IBM WebSphere, iPlanet Enterprise, Oracle9i AS, o WebStar StarNine.
Ellos son parte de la plataforma Java 2, Enterprise Edition (J2EE, ver
http://java.sun.com/j2ee/), para apoyo de la industria para los servlets es cada vez
más generalizada.
Barato

Un número de servidores Web gratuitos o muy baratos son buenos para el


desarrollo o la utilización el despliegue de sitios Web de bajos o medianos
volúmenes. Así, con servlets y JSP se puede comenzar con un servidor gratuito o
de bajo costo y migrar a servidores más caros con el capacidades de alto
rendimiento o utilidades avanzadas de administración sólo después de su
proyecto cumple con éxito inicial. Esto está en contraste con muchas de las
alternativas CGI otros, que requieren una importante inversión inicial para la
compra de un paquete propietario.
Precio y la portabilidad son algo conectado. Por ejemplo, Martin trata de
mantener realizar un seguimiento de los países de los lectores que envían su
pregunta por correo electrónico. India estaba cerca de la parte superior de la lista,
probablemente detrás de la # 2 Marty de EE.UU. también enseñó uno de sus JSP y
servlets cursos de capacitación (ver http://courses.coreservlets.com/) en Manila, y
había gran interés en la tecnología de servlets y JSP allí. Ahora, ¿por qué la India y
Filipinas, tanto interesa tanto? Suponemos que el respuesta es doble. En primer
lugar, ambos países tienen grandes reservas de bien educada de software
los desarrolladores. En segundo lugar, ambos países tienen (o tenían, en ese
momento) muy desfavorable los tipos de cambio contra el dólar de EE.UU.. Por lo
tanto, la compra de un sitio Web para fines especiales servidor de una empresa de
EE.UU. consume una gran parte de los fondos iniciales del proyecto.
Pero, con los servlets y JSP, que podría comenzar con un servidor gratuito: Apache
Tomcat (Ya sea independiente, integrado en el servidor Web Apache regulares, o
incrustado en Microsoft IIS). Una vez que el proyecto comienza a tener éxito,
podrían pasar a un servidor como resina de Caucho que tuvo un mayor
rendimiento y una administración más fácil, pero que no es libre. Pero ninguno de
sus servlets o páginas JSP tienen que ser reescritos. Si su proyecto se convierte en
aún más grande, es posible que desee mover a una distribuida (cluster)
medio ambiente. No hay problema: podrían pasar a Macromedia JRun Profesional,
que soporta aplicaciones distribuidas (granjas de servidores web). Una vez más,
ninguno de sus servlets o Las páginas JSP tienen que ser reescritos. Si el proyecto
se hace muy grande y complejo, que puede ser que desee utilizar Enterprise Java
Beans (EJB) para encapsular la lógica de negocio.
Por lo tanto, pueden cambiar a BEA WebLogic o Oracle9i AS. Una vez más, ninguno
de los servlets o de las páginas JSP tienen que ser reescritos. Por último, si su
proyecto se hace aún más grande, podría moverse fuera de su caja de Linux y en
un mainframe de IBM que ejecuta IBM en la Web Esfera. Pero una vez más,
ninguno de sus servlets o páginas JSP tienen que ser reescritos.
Asegurar

Una de las principales fuentes de vulnerabilidades en CGI tradicional se deriva del


hecho de que los programas se ejecutan a menudo por los proyectiles de
propósito general del sistema operativo. Así, el Programador de CGI debe tener
cuidado para filtrar los caracteres tales como apóstrofes y punto y coma que se
tratan en especial por el shell. La aplicación de esta medida de precaución es más
difícil de lo que pudiera pensarse, y las debilidades que se derivan de este
problema están en constante siendo descubierto en las bibliotecas CGI utilizados.
Una segunda fuente de problemas es el hecho de que algunos programas CGI son
procesados por lenguajes que no verifican automáticamente los límites de matriz o
de cadena. Por ejemplo, en C y C + + es perfectamente legal para asignar una
matriz de 100 elementos y luego escribir en el 999 a "elemento", que es en
realidad una parte aleatoria de la memoria del programa. Así que, los
programadores que se olvide de realizar esta comprobación abrir su sistema a
deliberar, ni accidentales los ataques de desbordamiento de búfer. Servlets sufren
de ninguno de estos problemas. Incluso si un servlet ejecuta un sistema llamar al
(por ejemplo, con Runtime.exec o JNI) para invocar un programa en el operativo
local sistema, que no utiliza una carcasa para hacerlo. Y, por supuesto, límites de la
matriz de cheques y otras características de protección de memoria son una parte
central de la programación Java idioma.

Corriente principal

Hay un montón de buenas tecnologías que hay. Pero si los vendedores no los
apoyan y los desarrolladores no saben cómo usarlos, ¿para qué sirven? Servlets y
JSP la tecnología es compatible con servidores de Apache, Oracle, IBM, Sybase,
BEA, Macromedia, Caucho, Sun / iPlanet, Nueva Atlanta, ATG, Fujitsu, Lutris,
Silverstream, el Banco Mundial Wide Web Consortium (W3C), y muchos otros.
Varios de bajo costo plugins añadir soporte a Microsoft IIS y Zeus también. Se
ejecutan en Windows, Unix / Linux, MacOS, VMS, y los sistemas operativos de
mainframe de IBM. Son el más popular aplicación del lenguaje de programación
Java. Ellos son sin duda los más populares opción para el desarrollo a medio y
aplicaciones web de gran tamaño. Son utilizados por la compañía aérea la industria
(la mayoría de United Airlines y Delta Airlines sitios Web), el comercio electrónico
(Ofoto.com), banca en línea (EE.UU. En primer lugar el Banco, el Banco Popular de
Puerto Rico), Web motores de búsqueda / Portales (excite.com), los grandes sitios
financieros (American Century Investments), la y cientos de otros sitios que usted
visita todos los días.
Por supuesto, la popularidad sola no es prueba de una buena tecnología.
Numeroso contra-ejemplos abundan. Sin embargo, nuestro punto es que no se
están experimentando con una nuevo y no probado la tecnología cuando se
trabaja con Java del lado del servidor.
1.5 El papel de la JSP Una visión un tanto simplista de los servlets es que son
programas en Java HTML embebido dentro de ellos. Una visión demasiado
simplificada de los documentos JSP es que son páginas HTML con código Java
incrustadas en el interior de ellos. Por ejemplo, comparar el servlet de ejemplo
mostrado anteriormente (listado 1.1) con la JSP la página se muestra a
continuación (Listado 1.2). Se ven totalmente diferentes: el primero se ve sobre
todo como una clase de Java, mientras que el segundo se ve sobre todo como
una página HTML normal. Lo interesante es que, a pesar de la aparente
diferencia enorme, detrás de las escenas son los mismos. De hecho, un
documento JSP es sólo otra manera de escribir un servlet.
Las páginas JSP se traducen en los servlets, los servlets se compila, y son los
servlets que se ejecutan al momento de la solicitud.

Store.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">


<HTML>
<HEAD><TITLE>Welcome to Our Store</TITLE></HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1>Welcome to Our Store</H1>
<SMALL>Welcome,
<!-- User name is "New User" for first-time visitors -->
<%= coreservlets.Utils.getUserNameFromCookie(request) %>
To access your account settings, click
<A HREF="Account-Settings.html">here.</A></SMALL>
<P>
Regular HTML for rest of online store’s Web page
</BODY></HTML>

Por lo tanto, la pregunta es: Si la tecnología JSP y la tecnología de servlets son


esencialmente equivalentes en el poder, qué importa que se utiliza? La
respuesta es: Sí, sí, sí! La cuestión no es poder, pero conveniencia, facilidad de
uso y facilidad de mantenimiento. Por ejemplo, cualquier cosa usted puede
hacer en el lenguaje de programación Java que puede hacer en lenguaje
ensamblador.
¿Significa esto que no importa que usted utiliza? No lo creo. JSP se discute en
detalle de partida en el capítulo 10. Pero, vale la pena mencionar Ahora, ¿cómo
servlets y JSP encajan entre sí. JSP se centra en simplificar la creación y el
mantenimiento del código HTML. Los servlets son en el mejor de la invocación
de la lógica de negocio y realizar operaciones complicadas. Una regla rápida es
que los servlets son las mejores para las tareas orientadas a la transformación,
mientras que JSP es mejor para las tareas orientadas a hacia la presentación.
Para algunas de las solicitudes, los servlets son la elección correcta. Por otra
peticiones, JSP es una mejor opción. Para otros, ni solos ni solas servlets JSP es el
mejor, y una combinación de ambos (véase el Capítulo 15, "Integración de
Servlets y JSP: El Model View Controller (MVC) ") es el mejor. Pero el punto es
que usted necesitan tanto los servlets y JSP en el proyecto general: casi ningún
proyecto consistirá totalmente de servlets o en su totalidad de JSP. Usted
quiere tanto. OK, basta de charla. Continúe en el siguiente capítulo y empezar!

También podría gustarte