tecnología de desarrollo de sistemas
lenguaje java
Java utiliza principalmente la tecnología CORBA y el modelo de seguridad para proteger los datos en las aplicaciones de Internet. También proporciona soporte completo para tecnologías EJB (Enterprise JavaBeans),
API de servlet Java, Java (
páginas del servidor Java) y XML. Java es un lenguaje de programación de computadoras con tres características principales: encapsulación, herencia y polimorfismo, y se usa ampliamente en el desarrollo de aplicaciones web de mensajería y aplicaciones móviles. La diferencia entre el lenguaje Java y los compiladores generales y las traducciones literales es que Java primero convierte el código fuente en código de bytes y luego lo convierte en un archivo ejecutable para la JVM, que puede ejecutarse en una variedad de JVM diferentes. Se consigue por tanto su carácter multiplataforma. Si bien esto hizo que Java fuera muy lento en sus inicios, ha mejorado a medida que Java se desarrolló.
Arquitectura B/S
El sistema B/S se puede utilizar a través de una computadora con acceso a Internet. Su mayor ventaja es que no requiere la instalación de software especial. Primero, el navegador envía una solicitud al servidor, luego el servidor procesa la solicitud y devuelve la información al navegador. No es necesario volver a acceder y calcular los datos, solo necesita encargarse de mostrar los datos para reducir los requisitos. Si el cliente es como una "persona flaca", el servidor se volverá cada vez más "gordo". En comparación con la arquitectura C/S, la mayor diferencia entre la arquitectura B/S y la arquitectura C/S es que el software de aplicación del sistema B/S utiliza un navegador web como plataforma para interactuar con los usuarios, mientras que C/S requiere el desarrollo de aplicaciones dedicadas.
Marco SpringBoot
SpringBoot es un nuevo marco ligero de código abierto. Diseñado en base a Spring 4.0, no solo hereda las excelentes características originales del marco Spring, sino que también simplifica aún más todo el proceso de construcción y desarrollo de aplicaciones Spring al simplificar los archivos de configuración. Además, en el Spring original, a medida que el número de paquetes jar importados aumentaba con la expansión del proyecto, surgían problemas de compatibilidad entre las versiones del paquete jar. En este momento, SpringBoot integró una gran cantidad de marcos para generar conflictos entre las versiones del paquete dependiente. y los problemas de inestabilidad de referencia están bien resueltos.
SpringBoot puede considerarse como una versión mejorada de Spring, pero en esencia todas son tecnologías relacionadas con Spring. Con estos excelentes marcos de código abierto, los programadores obtendrán el doble de resultado con la mitad del esfuerzo durante el proceso de desarrollo.
base de datos mysql
El lenguaje de Mysql no está estructurado y los mensajeros y los estudiantes pueden trabajar con datos. MySQL ha atraído mucha atención por su velocidad, confiabilidad y adaptabilidad. La mayoría de la gente está de acuerdo en que MySQL es la mejor opción para gestionar contenido sin procesamiento transaccional. Y debido a que el lenguaje y la estructura de Mysql son relativamente simples, pero sus funciones y la cantidad de información almacenada son muy poderosas, se ha utilizado ampliamente.
El papel de la base de datos Mysql en el proceso de programación es muy extenso, lo que brinda comodidad a los mensajeros y estudiantes para la consulta de datos. La aplicación de la base de datos Mysql es muy flexible y potente, por lo que sólo se necesita un pequeño fragmento de código para implementar una determinada función, a diferencia de otros programas que requieren escribir grandes fragmentos de código. En términos generales, el lenguaje de la base de datos Mysql es relativamente más simple.
El análisis de procesos de datos es principalmente un depósito de almacenamiento de datos, que se realiza en una computadora en lugar de en un depósito de la vida real. Los datos se almacenan en un formato fijo, no de manera desordenada, la definición es: tienen un formato fijo durante mucho tiempo y se pueden almacenar en la memoria compartida de la computadora. La gestión de bases de datos incluye principalmente el almacenamiento, modificación y adición de datos, y el establecimiento de tablas de datos. Para garantizar el funcionamiento normal de los datos del sistema, algunos procesadores capaces pueden gestionarlos sin necesidad de que lo manejen profesionales. El establecimiento de la tabla de datos puede ajustar los datos en la tabla de datos, recombinarlos y reconstruirlos para garantizar la seguridad de los datos. Debido a las potentes funciones de la base de datos, el desarrollo de este sistema utiliza principalmente Mysql para la gestión de datos.
análisis del sistema
Análisis de procesos del sistema.
Diagrama de flujo de inicio de sesión del sistema, como se muestra en la figura:
Agregar diagrama de flujo de información, como se muestra en la figura:
Eliminar diagrama de flujo de información, como se muestra en la figura:
Captura de pantalla de función
Página de registro de inicio de sesión
Página de inicio de sesión del sistema
Página de registro del sistema
Módulo de funciones de administrador
Lo primero que aparece es la página de inicio después de que el administrador inicia sesión.
En el centro personal podemos modificar nuestra contraseña y ver nuestra información personal.
En la gestión de información de anuncios podemos ver el título, tipo, imagen, lanzamiento. fecha, etc. de la información del anuncio. información y podemos eliminar, modificar y otras operaciones en la información correspondiente.
En la página de administración de usuarios, podemos ver el nombre de usuario del usuario, el nombre y otra información relacionada, y podemos modificar, eliminar y otras operaciones en la información del usuario.
En la página de administración de materiales, podemos Puede ver el nombre, la imagen y otra información relacionada de los materiales, y puede eliminar, modificar y exportar la información del material. En el almacenamiento de
materiales página de administración, podemos ver el número de almacén, el nombre, la clasificación y otra información de los materiales, y puede realizar operaciones relacionadas
en En la página de solicitud de material, podemos ver la información del material que el usuario solicitó y podemos realizar las operaciones correspondientes.
En la página de gestión de salida de material, podemos ver el número del usuario y otra información relacionada y podemos realizar las operaciones correspondientes.
Código relacionado
Configuración de base de datos
# Tomcat
server:
tomcat:
uri-encoding: UTF-8
port: 8080
servlet:
context-path: /springbootr1tjf
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springbootr1tjf?useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8
username: root
password: 123456
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
# url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=springbootr1tjf
# username: sa
# password: 123456
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
resources:
static-locations: classpath:static/,file:static/
#mybatis
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.entity
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 1
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器
refresh-mapper: true
#逻辑删除配置
logic-delete-value: -1
logic-not-delete-value: 0
#自定义SQL注入器
sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
call-setters-on-nulls: true
#springboot 项目mybatis plus 设置 jdbcTypeForNull (oracle数据库需配置JdbcType.NULL, 默认是Other)
jdbc-type-for-null: 'null'
Controlador
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
Capa empresarial (servicio)
package com.service;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.service.IService;
import com.entity.UserEntity;
import com.utils.PageUtils;
/**
* 系统用户
*/
public interface UserService extends IService<UserEntity> {
PageUtils queryPage(Map<String, Object> params);
List<UserEntity> selectListView(Wrapper<UserEntity> wrapper);
PageUtils queryPage(Map<String, Object> params,Wrapper<UserEntity> wrapper);
}
Capa de acceso a datos (Dao)
package com.dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.entity.UserEntity;
/**
* 用户
*/
public interface UserDao extends BaseMapper<UserEntity> {
List<UserEntity> selectListView(@Param("ew") Wrapper<UserEntity> wrapper);
List<UserEntity> selectListView(Pagination page,@Param("ew") Wrapper<UserEntity> wrapper);
}