Seleccione resumen

servlet

¿Cuál es Servlet?

  Servlet: subprograma Servidor: servidor .Servlet applet es el servidor recibe una solicitud para el cliente y responde al programa cliente.

  programa Java servlet se ejecuta en un servidor web o servidor de aplicaciones, se utiliza como una capa intermedia entre la base de datos o servidor de aplicaciones y peticiones HTTP desde el navegador Web u otros clientes HTTP. El uso de servlet, se puede recopilar datos de usuario de formularios web, que muestra los registros de una base de datos u otra fuente, también se pueden crear páginas web dinámicas.

  En la práctica, el concepto de servlet, dividido en estrecha y ancha.

  Estrecha servlet es un programa pequeño.

  De hecho, la amplia servlet es una clase Java es una clase que implementa la interfaz Servlet.

El papel del servlet?

servlet realiza las siguientes tareas principales:

  1. El cliente lee la información (el encabezado de solicitud de transmisión de información). (Adquisición de datos de cliente)
  2. Tratamiento de la información (datos procesados)
  3. Los datos de respuesta (datos de retorno: servicios de datos, en respuesta a la información de cabecera).

¿Cómo lograr servlet:

Servlet: clase Java es una clase que implementa el servlet.

  1. Creación de una clase

  2. Implementar el Servlet interfaz

    package com.sxt.controller;
    
    import java.io.IOException;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    
    public class ServletDemo01 extends HttpServlet  {
    
    	private static final long serialVersionUID = -2597540888550505998L;
    	
    	@Override
    	public void init() throws ServletException {
    		System.out.println("====init====");
    	}
    
    
    	@Override
    	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    		System.out.println("====service====");
    		// 读取谁的?
    	}
    
    	@Override
    	public void destroy() {
    		System.out.println("====destroy====");
    	}
    
    }
    
  3. Registro de servlets

  4. Servlet configurado para proporcionar método de acceso

      <!-- 注册Servlet -->
      <servlet>
      	<!-- servlet别名 -->
      	<servlet-name>ergou</servlet-name>
      	<!-- Servlet类的全路径 -->
      	<servlet-class>com.sxt.controller.ServletDemo01</servlet-class>
      </servlet>
      
      <!-- 配置Servlet 提供访问方式 -->
      <servlet-mapping>
      	<!-- servlet别名 -->
      	<servlet-name>ergou</servlet-name>
      	<!-- servlet的访问地址  -->
      	<url-pattern>/ergou.html</url-pattern>
      </servlet-mapping>
    

ciclo de vida del servlet

  En el Servlet, Servlet es un singleton Cada clase Servlet, y sólo un objeto.

  método init, el valor predeterminado se realizará en la primera visita y realizar sólo una vez, por lo general utiliza para inicializar la información de servlets.

  detory método, el valor por defecto se ejecutará cuando el servidor se detiene y sólo una vez, el objetivo de servlets para su destrucción.

  método de servicio realizada por defecto cada vez que hay una solicitud de acceso, cada solicitud será ejecutado para procesar una solicitud.

  init ----> servicio ----> detory Este es el ciclo de vida del servlet.

nota:

  Servlet es un producto único, por lo que no se servlet hilo de seguridad. En general, cuando se utiliza servlet, no recomienda la definición de variables miembro.

proceso de implementación servlet

funcionalidad servlet

Recibir información del cliente: HttpServletRequest

formulario de información del formulario

package com.sxt.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class RequestServlet extends HttpServlet {
	
	private static final long serialVersionUID = 4858130557364545084L;
	/**
	 * 当是  get请求时  执行
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGet");
//		String userName = req.getParameter("userName");
//		String password = req.getParameter("password");
//		String selectName = req.getParameter("selectName");
//		String[] likes = req.getParameterValues("like");
//		String sex = req.getParameter("sex");
//		String textName = req.getParameter("textName");
//		
//		System.out.println("userName: "+userName);
//		System.out.println("password: "+password);
//		System.out.println("selectName: "+selectName);
//		System.out.println("likes: "+Arrays.toString(likes));
//		System.out.println("sex: "+sex);
//		System.out.println("textName: "+textName);	
	}
	
	/**
	 * 当是 post请求时 执行
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		System.out.println("doPost");
		String userName = req.getParameter("userName");
		String password = req.getParameter("password");
		String selectName = req.getParameter("selectName");
		String[] likes = req.getParameterValues("like");
		String sex = req.getParameter("sex");
		String textName = req.getParameter("textName");
		
		System.out.println("userName: "+userName);
		System.out.println("password: "+password);
		System.out.println("selectName: "+selectName);
		System.out.println("likes: "+Arrays.toString(likes));
		System.out.println("sex: "+sex);
		System.out.println("textName: "+textName);
		
		// 获取所有表单数据的  name值
		Enumeration<String> parameterNames = req.getParameterNames();
		//遍历所有的name值
		while(parameterNames.hasMoreElements()) {
			System.out.println("name值:"+parameterNames.nextElement());
		}
		System.out.println("==========================");
		//将 所有的请求参数 封装成一个Map 集合
		Map<String, String[]> parameterMap = req.getParameterMap();
		//获取所有的key
		Set<String> names = parameterMap.keySet();
		for (String name : names) {
			System.out.println(name +":"+Arrays.toString(parameterMap.get(name)));
		}
		Map<String, Object> paramMap = paramMap(parameterMap);
		System.out.println("转化后的:"+paramMap);
		
	}
	
	/**
	 * 将存储封装一个map
	 * @return
	 */
	public Map<String,Object> paramMap(Map<String, String[]> parameterMap){
		Map<String,Object> map = new HashMap<String, Object>();
		//获取所有的key
		Set<String> keys = parameterMap.keySet();
		for (String key : keys) {
			String[] values = parameterMap.get(key);
			Object value = null;
			if(values != null &&values.length == 1 && values[0] != "") {
				value = values[0];
			}else if(values != null && values.length > 1) {
				List<String> data = new ArrayList<String>();
				for (String v : values) {
					data.add(v);
				}
				value = data;
			}
			map.put(key,value);
		}
		return map;
	}

}

Ámbito de obtener información

package com.sxt.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AttributeServlet extends HttpServlet {
	
	private static final long serialVersionUID = 4858130557364545084L;
	/**
	 * 当是  get请求时  执行
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGet");
		//getAttribute(name值) : 根据name值从 request 作用域中 获取对应值
		//getAttributeNames() : 获取作用域中,所有属性名称
		//setAttribute(name,value) : 设置request作用域中的属性值
		// 设置属性值
		req.setAttribute("key1", "value1");
		req.setAttribute("key2", "value2");
		req.setAttribute("key3", "value3");
		System.out.println(""+req.getAttribute("key1"));
		
		Enumeration<String> attributeNames = req.getAttributeNames();
		while(attributeNames.hasMoreElements()) {
			System.out.println(attributeNames.nextElement());
		}
	}
	
	/**
	 * 当是 post请求时 执行
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
	
}

Para los objetos de alcance adicionales

package com.sxt.controller;

import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ScopeServlet extends HttpServlet {
	
	private static final long serialVersionUID = 4858130557364545084L;
	/**
	 * 当是  get请求时  执行
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGet");
		//获取其他作用域 
		//获取session作用域
		HttpSession session = req.getSession();
		session.setAttribute("sessionKey", "sessionValue");
		// 获取 application 作用域
		ServletContext application = req.getServletContext();
		application.setAttribute("applicationKey", "applicationValue");
	}
	
	/**
	 * 当是 post请求时 执行
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
	
}

El acceso a la solicitud de información de la red

package com.sxt.controller;

import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class HttpInfoServlet extends HttpServlet {
	
	private static final long serialVersionUID = 4858130557364545084L;
	/**
	 * 当是  get请求时  执行
	 */
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取请求的方法  :  get   post
		String method = req.getMethod();
		System.out.println(method);
		// 获取请求的资源路径   
		String uri = req.getRequestURI();
		System.out.println(uri);
		// 获取请求URL地址  http://127.0.0.1:8080/sxt/servlet.do
		String url = req.getRequestURL().toString();
		System.out.println(url);
		// 请求端口
		int remotePort = req.getRemotePort(); //客户端端口
		System.out.println(remotePort);
		int localPort = req.getLocalPort(); //服务器本地端口
		System.out.println(localPort);
		String remoteHost = req.getRemoteHost(); //客户端IP
		String localAddr = req.getLocalAddr(); // 服务器IP
		System.out.println("remoteHost:"+remoteHost);
		System.out.println("localAddr:"+localAddr);
		//设置请求的编码
		req.setCharacterEncoding("UTF-8");
		//获取请求头信息 :  Map  :  key -- value
		String language = req.getHeader("Accept-Language");
		System.out.println(language);
	}
	
	/**
	 * 	当是 post请求时 执行
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
	
}

redirecciones internas y hacia delante

//resp.sendRedirect("地址");  重定向
resp.sendRedirect("scope.jsp");
// 内部转发  req.getRequestDispatcher("scope.jsp").forward(req, resp); 
req.getRequestDispatcher("scope.jsp").forward(req, resp);

Obtener información del archivo

req.getPart("name") : 根据name值,获取对应part数据

datos de respuesta al cliente: HttpServletResponse

package com.sxt.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ResponseServlet  extends HttpServlet{
	private static final long serialVersionUID = -2958733507466419241L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 获取打印流
		//resp.getWriter();
		// 获取输出流
		resp.getOutputStream();
		// 设置 cookie
		resp.addCookie(new Cookie("name","value"));
		//设置编码
		resp.setCharacterEncoding("UTF-8");
		//设置响应头信息
		resp.addHeader("token", "xxxxx");	
	}
}

modelo MVC:

MVC inicialmente presente en el programa de escritorio, M es un modelo de negocio, los medios de interfaz de usuario V, C es el controlador, el propósito de uso de MVC
es V y M para conseguir la separación del código, de manera que el mismo programa se puede utilizar diferentes formas. Por ejemplo, una serie de estadísticas puede ser separado
de histograma, gráfico de sectores para representar. El objetivo es asegurar la presencia de C M y V de sincronización, una vez cambiado M, V debe sincronizarse.

  Modelo - Vista - Controlador (MVC) es el Xerox PARC en la década de 1980 como un diseño de software de lenguaje de programación Smalltalk-80 patrón invención, se ha utilizado ampliamente. Llegó a ser recomendado como patrones de diseño de la plataforma Java EE de Sun de Oracle, y dio la bienvenida por más y más uso de ColdFusion y PHP desarrolladores. Modelo - Vista - Controlador patrón es un conjunto de herramientas útiles, que tiene muchas ventajas, pero hay algunas desventajas.
  : Crear un patrones de diseño de aplicaciones Web MVC es un (- - Modelo Vista Controlador Modelo Vista Controlador) mediante el MVC
    Model (modelo) representa el núcleo de la aplicación (como una lista de registros de base de datos) (modelo de datos).
    Ver (View) de visualización de datos (registro de base de datos).
    Controller (controlador) para entrada y salida (escrito al registro de base de datos).
    modelo MVC al tiempo que proporciona un control total sobre HTML, CSS y JavaScript.

El Modelo : para el procesamiento de la aplicación es parte de la lógica de datos de aplicación.

  Datos partes lógicas: la validación de datos, los datos de persistencia relacionada con el procesamiento.

Ver (View) : es la aplicación de parte de los datos de proceso.

Procesamiento de datos: los datos de visualización, los datos de entrada (la interfaz).

Controller (Controlador) : la aplicación es parte del procesamiento de la interacción del usuario.

Interacción: Entrada de la interacción y de salida para recibir la información enviada por el cliente, los clientes responde a ...

En JavaWeb de desarrollo, ventajas y desventajas de usar una variedad de técnicas que se utilizan generalmente:

  Servlet actúa como una capa de control.

capa JSP actúa como una vista

  Modelo relacionada con el código Java.

modelo MVC tres relaciones

Las ventajas de modelo MVC

  1. Reducir el procedimiento de acoplamiento
  2. Mejora de la capacidad de reutilización de código
  3. Mejorar la capacidad de mantenimiento del programa
  4. Mejorar la legibilidad del programa
  5. escalabilidad mejorada
  6. Mejorar la eficiencia del desarrollo

Sin embargo, el aumento de la complejidad de la estructura del programa.

Con el desarrollo de la elaboración, a partir del modelo MVC, la evolución:

  MVP: terminal móvil

  MVVM: vue.js

resumen servlet

concepto:

  .. Servidor de applet se ejecuta un applet en el applet en el servidor para la recepción de los datos del cliente y el cliente puede responder a la .Servlet estrechen y puntos generales:

 En un sentido estricto: Servlet subprograma

 A grandes rasgos: en Java, implementa la configuración de registro de la interfaz Servlet.

Ciclo de Vida:

inicialización init se ejecuta una vez

  la provisión de servicios de los servicios de realizada N veces

  Destory destruyen una vez ejecutada

Servlet es un singleton, no thread-safe, no defina variables miembro.

Supongo que te gusta

Origin www.cnblogs.com/lyang-a/p/12562788.html
Recomendado
Clasificación