¿A qué cuestiones se debe prestar atención en la programación de servlets?
Detalles a prestar atención en el desarrollo de Servlet
Cuando el cliente accede al servidor, accede a él a través de la URL, por lo que cuando queramos usar el navegador para acceder a nuestro Servlet, Necesita asignar nuestro servlet a una URL (implementar la configuración de URL a través de las dos subetiquetas
/*, /news/*, /*.do? Estos tres métodos de mapeo logran funciones diferentes respectivamente
/*: se puede acceder a cualquier ruta
/news/*: Todas las rutas en una carpeta específica
/*.do: Todas las rutas con una extensión específica
¿Quién coincide primero?
Se emparejará quien tenga el mayor grado de coincidencia y se emparejará quien sea más similar. *.do tiene la prioridad más baja, dos principios.
Problema singleton del servlet: el servlet es una clase llamada por otros programas java. No puede ejecutarse de forma independiente en respuesta a múltiples solicitudes del cliente. Normalmente, el servlet solo creará un objeto de instancia una vez creado. residirá en la memoria y atenderá solicitudes posteriores hasta que se cierre la aplicación web, es decir, nuestro servlet finaliza cuando cerramos el navegador.
Cuando se accede al Servlet por primera vez, se carga en la memoria. En el futuro, la instancia atenderá cada solicitud y el método de servicio se llamará una vez en cada caso.
Qué problemas ocurrirán de esta manera: debido a que el servlet es un singleton, ocurrirán problemas de seguridad de subprocesos:
Por ejemplo: sistema de tickets (si una variable es compartida por varios usuarios), Necesitamos implementar un mecanismo de sincronización. Si una variable no necesita compartirse directamente, se define directamente en doGet o doPost, por lo que no habrá problemas de seguridad de subprocesos)
Solución 1: use este objeto. para sincronizarlo (this){} está empaquetado para implementar el mecanismo de sincronización.
Solución 2
Instrucciones para configurar la configuración
Requisito: Cuando se inicia nuestro sitio web, es posible que sea necesario inicialice algunos datos (como crear algunas tablas temporales) y, por ejemplo, nuestro sitio web tendrá algunas tareas que deben completarse con regularidad (escribir registros con regularidad, enviar correos electrónicos con regularidad)
Solución: puede usar configure this Las etiquetas luego combinan algunos conocimientos relacionados con subprocesos para resolver el problema.
Primero explique
Ejemplo 1: Inicializar algunas cosas
Implementación: 1. Configurar la etiqueta
Ejemplo 2: Enviar un correo electrónico cada 1 minuto
Implementación: 1. Crear un nuevo hilo 2. Llamar al hilo y configurar la etiqueta
//?Pon?tu?código?aquí
System.out.println("Nuestro hilo ha comenzado");< / p>
EnviarEmail?send=new?SendEmail();
enviar.sendmail();
}paquete?com.lyw.servlet
< p; >public?class?SendEmail?extends?Thread?{public?void?sendmail(){
int?i=0;
mientras( verdadero ){
i++;
¿intentar?{
Thread.sleep(10*1000);
}?catch?( InterruptedException ?e)?{
//?TODO?Auto-generated?catch?block
e.printStackTrace();
}
System.out.println("Enviar "+i+"ésimo correo electrónico");
}
}
}
¿Qué significan los números en nuestra etiqueta
Esto significa que nuestro inicio es secuencial, porque en el desarrollo real debemos inicializar múltiples objetos, por lo que usamos números aquí para indicar la secuencia de inicio.
5. Objeto ServletConfig
Este objeto se utiliza principalmente para leer cierta información de configuración del Servlet,
paquete?com.lyw.servlet p>
importar?java.io.IOException;
importar?java.io.PrintWriter
importar?javax.servlet.ServletException;
importar?javax.servlet.http.HttpServlet;
importar?javax.servlet.http.HttpServletRequest;
importar?javax.servlet.http.HttpServletResponse
¿public?class?FirstServlet?extends?HttpServlet?{
public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
lanza?ServletException,?IOException ?{
response.setContentType("text/html");
String?encoding=this.getServletConfig().getInitParameter("codificación");
respuesta. setCharacterEncoding(codificación);
PrintWriter?out=response.getWriter();
out.print("La codificación es: "+codificación);
}
public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response)
lanza?ServletException,?IOException?{
doGet(solicitud) ,?respuesta );
}
/** *?Inicialización?del?servlet.?
* *?@throws?ServletException?si?un?error ?ocurre * /
public?void?init()?throws?ServletException?{
//?Pon?tu?código?aquí
System. out.println ("Nuestro hilo comenzó");
SendEmail?send=new?SendEmail();
send.sendmail();
}
p>
}
Leer información de configuración, que solo puede ser leída por este Servlet.
Sin embargo, si desea que todos los Servlets lean un determinado parámetro, debe configurarlo así: la configuración bajo la etiqueta
6. Cómo modificar el archivo Servlet
Ingrese a los asistentes en el directorio de complementos de myeclipse para buscar y encontrar el paquete jar correspondiente. Ábralo con el paquete comprimido y modifíquelo. que desee. Simplemente guárdelo como desee y cierre myeclipse cuando realice modificaciones.
Cita: enlace web