Descripción general de Servlet componentes JavaWeb

En este artículo se introducirá servlet de componentes con su flujo de trabajo, ciclo de vida, Solicitud / Respuesta de objetos básico.

Primero con sus palabras blancas decir que su comprensión del servlet, servlet está presente en los componentes del servidor web que puede manejar las solicitudes del usuario se envían al servidor en su navegador y luego procesa la solicitud para devolver los resultados de los datos requeridos por el usuario, desde una consulta de base de datos los datos que se muestran en la página, pero este tipo de páginas de visualización de datos dinámicos llamados página JSP, Servlet utilizarse en conjunción con la página JSP para satisfacer todas las necesidades del usuario.

La cifra es el flujo de interacción con el cliente y el servidor:
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
tres maneras de crear formas de servlet

  1. Crear una clase que implementa la interfaz Servlet
  2. Crear una clase, clase heredada HttpServlet
  3. Utilizando el IDE crea directamente servlet, servlets y registro

servlet dos tipos de registro

  1. En la versión 3.0 o superior del proyecto puede utilizar @WebServlet ( "/") ××× notas registradas
  2. Puede configurar <servlet> en web.xml versión 3.0 registrado en el proyecto
    Aquí Insertar imagen Descripción
    Aquí Insertar imagen Descripción

ciclo de vida del servlet

  • Los ejemplos de la operación de inicialización Servlet- - Servicio - devuelve resultados - Destrucción - de recuperación
    Aquí Insertar imagen Descripción
  1. Ejemplos del servlet (monomodo Ejemplo servlet)
    donde a: la primera solicitud Servlet, por ejemplo operación de
    caso 2: el inicio del servidor, operación instanciada

archivo de configuración Servlet se añade a la web.xml <load-on-startup>ser proporcionado ejemplo servlet de prioridad, la prioridad más alta cuanto menor es el valor, de la forma:

<servlet>
	<servlet-name>LifeServlet</servlet-name>
    <servlet-class>cn.hp.servlet.LifeServlet</servlet-class>
    <init-param>
    	<param-name>password</param-name>
    	<param-value>123</param-value>
    </init-param>
    <load-on-startup>10</load-on-startup>
</servlet>
  1. servlet inicialización
    operación de inicialización inmediatamente instanciado, ejecutado sólo una vez, llama automáticamente al método init ()

  2. Solicitud de procesamiento de servlet
    de servicio de devolución de llamada automática de métodos, dos objetos pasan HttpServletRequest y HttpServletRespose, método de servicio () toma una petición de usuario, en respuesta al resultado de procesamiento de
    la forma a: servicio de anulación ()
    Segunda forma: método de reemplazo doGet () / doPost ()

  3. servlet destruir
    rellamada automática destruir () método, Servlet liberar automáticamente los recursos actualmente ocupados por la aplicación actual se termina, se retira desde el servidor, el servidor deja desencadenó destruir ()

La interfaz Servlet núcleo

1. HTTPServletRequest

Solicitud objeto encapsula todo el paquete de petición de datos se utiliza generalmente para obtener los datos que llegan desde el cliente. Ciclo de vida de una petición, si la solicitud se reenvía también identificó como una solicitud debido a que la solicitud se reenvía con el objeto response pasado a otro servlet al mango.

solicitud de adquisición de datos Método:

  • valor String = request.getParameter (String key);
  • String [] Valor = request.getParameterValues ​​(String key);
  • Mapa <String, String []> MAP = request.getParameterMap ();

Los métodos más comunes:

método efecto
Galleta [] getCookies () Todos los Cookies solicitó objeto y devuelve una matriz de galletas
HttpSession getSession () Devuelve la sesión actual asociado con la solicitud de sesión
Cadena getContextPath () Volver Solicitud porción URI indica el contexto solicitado
Cadena getMethod () Devuelve el método HTTP solicitado, o consiguen método post
Cadena getQueryString () Devuelve la cadena de consulta en la ruta de solicitud de URL
Cadena getRemoteAddr () Devolver la dirección IP del cliente envía una solicitud

Remite la solicitud:

  1. Obtiene adelante el objeto de la petición
    RequestDispatcher rd = getRequestDispathcher(String path);
  2. método de reenvío de llamadas
    rd.forward(HttpServletRequest,HttpServletResponse);

o directamenterequest.getRequestDispatcher("path").forward(request, response);

2. HttpServletResponse

objeto de respuesta por un paquete de contenido en respuesta a los resultados del paquete de datos se puede encapsular objeto galleta, un conjunto de códigos de respuesta, la adición de la cabecera de respuesta, en respuesta de la misma; pura para el desarrollo servlet sin páginas JSP, a continuación, la respuesta puede páginas de salida y de empalme, parte inferior JSP es puede redirigir, de aquí en adelante se describirá la diferencia entre los procesos y remite la solicitud de redirección; splicing la página servlet.

Los métodos más comunes:

método efecto
addCookie vacío (la galleta) Agrega la cookie especificada a la respuesta
setStatus vacío (int statu) Para ajustar el código de estado en respuesta a
setHeader vacío (String nombre, String value) Establecer una cabecera de respuesta con un nombre y un valor dado
addHeader vacío (String nombre, String value) Agregar un encabezado de respuesta con un nombre y un valor dado
sendRedirect vacío (cadena de ubicación) Redirección URL ubicación especificada envía la respuesta de redirección temporal al cliente
printWriter getWriter () Obtener el flujo de salida de datos de caracteres
ServletOutputStream getOutputStream () La obtención de un flujo de salida de bytes de datos

Redirigir la solicitud:
en uso general response.sendRedirect("新的Servlet地址");, no es lo mismo redirección y expedición, la solicitud se reenvía a la respuesta servlet tanto al otro objeto para el procesamiento, el cliente no cambia la url; redirigida por definición, dada una redirección para permitir el acceso de los clientes, las circunstancias de los parámetros pasados a la solicitud en el conjunto no existe, el cliente accede al servidor varias veces, url va a cambiar; con la siguiente tabla para ilustrar:
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

3. HttpSession

sesión endoscopio es un objeto de sesión, puede ser entendida como que el usuario abra un navegador para acceder a un inicio del servidor, cierre el navegador para finalizar una sesión puede incluir múltiples solicitudes, la sesión puede establecer los parámetros dentro del alcance de la sesión para un usuario utilizar, el alcance más grande que el objeto de la petición, en la práctica, puede grabar la sesión de inicio de sesión de usuario de datos, por ejemplo, un usuario no está conectado quería visitar la página principal, en un servlet puede determinar la información de sesión, por lo que el usuario es redirigido a la página de inicio de sesión.

Los métodos más comunes:

método efecto
getAttribute Objeto pública (String name) Devuelve el objeto con el nombre especificado en la sesión de la sesión, no regresaron nula
pública setAttribute void (String nombre, valor del objeto) Este método utiliza el nombre especificado para enlazar un objeto a la sesión de la sesión
public boolean isNew () La sesión es determinar si el nuevo

El siguiente es un inicio de sesión con éxito a la página principal para iniciar la sesión en el caso pequeño volvió a fracasar:

//该方法属于登录servlet类
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	request.setCharacterEncoding("utf-8");
	HttpSession session = request.getSession();
	Map<String, String[]> map = request.getParameterMap();

	String userName = map.get("userName")[0];
	String password = map.get("password")[0];

	if (dao.login(userName, password) < 0) {
		//登录失败
		request.getRequestDispatcher("/page/login.jsp").forward(request, response);
	} else {
		//登录成功
		session.setAttribute("userName", userName);
		response.sendRedirect("/DynamicWebProject_AnimalManager_v3/animals?type=list");
	}	
}
//该方法属于主页面的servlet类
protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
	request.setCharacterEncoding("utf-8");
	HttpSession session = request.getSession();
	if (session.getAttribute("userName") == null) {
		response.sendRedirect("/DynamicWebProject_AnimalManager_v3/page/login.jsp");
	} else {
		//业务代码
	}
}

4. ServletContext

El objeto actual es un entorno de objeto de proyecto web (objeto de contexto), un contexto correspondiente a un objeto web del proyecto puede ser entendido como un objeto global, a partir del ámbito de servidor, se inicia el despliegue del proyecto, se cierra la del servidor de proyecto hacia abajo o se elimina, el objeto puede almacenar variables globales, por ejemplo, el número de visitas al sitio.

Get ServletContext
ServletContext context = this.getServletContext() //this表示某个servlet实例;
ServletContext context = config.getServletContext();

función

  1. La obtención de los parámetros globales de inicialización de aplicaciones web
    String username = context.getInitParameter("username");
<context-param>
	<param-name>username</param-name>
    <param-value>zhangsan</param-value>
</context-param>
  1. El almacenamiento de datos globales
    del getAttribute ()
    la setAttribute ()

  2. Obtiene la ruta absoluta de los recursos de la aplicación web (entorno de despliegue para el proyecto actual)
    String realPath = context.getRealPath("/");

5. ServletConfig

Este objeto se describe la información de configuración actual relacionada con el propio Servlet,

obtener
ServletConfig config = this.getServletConfig();
String value = config.getInitParameter(String key);

Función
Obtener datos re-inicializado en el servlet en web.xml actual:

<servlet>
	<init-param>
		<param-name>name</param-name>
		<param-value>zhangsan</param-value>
	</init-param>   
</servlet>

Obtener / modo de procesamiento de solicitudes Post y ilegible

  • datos ilegibles solicitan:
    página de codificación: <meta charset="utf-8">
    petición GET: String username = new String(username.getBytes("iso-8859-1"),"utf-8");
    solicitud POST:request.setCharacterEncoding("utf-8");

  • Resultados de respuesta ilegible:
    datos de la página HTML: response.setContentType(type);
    datos de texto sin formato:response.setCharacterEncoding(charset);

Publicado 12 artículos originales · ganado elogios 3 · Vistas 241

Supongo que te gusta

Origin blog.csdn.net/qq_38599840/article/details/104419520
Recomendado
Clasificación