Simular la esencia de Servlet

Esencia de servlet

1. ¿Qué es Servlet?

Servlet (Server Applet; Serv significa servidor, let significa applet) es la abreviatura de Java Servlet, llamado pequeño programa de servicio o conector de servicio. Es un programa del lado del servidor escrito en Java y tiene características independientes de la plataforma y el protocolo. y sus principales funciones es navegar y generar datos de forma interactiva, y generar contenido web dinámico.

(1) Servlet es un conjunto de especificaciones definidas por JavaEE

Servlet es una especificación JavaEE definida por SUN. La interfaz de servlet es la interfaz principal en la especificación de Servlet. Los dos lugares para prestar atención a la interfaz son: ¿quién llama? ¿Quién es el ejecutor?

La interfaz del servlet define un conjunto de especificaciones para procesar las solicitudes de red. Todas las clases que implementan el servlet deben implementar sus cinco métodos, los más importantes son dos métodos de ciclo de vida, init () y destroy (), y uno que procesa el servicio solicitado (), el subprograma java del lado del servidor no se puede escribir a voluntad y debe implementar la interfaz Servlet e implementar el método servlet ().

(2) La relación entre la función y el protocolo de la arquitectura B / S de ServletInserte la descripción de la imagen aquí

Si los cuatro participantes en la imagen van a estar conectados, se deben requerir tres protocolos para conectarlos: el protocolo http entre el navegador y el servidor web está definido por W3C, mientras que Servlet y jdbc están definidos por la especificación SUN. JavaEE.

2. Simula la esencia de Servlet

Cuando los programadores de JavaWeb escriben subprogramas de Java del lado del servidor, no pueden escribir de forma arbitraria y deben implementar la interfaz Servlet. Aquí a través de la ventana de línea de comando para simular la conexión a la base de datos para eliminar datos y conectarse a la base de datos para las operaciones de inicio de sesión.

  • Definir la clase DeleteServlet
public class DeleteServlet implements Servlet {
    
    
    @Override
    public void servlet() {
    
    
        System.out.println("连接数据库,正在删除数据......");
    }
}
  • Definir la clase LoginServlet
public class LoginServlet implements Servlet {
    
    
    @Override
    public void servlet() {
    
    
        System.out.println("正在连接数据库,进行登录。。。");
    }
}
  • Simula el principio de funcionamiento subyacente del servidor Tomcat. Tomcat es un contenedor web que se llama para la interfaz Servlet.
public class Tomcat {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("服务器启动成功");
        Scanner input = new Scanner(System.in);
        try {
    
    
            while (true) {
    
    
                System.out.print("请打开浏览器,在浏览器上输入请求路径:");
                String resultPath = input.nextLine();
                //Tomcat读取web.xml文件
                FileReader reader = new FileReader("web.xml");
                Properties pro = new Properties();
                pro.load(reader);
                reader.close();

                //通过key获取value
                String servletClassName = pro.getProperty(resultPath);

                //通过反射机制创建对象
                Class c = Class.forName(servletClassName);
                Servlet servlet = (Servlet)c.newInstance();
		//调用servlet();方法
                servlet.servlet();
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
    }
}
  • Definir un archivo de configuraciónweb.xmlPara mantener la relación entre la ruta de solicitud ingresada por el usuario y el nombre de clase del subprograma Java del lado del servidor. Debido a que nuestros programadores JavaWeb escriben el subprograma Java del lado del servidor, nuestros programadores JavaWeb también deben escribir los archivos de configuración correspondientes.
/login=LoginServlet
/delete=DeleteServlet
  • El servidor Tomcat es responsable de leer el archivo de configuración web.xml
FileReader reader = new FileReader("servlet//web.xml");
Properties pro = new Properties();
pro.load(reader);
reader.close();
  • Obtenga el valor (el nombre de la clase del subprograma Java del servidor) a través de la clave (la ruta de solicitud ingresada por el usuario)
String servletClassName = pro.getProperty(resultPath);
  • Obtenga el nombre de clase del subprograma java del lado del servidor a través del mecanismo de reflexión para crear el objeto
Class c = Class.forName(servletClassName);
Servlet servlet = (Servlet)c.newInstance();
//面向Servlet接口调用方法即可
servlet.servlet();

Nota : Lo anterior es mi propio entendimiento de la naturaleza y el contenido de Servlet. Si hay alguna deficiencia, ¡por favor señale! ¡Trabajemos juntos duro!

Supongo que te gusta

Origin blog.csdn.net/hcz666/article/details/108469347
Recomendado
Clasificación