Eclipse crea un nuevo proyecto maven basado en Servlet3.x

prefacio

No he jugado servlets durante mucho tiempo, y todavía tuve problemas con Java cuando estaba en la escuela hace diez años. Recientemente, quise usar Eclipse para crear un nuevo proyecto experto basado en Servlet3.x, pero no esperaba lanzarlo por un tiempo. Simplemente escriba un artículo como ejemplo de referencia.

Preparación ambiental

Eclipse:Lanzamiento de Oxygen.1 (4.7.1)

servlet:3.1.0

Crear un nuevo proyecto maven

 

 convertir a serlvet3.0

 En este punto encontramos que el Módulo web dinámico no se puede convertir a 3.0, que es la parte más problemática de este proyecto.

 Encontramos el archivo org.eclipse.wst.common.project.facet.core.xml en el directorio project.settings:

Después de abrir, edite la versión de jst.web a 3.0 y guárdela.

 Luego re-maven actualiza el proyecto.

Luego, ábralo nuevamente y descubra que la versión de Dynamic Web Module ha cambiado a 3.0. La conversión ha sido exitosa en este punto.

 Escribe código relevante

Primero editamos el archivo pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.sadoshi</groupId>
	<artifactId>shiroWeb</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>shiroWeb Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.1.3</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>shiroWeb</finalName>
	</build>
</project>

Luego edite el archivo src/main/webapp/WEB-INF/web.xml Si no hay un directorio de aplicaciones web, puede crear uno nuevo de acuerdo con esta ruta.

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>20180510</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.sadoshi.shiroWeb.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.sadoshi.shiroWeb.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
</web-app>

 Aquí simplemente definimos la página de bienvenida, que es la página de acceso a la ruta raíz predeterminada. Además, al acceder a /hello, llamaremos a HelloServlet, y al acceder a /login, llamaremos a LoginServlet.

Luego escriba HelloServlet, que es la página de inicio del sitio web. Muy simple, solo visite este servlet, devolverá la página hello.jsp:

package com.sadoshi.shiroWeb.servlet;

import java.io.IOException;

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

public class HelloServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getRequestDispatcher("/hello.jsp").forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

 Luego escriba LoginServlet como procesamiento de inicio de sesión. Aquí también es muy simple, si se accede a través de get, volverá a la página login.jsp. Si se accede a través de una publicación, configure un token para ello y redirija a la página de inicio. El enlace de autenticación de inicio de sesión se omite aquí:

package com.sadoshi.shiroWeb.servlet;

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 LoginServlet extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.getRequestDispatcher("/login.jsp").forward(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Cookie cookie = new Cookie("token","123");
		resp.addCookie(cookie);
		resp.sendRedirect("/shiroWeb/hello");
	}

}

 Tenga en cuenta que la versión de servlet-api en pom debe ser 3.x. Si se usa la versión 4.x más reciente, algunas implementaciones pueden ser diferentes, lo que puede afectar el efecto de ejecución. Por ejemplo, cuando usé 4.x antes, el procesamiento del enlace del filtro fue algo diferente, por lo que es mejor usar la misma versión.

Ahora aún nos faltan dos páginas, la primera es la página de inicio hello.jsp, la creamos bajo el directorio webapps:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Hello</title>
</head>
<body>
	<h1>Hello Page</h1>
</body>
</html>

Cree una nueva página de inicio de sesión login.jsp en el mismo directorio

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户登录页面</title>
</head>
<body>
     <h2>${remind}</h2>
     <h1>登录页面</h1>
     
     <form action="login" method="post">
           登录名:<input type="text" name="name"><br/>
             密码为:<input type="password" name="password"><br/>
           <input type="submit" value="登录">
     </form>
</body>
</html>

 Este servlet simple está hecho.

prueba

Creamos un nuevo servidor bajo Servidores de eclipse, si no, búscalo en Ventana -> Mostrar Vista -> Otro...

 He instalado tomcat8.0 en esta máquina, simplemente seleccione el directorio correspondiente.

 Luego haga clic con el botón derecho en el servidor recién creado y seleccione Agregar y quitar, y agregue nuestro proyecto a la derecha:

 Haga clic derecho en el servidor y seleccione Iniciar, luego visite http://localhost:8080/shiroWeb/login para abrir la página de inicio de sesión

Ingresamos el nombre de inicio de sesión y la contraseña de manera casual, y normalmente saltará a la ruta /hello:

Y hacemos clic en F12, y luego actualizamos la página, podemos ver que token=123 está configurado en Cookies. Esto es similar al sistema que asigna un token después de iniciar sesión. Más tarde, el sistema puede juzgar si el usuario ha iniciado sesión de acuerdo con el campo del token.

resumen

Si quiere hacer bien su trabajo, primero debe afinar sus herramientas.Crear un proyecto de servlet es el contenido más básico para aprender JavaWeb. Espero que los lectores puedan obtener el conocimiento que desean en el artículo.

Supongo que te gusta

Origin blog.csdn.net/sadoshi/article/details/120570168
Recomendado
Clasificación