Directorio de artículos
1. Instalación y uso de Tomcat
1.1 Instalación de Tomcat
Busque Tomcat en el navegador y abra la página web oficial. Sitio web oficial de Tomcat
Haga clic para descargar Tomcat8.
Haga clic para descargar el paquete comprimido.
Después de la descarga, descomprima.
El directorio obtenido después de la descompresión:
La siguiente es una explicación parcial de los archivos clave anteriores:
bin
: Programa/script ejecutable Inicie Tomcat aquí.conf
: Configuración, utilizando el formato xml para representar la configuración del servidor, como modificar el número de puerto vinculado a tomcat, debe modificar el contenido aquí.lib
: algunas bibliotecas de las que depende tomcat (no consideradas por el momento)logs(重要)
: Registro, el registro de la operación de Tomcat está aquí. Si hay un problema con el programa, ¿cómo solucionarlo? Solo mire este registro.webapps
: Cada aplicación web es un "sitio web". Se pueden implementar varios sitios web en un tomcat, que aquí se denomina "aplicaciones web". Aquí hay muchos directorios, y cada directorio se considera un sitio web independiente. El código que aprenderemos más adelante también es implementado en esta webapps.
1.2 Inicio de Tomcat
Inicio de Tomcat:
después del inicio, podemos ver:
Server startup in xxx ms
es un inicio exitoso.
1.3 Tomcat implementa la página frontal
Cree una nueva pestaña de página web, ingrese 127.0.0.1:8080
a la página de bienvenida de Tomcat. (Tomcat debe estar ejecutándose en este momento)
8080
es el número de puerto predeterminado de Tomcat. Al igual que el número de puerto predeterminado de MySQL 3306
. A continuación, intentamos
implementar el código front-end en Tomcat: Tome
como ejemplo el código del sistema de blog aprendido anteriormente:
copie el sistema de blog en la carpeta webapps (despliegue):
ingrese en la barra de navegación http://127.0.0.1:8080/blog/blog_list.html
para acceder a través de la red.
La ruta de primer nivel (blog) también tiene un nombre, llamado application path/context path
esto La página es diferente de la anterior. Se accede a esta a través de la red. Se accede a la página anterior a través de la ruta del archivo. Se puede acceder al acceso a la red a través de
hosts, y la ruta solo puede acceder a páginas en su propio host.
2. Servlet
2.1 ¿Qué es un servlet?
Servlet
: Es una tecnología para realizar páginas dinámicas . Es una API nativa de desarrollo web proporcionada por Tomcat para java.
Las páginas web se dividen en dos categorías:
páginas estáticas: el contenido de las páginas siempre es fijo. (página de inicio de Baidu)
páginas dinámicas: páginas El contenido cambia con diferentes parámetros de entrada (página de estructura de Baidu)
2.2 El primer programa Servlet
Primero escribamos un programa hola mundo: se espera que escriba un programa Servlet y lo implemente en Tomcat, acceda a él a través de un navegador y obtenga la cadena hola mundo.
Hay siete pasos en total:
- crear proyecto
- Introducir dependencias
- Crear estructura de directorio
- Escribir código
- empaquetador
- programa de despliegue
- verificar
- Crear un proyecto
Aquí debe crear unmaven
proyecto.
maven es una herramienta de "gestión de proyectos" que puede:
- Estandarizar la estructura de directorios
- administrar dependencias
- Construir
- Embalar
- prueba
...
Abra la idea:
Nota: Cuando use maven por primera vez, después de crear el proyecto, leerá el artículo a continuación y cargará algunas dependencias de maven desde el almacén central. Lleva mucho tiempo. Preste atención al directorio aquí
:
2. Importar dependencias
Abra el almacén central de maven y busque Servlet. Elija la versión
aquí 3.1.0
.
Copie el código maven pom.xml
.
¡Preste atención para agregar etiquetas! Si hay varias dependencias, simplemente cópielas.
Si la marca roja es roja para mucho tiempo, actualice:
3. Cree una estructura de directorios
Aunque maven lo ha creado automáticamente para nosotros Algunos directorios, pero no lo suficiente. Aquí necesita usar maven para desarrollar un programa web, y necesita otros directorios. (1)
Crear main
un webapp
directorio bajo el directorio (2) Cree un directorio
bajo la aplicación web (3) En WEB-INF A continuación, cree un archivo (4) y escriba el siguiente código en web.xml.WEB-INF
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>
El programa Servlet que escribimos es equivalente al carro. Tomcat es equivalente a la parte delantera del coche. Ponemos el programa Servlet escrito en el directorio webapps, que es equivalente a colgar el carro en la parte delantera del coche. ¿Cómo se identifica Tomcat? ¿cuáles del directorio de webapps hay que extraer y ejecutar? Los compartimentos, cuáles no. Debe identificarse mediante el código que copiamos y pegamos. (WEN-INF/web.xml). Es equivalente al certificado de nombre
. .
- Escribir código
(1) HttpServlet
Es una clase preparada proporcionada en la API de Servlet. Escribir código de Servlet generalmente hereda este HttpServlet.
(2) doGet
Método de reescritura
doGet
El método que escribimos no requiere que lo llamemos manualmente, sino que lo llamemos. Tomcat activará el método Tomcat
cuando reciba la solicitud . Tomcat construirá dos parámetros, y . Entre ellos están las cadenas leídas del socket TCP, según El objeto analizado por el protocolo HTTP. Es un objeto vacío (el programador construye resp de acuerdo con el requisito de solicitud y la lógica comercial en doGet) resp es un parámetro de salida. : Calcula la respuesta de acuerdo con la solicitud. Este método de la clase principal simplemente devuelve una página de error, debe eliminarse.get
doGet
req
resp
req
resp
doGet
super.doGet();
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//注解是java中特殊的类,Java专门定义了一种"语法糖"来实现注解
//注解的作用,针对一个类/方法,进行额外的"解释说明"
//赋予了这个类.方法额外的功能/含义
//Tomcat实现的
//此处 @WebServlet("/hello") 的作用是:
//把当前的类,和一个HTTP请求的路径关联起来
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//在服务器的控制台里打印
System.out.println("hello world");
//将helloworld返回到客户端.
//getWriter()会创建一个 write 对象
//此处的 write 操作其实是往resp的body部分进行写入.
//等resp对象整个构造好了,tomcat会统一转成 HTTP 相应的格式再写 socket
resp.getWriter().write("hello world");
}
}
doGet es llamado por Tomcat cuando recibe . (Asociado con diferentes clases)rutas pueden desencadenar diferentes códigosuna solicitud Get. Si es bajo o no, depende de la ruta de la solicitud GET actual. Diferentes
- Empaquetar el programa
Compile el programa, obtenga algunos.class
archivos y luego empaquete estas .classes en un paquete comprimido.
Un paquete jar es un paquete comprimido compuesto por .classes, pero aquí necesitamos empaquetar un paquete war. Un paquete jar es solo un paquete ordinario. programa java. El paquete es el programa exclusivo de Tomcat para describir la aplicación web. Un paquete de guerra es una aplicación web. Haga
doble clic en el paquete para empaquetar:
de forma predeterminada, maven imprime el paquete jar y necesita ajustar el código:
reempaquetar:
- Implemente el programa Simplemente copie
los paquetes en .Inicie Tomcat.war
tomcat
webapps
- Verifique
Ingrese en la barra de direcciones:http://127.0.0.1:8080/hello_servlet/hello
Resumen: después de ingresar la URL en el navegador, el navegador crea una solicitud HTTP GET correspondiente y la envía a Tomcat. Tomcat determina la aplicación web específica de acuerdo con la ruta de primer nivel y determina a cuál llamar de acuerdo con la ruta de segundo nivel. Clase Luego determine qué método (doGET, doPost) llamar a HelloServlet a través del método GET/POSE
En el proceso anterior, los dos procesos de 5 paquetes y 6 programas de implementación pueden usar el complemento Tomcat de IDEA para integrar Tomcat en IDEA. Esto nos ahorra el proceso de empaque manual. El proceso de implementación manual solo necesita hacer clic para ejecutar Empaquetado e implementación automáticos.
Despliegue automático de paquetes basado en el complemento tomcat , adecuado para la etapa de desarrollo, modifica frecuentemente la verificación del código.Despliegue manual del paquete , adecuado para la etapa en línea, programa de lanzamiento.
Use el complemento tomcat:
complemento: extensión de función IDEA proporciona algunas API que permiten a los programadores desarrollar complementos y ampliar las funciones existentes de IDEA.
smart tomcat
Necesita configurarlo por primera vez
Establezca tomcat
la ruta
pero podemos ver que el inicio falló El
puerto 8080 está ocupado Puede abrir cmd e ingresar lo siguiente: puede ver
En este punto solo falta cerrar Tomcat,
reiniciar correctamente.
El principio de funcionamiento de smart tomcat:
en lugar de copiar automáticamente el paquete war (sin cambios en las aplicaciones web), es iniciar tomcat de otra manera. Tomcat admite la especificación de un directorio de aplicación web específico al iniciar, lo que equivale a dejar que tomcat cargue una sola aplicación web para ejecutar .IDEA
llama directamente a tomcat para permitir que tomcat cargue el directorio en el proyecto actual.
http://127.0.0.1:8080/ va seguido de la ruta de contexto.
Si se implementa copiando directamente el paquete war, la ruta de contexto es el nombre del paquete war (nombre del directorio).
Si se implementa mediante smart tomcat , se puede configurar aquí. El valor predeterminado es el nombre del proyecto.
Estas dos implementaciones son en realidad dos formas de ejecutar Tomcat y tienen diferentes interpretaciones de la ruta de contexto, por lo que se debe prestar especial atención al usarlas.
2.3 Errores comunes
- El error común 1: 404
404 significa que el recurso al que accede el usuario no existe, lo más probable es que la ruta de la URL esté escrita incorrectamente
o que su aplicación web no esté implementada correctamente: web.xml está mal escrito, el nombre del archivo es incorrecto , y la ruta del archivo es incorrecta ok, la ubicación del archivo es incorrecta... - Error común 2: 405
405 significa que no se ha implementado el método de solicitud HTTP correspondiente. Por ejemplo, si enviamos una solicitud GET en el navegador, pero doGet no está escrito en el código, en este momento aparecerá 405. También puede ser que no hay
ningún método Remove the parent class llamado por defecto, como super.doGet
- El error común 3: 500
a menudo es causado por una excepción lanzada en el código Servlet. Este problema se resuelve mejor, porque cuando ocurre 500, el registro de la página le indicará claramente la pila de llamadas de excepción y qué línea de código causó la excepción. Por ejemplo , le damos al
código Se produce una excepción de puntero nulo.
4. Error común 4: Aparece una página en blanco.La
lógica en el método no escribe código como resp.getWriter().write()
- Error común 5: No se puede acceder a la página.
La razón más común es que Tomcat no se ha iniciado o se ha bloqueado. Si apagamos Tomcat, no se puede acceder a la página. Si Tomcat no se puede iniciar, puede ser un conflicto de puertos.