Tutorial Java WEB
Tutorial Java WEB
Para cada uno de los métodos HTTP (como GET, POST, HEAD, y así sucesivamente) describir
el propósito del método y las características técnicas del protocolo HTTP método, la lista de
factores desencadenantes que pueden causar un cliente (normalmente un navegador Web)
para utilizar el método e identificar el método HttpServlet que se corresponde con el método
HTTP.
La subclase abstracta HttpServlet añade métodos adicionales más allá de la interfaz básica de
Servlets que se llama automáticamente por el método de servicio en la clase HttpServlet para
ayudar en la tramitación de solicitudes basadas en HTTP.Estos métodos son (HTTP 1.1):
Llamado por el servidor (a través del método de servicio) para permitir un servlet para manejar
una petición GET.
Reemplazar este método para apoyar una solicitud GET también admite automáticamente una
petición HTTP HEAD. Una petición HEAD es una solicitud GET que devuelve ningún cuerpo en
la respuesta, sólo los campos de encabezado de la solicitud. Al reemplazar este método, lea la
solicitud de datos, escriba los encabezados de respuesta, recibe la respuesta del escritor o un
objeto stream de salida, y, por último, escriba los datos de respuesta. Lo mejor es incluir el tipo
de contenido y codificación. Cuando se utiliza un objeto PrintWriter para devolver la respuesta,
establecer el tipo de contenido antes de acceder al objeto PrintWriter.
import java.io. *;
importación javax.servlet .*;
importación javax.servlet.http .*;
El método GET debe ser seguro, es decir, sin efectos secundarios para que los usuarios son
responsables. Por ejemplo, la mayoría de las consultas de forma no tienen efectos
secundarios. Si una solicitud de cliente es la intención de cambiar los datos almacenados, la
solicitud debe utilizar otro método HTTP (por ejemplo, el método POST).
El método GET también debe ser idempotente, lo que significa que puede repetirse de forma
segura. A veces toma un seguro método también hace que sea idempotente. Por ejemplo, la
repetición de las consultas es seguro y idempotente, pero la compra de un producto en línea o
la modificación de los datos no es ni seguro ni idempotente.
El EEG se entenderá el método recuperar toda la información (en forma de una entidad) es
identificado por el Request-URI. Si Request-URI se refiere a un proceso de producción de
datos, es la información producida que se volvió como la entidad en la respuesta y no el texto
original del proceso, a menos que el texto pasa a ser el resultado del proceso.
En resumen, este método se debe utilizar para conseguir (recuperar) los datos solamente. No
se debe utilizar para almacenar datos en el PP.
longitud de consulta es limitado (que depende de Plaform contenedor de servlets, pero por lo
general no debe superar los 1024 bytes). Los usuarios pueden ver los datos en la barra de
direcciones del navegador.
http://some-server.com/some-script?name1=value1&name2=value2&name3=value3
Sólo ASCII (texto) los datos pueden ser enviados al servidor con el método GET.
Fácil de marcador.
GET método activa.
Recuperar un recurso que se definió en src (imagen) o href (hoja de estilos en cascada) los
atributos.
<img src="image.gif">
El usuario (o JavaScript) envía un formulario que especifica NO atributo method (método GET
formas de aplicación por defecto):
<form action="/servlet/display">
Nombre: <input type="text" name="firstName"> <p>
Apellido: <input type="text" name="lastName"> <p>
<input type="submit" value="Display">
</ Form>
Llamado por el servidor (a través del método de servicio) para permitir un servlet para manejar
una petición POST. El método HTTP POST permite al cliente enviar datos de longitud ilimitada
en el servidor Web de una sola vez y es útil al publicar la información tal como números de
tarjetas de crédito.
Al reemplazar este método, lea la solicitud de datos, escriba los encabezados de respuesta,
recibe la respuesta del escritor o un objeto stream de salida, y, por último, escriba los datos de
respuesta. Lo mejor es incluir el tipo de contenido y codificación. Cuando se utiliza un objeto
PrintWriter para devolver la respuesta, establecer el tipo de contenido antes de acceder al
objeto PrintWriter.
import java.io. *;
importación javax.servlet .*;
importación javax.servlet.http .*;
Este método no tiene que ser segura o idempotente. Operaciones solicitadas por POST puede
tener efectos adversos para los que el usuario puede ser responsable, por ejemplo, la
actualización de los datos almacenados o comprar artículos en línea.
El método POST se utiliza para solicitar que el servidor de origen de aceptar la entidad incluida
en la solicitud como un subordinado de nuevo el recurso identificado por el URI en la Solicitud
de línea. POST está diseñado para permitir un método uniforme para cubrir las siguientes
funciones:
Envía información al servidor, tales como los campos de formulario, grandes cuerpos de texto,
y los pares de clave y valor.
Oculta los datos de forma de los usuarios, ya que no se pasa como una cadena de consulta,
pero en el cuerpo del mensaje.
Impide favoritos.
Llamado por el servidor (a través del método de servicio) para permitir un servlet para manejar
un requerimiento. La operación de venta permite a un cliente para colocar un archivo en el
servidor y es similar a enviar un archivo por FTP.
Al reemplazar este método, dejará intacta cualquier encabezado contenidos enviados con la
solicitud (incluyendo Content-Length, Content-Type, Content-Transfer-Encoding, Content-
Encoding, Content-Base, contenido del lenguaje, contenido en la localización, Content-MD5, y
Content-Range). Si el método no puede manejar un encabezado de contenido, que debe emitir
un mensaje de error y deseche la petición.
Este método no tiene que ser segura o idempotente. Las operaciones que realiza doPut puede
tener efectos adversos para los que el usuario puede ser considerado responsable. Cuando se
utiliza este método, puede ser útil para guardar una copia de la URL afectados en depósito
temporal.
Llamado por el servidor (a través del método de servicio) para permitir un servlet para manejar
un requerimiento. La operación DELETE permite a un cliente para eliminar un documento o
página Web del servidor.
Este método no tiene que ser segura o idempotente. Operaciones solicitadas a través
BORRAR puede tener efectos adversos para los usuarios que pueden ser considerados
responsables. Cuando se utiliza este método, puede ser útil para guardar una copia de la URL
afectados en depósito temporal.
Recibe una solicitud HTTP HEAD del método de servicios protegidos y se ocupa de la solicitud.
El cliente envía una solicitud HEAD cuando se quiere ver sólo los encabezados de una
respuesta, por ejemplo, Content-Type o Content-Length. El método HTTP HEAD cuenta los
bytes de salida en la respuesta para establecer el encabezado Content-Length precisión.
El método doHead en HttpServlet es una forma especializada del método doGet que devuelve
sólo los encabezados producido por el método doGet.
doOptions para el manejo de solicitudes HTTP OPTIONS.
Llamado por el servidor (a través del método de servicio) para permitir un servlet para controlar
una solicitud de OPCIONES.
La solicitud de OPCIONES determina qué métodos HTTP del servidor de soportes y devuelve
un encabezado apropiado. Por ejemplo, si un servlet doGet anulaciones, este método devuelve
el siguiente encabezado:
Llamado por el servidor (a través del método de servicio) para permitir un servlet para manejar
una petición TRACE.
El método doTrace genera una respuesta que contiene todas las instancias de las cabeceras
enviadas en la solicitud TRACE al cliente, para que puedan ser utilizados en la depuración. No
hay necesidad de reemplazar este método.
Solicitud de parámetros para el servlet son las cadenas enviadas por el cliente a un contenedor
de servlets como parte de su solicitud. Cuando la solicitud es un objeto HttpServletRequest, el
contenedor se llena los parámetros de la cadena de consulta URI y datos POST-ed.
getParameter
Sólo debe utilizar este método cuando se está seguro de que el parámetro tiene un único valor.
Si el parámetro puede tener más de un valor, getParameterValues uso (String).
Si utiliza este método con un parámetro de varios valores, el valor devuelto es igual al primer
valor de la matriz devuelta por getParameterValues.
Si los datos de los parámetros se envían en el cuerpo de la solicitud, tal como ocurre con una
petición HTTP POST, luego de leer el cuerpo directamente a través de getInputStream () o
getReader () puede interferir con la ejecución de este método.
getParameterNames
Devuelve una enumeración de objetos String que contiene los nombres de los parámetros
contenidos en esta solicitud. Si la solicitud no tiene parámetros, el método devuelve una
enumeración VACÍA.
getParameterValues
Devuelve una matriz de objetos String que contiene todos los valores del parámetro de la
petición se ha dado, o null si el parámetro no existe. Si el parámetro tiene un valor único, la
matriz tiene una longitud de 1.
getParameterMap
Devuelve un java.util.Map inmutable que contiene los nombres de parámetros como claves y
valores de los parámetros como los valores del mapa. Las claves en el mapa de parámetros
son de tipo String. Los valores en el mapa de parámetros son de tipo de matriz de cadena.
El método getParameterValues devuelve un array de objetos String que contiene todos los
valores de los parámetros asociados a un nombre de parámetro. El valor devuelto por el
método getParameter debe ser el primer valor de la matriz de objetos String devuelto por
getParameterValues. El método devuelve un getParameterMap java.util.Map del parámetro de
la solicitud, que contiene nombres como claves y valores de los parámetros como los valores
del mapa.
Las siguientes son las condiciones que deben cumplirse antes de los datos de envío de
formulario se rellenará con el conjunto de parámetros:
El servlet ha hecho una convocatoria inicial de cualquiera de la familia "getParameter 'de los
métodos con el objeto de solicitud.
Si las condiciones no se cumplen y los datos del formulario de envío no está incluido en el
conjunto de parámetros, los datos enviados todavía debe estar disponible para el servlet a
través de flujo de entrada del objeto de la petición de. Si se cumplen las condiciones, los datos
de envío de formulario ya no esté disponible para la lectura directa de la corriente de entrada
del objeto de la petición de.
Cabeceras.
Un servlet puede acceder a las cabeceras de una petición HTTP a través de los siguientes
métodos de la interfaz HttpServletRequest:
getHeader
Devuelve el valor del encabezado de la solicitud se especifica como una cadena. Si la solicitud
no incluye un encabezado con el nombre especificado, este método devuelve null. Si hay varios
encabezados con el mismo nombre, este método devuelve el primer jefe en la solicitud. El
nombre de encabezado de mayúsculas y minúsculas. Usted puede utilizar este método con
cualquier encabezado de la solicitud.
getHeaders
Devuelve todos los valores del encabezado de la solicitud se especifica como una enumeración
de objetos String.
Algunas de las cabeceras, como Accept-Language pueden ser enviados por los clientes como
los encabezados de varios, cada uno con un valor diferente en lugar de enviar la cabecera
como una lista separada por comas. Si la solicitud no incluye todos los encabezados con el
nombre especificado, este método devuelve una enumeración VACÍA. El nombre de la
cabecera es sensible a mayúsculas. Usted puede utilizar este método con cualquier
encabezado de la solicitud.
getHeaderNames
getIntHeader
getDateHeader
Devuelve el valor del encabezado de la solicitud se especifica como un valor de tiempo que
representa un objeto Date. Utilice este método con cabeceras que contienen fechas, tales
como If-Modified-Since ".
Si la solicitud no tiene un encabezado con el nombre especificado, este método devuelve -1. Si
el encabezado no puede ser convertido a una fecha, el método produce una
IllegalArgumentException.
Las cookies.
Las cookies son datos que se envían desde el cliente al servidor en cada petición que realiza el
cliente. Normalmente, la única información que el cliente envía como parte de una "cookie" es
el nombre de la cookie y el valor de la cookie. Otros atributos de cookies que se pueden
establecer cuando la cookie es enviada al navegador, tales como comentarios, no suelen ser
devueltos. Varios cookies podría tener el mismo nombre pero con diferentes atributos camino.
{public interface HttpServletRequest
package javax.servlet.http;
Cabeceras.
Un servlet puede establecer los encabezados de respuesta HTTP a través de los siguientes
métodos de la interfaz HttpServletResponse:
setHeader
addHeader
Agrega un encabezado de respuesta con el nombre y valor. Este método permite a los
encabezados de respuesta para tener varios valores.
Encabezados pueden contener datos que representa un int o un objeto Date. Los siguientes
métodos de conveniencia de la interfaz HttpServletResponse permite un servlet para establecer
un encabezado con el formato correcto para el tipo de datos adecuado:
setIntHeader
addIntHeader
Agrega un encabezado de respuesta con el nombre y valor entero. Este método permite a los
encabezados de respuesta para tener varios valores.
addDateHeader
Para ser transmitido correctamente al cliente, los encabezados se debe establecer antes de la
respuesta se ha comprometido. Encabezados fijará después de la respuesta se ha
comprometido a ser ignorado por el contenedor de servlets.
Tipo de contenido.
ServletResponse.setContentType (String);
HttpServletResponse.setHeader ("Content-Type", "text / html");
Para enviar los datos de caracteres, utilice el objeto devuelto por ServletResponse.getWriter
PrintWriter ()
Devuelve un objeto PrintWriter que pueden enviar mensajes de texto de caracteres para el
cliente. El PrintWriter utiliza la codificación de caracteres devueltos por getCharacterEncoding
(). Llamar a flush () en el PrintWriter compromete la respuesta.
O bien este método o getOutputStream () puede ser llamado a escribir el cuerpo, NO TANTO.
Si los datos se hayan escrito en el búfer de respuesta, pero no se devuelve al cliente (es decir,
la respuesta es no comprometidos), los datos en el búfer de respuesta debe ser reemplazada
por el conjunto de datos con estos métodos. Si la respuesta se ha comprometido, este método
debe lanzar una IllegalStateException.
}
Ciclo de vida de un servlet
Describir la secuencia de objetivos y eventos del ciclo de vida del servlet: (1) la carga de clases
servlet, (2) creación de instancias de servlet, (3) llamar al método init, (4) llamar al método de
servicio, y (5) llamado método destroy.
Un servlet es administrado a través de un ciclo de vida bien definido que define la forma en que
se carga y se crea una instancia, se inicializa, se ocupa de las peticiones de los clientes, y está
fuera de servicio. Este ciclo de vida se expresa en el API por el inicio, el servicio, y destruir los
métodos de la interfaz javax.servlet.Servlet que todos los servlets debe aplicar directamente o
indirectamente a través de la GenericServlet o clases HttpServlet abstracto.
Después de cargar la clase servlet, el contenedor se crea una instancia para su uso.
Este objeto de configuración permite que el servlet para acceder a los parámetros de nombre y
valor de inicialización de la información de configuración de la aplicación de laWeb. El objeto de
configuración también le da el acceso servlet a un objeto (que implementa la interfaz
ServletContext) que describe el medio ambiente servlet tiempo de ejecución.
Durante la inicialización, la instancia de servlet puede lanzar una UnavailableException o
ServletException uno. En este caso, el servlet no deben ser puestos en servicio activo y debe
ser puesto en libertad por el contenedor de servlets. El método de destruir no se llama ya que
se considera la inicialización sin éxito.
Una nueva instancia puede crear una instancia y se inicializa el contenedor después de la
inicialización ha fallado. La excepción a esta regla es cuando un UnavailableException
corresponde a un tiempo mínimo de indisponibilidad, y el contenedor debe esperar a que el
período de pasar antes de crear e inicializar una instancia de servlet nuevo.
Solicitud de manipulación.
En el caso de una petición HTTP, los objetos proporcionados por el envase son de tipo
HttpServletRequest y HttpServletResponse.
public abstract class HttpServlet extends javax.servlet.GenericServlet
implements java.io.Serializable {
Tenga en cuenta que una instancia de servlet puesto en servicio por un contenedor de servlets
puede manejar ninguna solicitud durante su vida útil.
Cuando el contenedor de servlets determina que un servlet debe ser retirado del servicio, llama
al método destroy de la interfaz Servlet para permitir que el servlet para liberar los recursos que
está utilizando y guardar cualquier estado persistente.Por ejemplo, el contenedor puede hacer
esto cuando se quiere conservar los recursos de memoria, o cuando se está cerrando.
Antes de que el contenedor servlet llama al método destroy, debe permitir que ninguna de las
discusiones que se están ejecutando actualmente en el método de servicio del servlet para
completar la ejecución, o superar un límite de tiempo definido por el servidor.
Una vez que el método de destrucción se llama en una instancia de servlet, el contenedor no
puede enrutar las solicitudes de otros a esa instancia del servlet. Si el envase tiene que permitir
que el servlet de nuevo, debe hacerlo con una nueva instancia de la clase del servlet.
Una aplicación web que existe una jerarquía estructurada de directorios. La raíz de esta
jerarquía sirve como la raíz de documentos de los archivos que forman parte de la solicitud. Por
ejemplo, para una aplicación web con la ruta del contexto y el catálogo en un contenedor Web,
el archivo index.html en la base de la jerarquía de la aplicación web puede servir para
satisfacer una petición de / catalog / index.html.
El / WEB-INF/classes / guía para las clases de servlets y utilidad. Las clases de este directorio
debe estar a disposición del cargador de clases de la aplicación.
El / WEB-INF/lib / *. jar área de archivos Java Archive. Estos archivos contienen los servlets,
los beans y otras clases de servicios públicos de utilidad para la aplicación web. El cargador de
aplicaciones Web de clase debe ser capaz de cargar las clases de cualquiera de estos ficheros
de archivo.
El cargador de aplicaciones Web de clase debe cargar clases desde el directorio WEB-
INF/classes primero, y después de la colección de JAR en el directorio WEB-INF/lib. Además,
ninguna de las solicitudes del cliente para acceder a los recursos en WEB-INF / debe ser
retornado con un SC_NOT_FOUND (404) de respuesta.
Las aplicaciones Web se pueden empaquetar y firmado en un formato de archivo Web (WAR)
usando las herramientas estándar de Java archivo. Por ejemplo, una aplicación para
seguimiento de problemas podría ser distribuido en un archivo llamado issuetrack.war.
En forma predeterminada en un formulario, un directorio META-INF se presente, que contiene
información útil a las herramientas de archivo de Java. Este directorio, no deberán ser atendido
directamente por el contenido como el contenedor en respuesta a la solicitud de un cliente
Web, aunque su contenido sea visible a través del código de servlet GetResource y pide
getResourceAsStream en el ServletContext. Además, las solicitudes de acceso a los recursos
en el directorio META-INF debe ser retornado con un SC_NOT_FOUND (404) de respuesta.
Las extensiones de etiqueta escrita en los archivos JSP con etiquetas se pueden colocar en
uno de los dos lugares. La primera posibilidad es en el directorio / META-INF/tags / directorio (o
en un subdirectorio de / META-INF/tags /) en un archivo JAR instalado en el directorio / WEB-
INF/lib / directorio de la aplicación web. Etiquetas colocado aquí suelen formar parte de una
biblioteca reutilizable de etiquetas que se pueden fácilmente caer en cualquier aplicación web.
archivos de la etiqueta que aparece en cualquier otro lugar no se consideran las extensiones de
etiqueta y debe ser ignorado por el contenedor JSP. Por ejemplo, un archivo de etiqueta que
aparece en la raíz de una aplicación web se tratan como contenido para ser servido.
La siguiente es una lista de todos los archivos en una aplicación Web de ejemplo:
/ Index.html
/ Howto.jsp
/ Feedback.jsp
/ Images / banner.gif
/ Images / jumping.gif
/ WEB-INF/web.xml
/ WEB-INF/lib/jspbean.jar
/ WEB-INF/lib/jstl.jar
/ WEB-INF/jsp/example-taglib.tld
/ WEB-INF/jsp/debug-taglib.tld
/ WEB-INF/jsp2/jsp2-example-taglib.tld
/ WEB-INF/tags/displayProducts.tag
/ WEB-INF/tags/helloWorld.tag
/ WEB-INF/tags/panel.tag
/ WEB-INF/tags/xhtmlbasic.tag
/ WEB-INF/classes/com/mycorp/servlets/MyServlet.class
/ WEB-INF/classes/com/mycorp/util/MyUtils.class
Construir la estructura correcta para cada uno de los elementos del descriptor de
implementación siguientes: Error de páginas, init-param, mimo mapeo, servlet, el servlet-clase,
servlet-mapping, el nombre del servlet, y dar la bienvenida-archivo.
<! -
El elemento de error de página contiene una asignación entre un código de error o
excepción de tipo a la vía de un recurso en la aplicación web
->
Parámetros de inicio.
<! -
El elemento init-param contiene un par nombre / valor como
parámetros de inicialización del servlet
->
Elemento MIME.
<! -
El elemento mime-mapping define una asignación entre una extensión y
un tipo de MIME.
->
<! -
El elemento de extensión contiene una cadena que describe un
de extensión. ejemplo: "txt"
->
<! Elemento de extensión (# PCDATA)>
<! -
El elemento de tipo MIME contiene un tipo MIME definido. ejemplo: "text /
normal "
->
Servlet.
<! -
El elemento servlet contiene los datos declarativa de un
servlet.
Si un archivo jsp-se especifica y es el elemento de carga en el arranque
presente, entonces el JSP debe ser compilados y cargados.
->
<! -
El elemento servlet-name contiene el nombre canónico de la
servlet.
->
<! -
El elemento servlet-clase que contiene el nombre de clase completo
del servlet.
->
mapeo de Servlet.
<! -
El elemento servlet-mapping define una asignación entre un servlet y
un patrón de URL
->
<Servlet! ELEMENTO-mapping (servlet-name, url-pattern)>
Bienvenido archivos.
<! -
La bienvenida lista de archivos contiene una lista ordenada de los archivos de bienvenida
elementos.
->
env-entrada
<! -
El elemento env-entrada contiene la declaración de uno de aplicaciones
medio ambiente de entrada.
Este elemento debe ser honrada en en J2EE servlet compatible
contenedores.
<env-entry>
<env-entry-name> TableName </ env-nombre de la entrada->
<env-entry-value> StockTable </ env-valor de la entrada->
<env-entry-type> java.lang.String </ env-tipo de entrada->
</ Entry env->
ejb-ref
<! -
El elemento ejb-ref se utiliza para la declaración de una referencia a
un bean de empresa está en casa. La declaración se compone de:
- Una descripción opcional
- El nombre de referencia EJB utiliza en el código de
la aplicación web que hace referencia el grano de la empresa
- El tipo esperado de la empresa de referencia del frijol
- La casa de espera y las interfaces de control remoto de la referencia
empresa de frijol
- Información opcional ejb-link, que se utiliza para especificar la referencia
empresa de frijol
ejb-local-ref
<! -
El elemento ejb-local-ref se utiliza para la declaración de una referencia
a la casa de un local de frijol empresa. La declaración se compone de:
- Una descripción opcional
- El nombre de referencia EJB utiliza en el código de la aplicación web
que es referencia el grano de la empresa
- El tipo esperado de la empresa de referencia del frijol
- La casa de espera local y las interfaces locales de la referencia
empresa de frijol
- Información opcional ejb-link, que se utiliza para especificar la referencia
empresa de frijol
recursos-ref
<! -
El elemento resource-ref contiene una declaración de un sitio Web
de referencia de aplicación a un recurso externo.
El elemento de res-auth indica si el componente de aplicación
código realiza inicio de sesión mediante programación de los recursos o si los
signos de contenedores en el recurso basado en el principio de asignación
información suministrada por el implementador. Debe ser CONTENEDOR o servlet!
->
<resource-ref>
<res-ref-name> jdbc / BookDB </ res nombre-ref->
<res-type> javax.sql.DataSource </ res de tipo>
<res-auth> de contenedores </ res-auth>
</ Ref recursos>
resource-env-ref
<! -
El elemento resource-env-ref contiene una declaración de una red
solicitud de referencia a un objeto administrado asociada a un
de recursos en el entorno de la aplicación web. Se trata de un
descripción opcional, el medio ambiente recurso de nombre de referencia, y
una indicación del tipo de recurso de referencia medio ambiente espera
el código de la aplicación web.
->
<resource-env-ref>
<resource-env-ref-name> jms / Pedidos </ resource-env-ref-nombre>
<resource-env-ref-type> javax.jms.Queue </ resource-env-ref tipo->
</ Resource-ref env->