SpringBoot integra el marco SSM y Ajax

1. Introducción a SpringBoot

SpringBoot es una colección que integra Spring, SpringMVC y marcos comunes relacionados de forma predeterminada, y completa la configuración regular de forma predeterminada. En cuanto a la configuración, la filosofía de SpringBoot es "La convención es mayor que la configuración" En el proceso de uso, no es necesario configurar, pero también cumplir con los valores de configuración completados por SpringBoot.

2. Cree el proyecto SpringBoot

Abra https://start.spring.io, complete los parámetros para crear el proyecto en la página, si es necesario, verifique las dependencias que deben agregarse y haga clic en el botón Generar para descargar el proyecto.

Descomprima el archivo del proyecto descargado para obtener la carpeta del proyecto, que debe moverse a Workspace, y en Eclipse, importe el proyecto a través de Importar> Proyectos Maven existentes.

Al importar, asegúrese de que la computadora actual pueda conectarse al servidor Maven. ¡Este proyecto necesita descargar una gran cantidad de paquetes jar dependientes del servidor Maven!

Si el proyecto no comienza a actualizarse automáticamente, puede hacer clic con el botón derecho en el proyecto, seleccionar Maven> Actualizar proyecto y marcar Forzar actualización ... en el cuadro de diálogo emergente e intentar actualizar. Si aún no se actualiza, puede intentar reducir la versión de springboot de la que depende.

Se recomienda utilizar Eclipse Oxygen (4.7) y superior. Si está utilizando una versión inferior de Eclipse, es posible que aparezca el error de versión de Maven en el archivo pom.xml. ¡Puede ignorar este error y no afectará el funcionamiento del proyecto!

3. Estructura del proyecto SpringBoot

Por ejemplo, la estructura del proyecto creada:

[Java Resources]
	[src/main/java]
		[cn.tedu.springboot]
			ServletInitializer.java
			SpringbootApplication.java
	[src/main/resources]
		[static]
		[templates]
		application.properties
	[src/test/java]
		[cn.tedu.springboot]
			SpringbootApplicationTests.java

Nota: El paquete cn.tedu.springboot anterior se determina de acuerdo con el grupo y artefacto establecido cuando se crea el proyecto, y también es el paquete raíz del conjunto de análisis de componentes en el proyecto actual. Por lo tanto, durante la programación posterior, todas las clases de componentes (como las clases de controlador) deben colocarse en este paquete o sus subpaquetes.

Nota: El nombre de la clase SpringbootApplication también está determinado por el conjunto de artefactos cuando se crea el proyecto. Esta clase es la clase de inicio del proyecto SpringBoot. Cuando necesite ejecutarse, ejecute el método main () en esta clase.

Nota: El proyecto SpringBoot tiene Tomcat incorporado. Cuando se ejecuta la clase de inicio, el proyecto se implementará en el Tomcat incorporado.

Nota: La carpeta estática en src / main / resources se usa para almacenar recursos estáticos, como almacenar .html, .css, .js e imágenes.

Nota: La carpeta de plantillas en src / main / resources se usa para almacenar páginas de plantilla. Por ejemplo, cuando use Thymeleaf, ¡debe poner las páginas de plantilla relevantes aquí!

Nota: El archivo application.properties en src / main / resources es el único archivo de configuración del proyecto SpringBoot, ¡y todas las configuraciones personalizadas deben configurarse en este archivo! También hay algunos proyectos SpringBoot que usan el archivo de configuración application.yml. La diferencia con application.properties es solo la sintaxis de configuración, ¡y la función y el posicionamiento son exactamente iguales!

Nota: Existe el paquete cn.tedu.springboot en src / test / java. Este nombre de paquete también se determina cuando se crea el proyecto. ¡Todas las clases de prueba unitaria en el proyecto SpringBoot deben colocarse en este paquete o subpaquete! De lo contrario, el entorno Spring no se cargará al realizar pruebas unitarias. En la clase de prueba SpringbootApplicationTests, las dos anotaciones antes de la declaración de declaración de la clase también son las anotaciones que deben agregarse para cada clase de prueba unitaria.

4. Agregue una página web estática al proyecto SpringBoot

Cree index.html en src / main / resources / static. El contenido puede ser diseñado por usted mismo. Una vez completado, inicie el proyecto (ejecute el método main () en la clase SpringbootApplication), abra el navegador y acceda a http: // localhost: 8080 / ¡Puede visitar esta página!

Debido a que index.html es el nombre de archivo de la página de bienvenida predeterminada, no es necesario utilizar explícitamente http: // localhost: 8080 / index.html en la URL al visitarla.

5. Modifique el número de puerto del Tomcat integrado en el proyecto SpringBoot

Agregue la configuración en application.properties en src / main / resources:

server.port=8888

El número de puerto predeterminado del protocolo HTTP es 80. También puede modificar el número de puerto a este valor. Si está utilizando el sistema operativo Linux, debe configurar los permisos relacionados para utilizar el puerto 80.

6. Procesar la solicitud en el proyecto SpringBoot

Cree un controlador de subpaquete en el paquete raíz del proyecto cn.tedu.springboot, cree la clase de controlador HelloController en el subpaquete y agregue la anotación @RestController antes de la clase:

package cn.tedu.springboot.controller;

import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

}

@RestController es equivalente a @Controller + @ResponseBody , es decir: después de agregar esta anotación, la clase actual es la clase del controlador, y todos los métodos para procesar la solicitud en la clase actual son el cuerpo de la respuesta, lo que equivale a agregar antes de cada método de procesamiento de la solicitud @ResponseBody! @RestController no es una anotación exclusiva del proyecto SpringBoot. También se puede usar en proyectos SpringMVC normales, ¡pero debe configurarse por separado!

Nota: El proyecto SpringBoot ha configurado DispatcherServlet de SpringMVC de forma predeterminada, y la ruta asignada es / . Por lo tanto, al desarrollar con SpringBoot, la ruta de solicitud de diseño no necesita usar .do como sufijo. *

Luego, agregue la solicitud de procesamiento en la clase del controlador:

@GetMapping("hello")
public String showHello() {
	return "Hello, <b>SpringBoot</b>!!!";
}

El @GetMapping anterior es equivalente a @RequestMapping (método = RequestMethod.GET), es decir, el método de solicitud de restricción debe ser una solicitud de tipo GET. Además, hay @PostMapping ......

  1. Utilice SpringBoot para desarrollar la función de registro de usuarios

7.1. Desarrollar páginas de inicio

¡El proceso de desarrollo normal debería ser la última página!

Cree una página de registro de usuario en src / main / resources / static.

7.2. Utilizar el controlador para recibir y procesar solicitudes

Para facilitar la recepción de los datos de registro enviados por los usuarios, primero se debe crear una clase de entidad de cn.tedu.springboot.entity.

Cree la clase de controlador cn.tedu.springboot.controller.UserController y agregue @RestController y @RequestMapping ("usuario") antes de la clase de controlador:

@RequestMapping("user")
@RestController
public class UserController {

}

Luego, agregue métodos para recibir y procesar la solicitud:

@PostMapping("reg")
public void reg(User user) {
	// 目前无法确定注册成功与否,暂时使用void作为返回值类型
	
	System.err.println("UserController.reg()");
	System.err.println("\t" + user);
	
	// TODO 将用户数据写入到数据库中
}

En la página de inicio, asegúrese de que la solicitud de registro se envíe a / user / reg. Si es correcta, inicie el proyecto y observe si los datos de registro del usuario se pueden enviar al controlador del lado del servidor.

7.3. Conexión a la base de datos

¡El proyecto SpringBoot no tiene las dependencias requeridas para la programación de base de datos integrada por defecto! Puede agregarlo cuando cree el proyecto, o puede agregar dependencias relacionadas en pom.xml después de que el proyecto se haya creado correctamente.

Las dependencias de MyBatis y MySQL son:

<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.0.1</version>
</dependency>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

Nota: Si agrega dependencias relacionadas con la base de datos en el proyecto SpringBoot, pero no configura la información relacionada con la conexión de la base de datos, se informará un error cuando inicie el proyecto, ¡porque SpringBoot cargará la información relacionada con la base de datos cuando se inicie!

Luego, debe agregar la configuración en application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

Al configurar la conexión de la base de datos, no es necesario que configure el driverClassName, SpringBoot lo encontrará automáticamente en el paquete jar de la conexión de la base de datos.

Después de agregar la configuración anterior, incluso si el valor de configuración es incorrecto, ¡no afectará el inicio del proyecto! Sin embargo, ¡debe verificar si la configuración es correcta a tiempo! Puede intentar obtener la conexión a la base de datos a través de la prueba unitaria. Si puede conectarse, la configuración es correcta. Si no puede conectarse, la configuración es incorrecta o el paquete jar relacionado está dañado.

Escriba y ejecute pruebas unitarias en SpringbootApplicationTests:

@Autowired
private DataSource dataSource;

@Test
public void getConnection() throws SQLException {
	Connection conn = dataSource.getConnection();
	System.err.println(conn);
}

Debido a que la prueba unitaria SpringBoot cargará la configuración y el entorno Spring de todo el proyecto antes de la ejecución, los objetos que se pueden obtener a través de getBean () en el proyecto SpringMVC tradicional se pueden ensamblar automáticamente en el proyecto SpringBoot.

7.4. Insertar datos a través de MyBatis

Cree la interfaz cn.tedu.springboot.mapper.UserMapper y agregue métodos abstractos a la interfaz:

Integer insert(User user);

Luego, ¡debe configurar la ubicación del archivo de interfaz! ¡Puede agregar la anotación @Mapper directamente antes de la declaración de declaración de la interfaz! Al utilizar este enfoque, ¡cada interfaz MyBatis debe agregar esta anotación! También hay otra forma de agregar anotaciones @MapperScan para la configuración antes de comenzar la clase:

@SpringBootApplication
@MapperScan("cn.tedu.springboot.mapper")
public class SpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringbootApplication.class, args);
	}

}

Cree una carpeta llamada mappers en src / main / resources, que se utiliza especialmente para almacenar archivos XML para configurar declaraciones SQL, y copie y pegue el archivo UserMapper.xml en esta carpeta para configurar:

<mapper namespace="cn.tedu.springboot.mapper.UserMapper">

	<insert id="insert"
		useGeneratedKeys="true"
		keyProperty="id">
		INSERT INTO t_user (
			username, password,
			age, phone,
			email, is_delete,
			department_id
		) VALUES (
			#{username}, #{password},
			#{age}, #{phone},
			#{email}, #{isDelete},
			#{departmentId}
		)
	</insert>
	
</mapper>

En el proyecto SpringBoot, aún necesita configurar la ubicación del archivo XML, debe agregar la configuración en application.properties:

mybatis.mapper-locations=classpath:mappers/*.xml

Una vez finalizado, escriba y ejecute pruebas unitarias:

@Autowired
private UserMapper userMapper;

@Test
public void insert() {
	User user = new User();
	user.setUsername("boot");
	user.setPassword("1234");
	Integer rows = userMapper.insert(user);
	System.err.println("rows=" + rows);
}

Para garantizar el "nombre de usuario único", puede verificar si el nombre de usuario se ha registrado antes de que el usuario intente registrarse, luego "consultar los datos del usuario según el nombre de usuario", determinar si el resultado de la consulta es nulo, ¡puede juzgar la respuesta!

Entonces, agregue la interfaz UserMapper.java:

User findByUsername(String username);

Y configure el mapeo SQL en UserMapper.xml:

<select id="findByUsername"
	resultType="cn.tedu.springboot.entity.User">
	SELECT
		*
	FROM
		t_user
	WHERE
		username=#{username}
</select>

Una vez finalizado, aún debe escribir y ejecutar pruebas unitarias:

@Test
public void findByUsername() {
	String username = "root";
	User user = userMapper.findByUsername(username);
	System.err.println(user);
}

Luego, aplique el método anterior al proceso de procesamiento de la solicitud del controlador:

@PostMapping("reg")
public JsonResult reg(User user) {
	System.err.println("UserController.reg()");
	System.err.println("\t" + user);
	
	JsonResult jsonResult = new JsonResult();
	
	// 检查该用户名是否已经被注册
	String username = user.getUsername();
	User result = userMapper.findByUsername(username);
	// 判断查询结果是否为null
	if (result == null) {
		// 将用户数据写入到数据库中
		userMapper.insert(user);
		jsonResult.setState(1);
	} else {
		// 用户名已经被注册
		jsonResult.setState(2);
		jsonResult.setMessage("您尝试注册的用户名(" + username + ")已经被占用!");
	}
	
	return jsonResult;
}

Supongo que te gusta

Origin blog.csdn.net/qq_37669050/article/details/102508588
Recomendado
Clasificación