当前位置: 首页 > news >正文

做网站怎么打空格wordpress标签页调用

做网站怎么打空格,wordpress标签页调用,建设银行管方网站,南宁seo网络推广创建文件的目录结构 利用这个界面创建 序号 名称 说明 1 SEMS maven父工程#xff0c;统一管理依赖版本#xff0c;聚合其他子模块 2 sems-common 子模块#xff0c;存放公共类#xff0c;例如#xff1a;工具类、常量类、异常类等 3 sems-pojo 子模块#x…创建文件的目录结构 利用这个界面创建 序号 名称 说明 1 SEMS maven父工程统一管理依赖版本聚合其他子模块 2 sems-common 子模块存放公共类例如工具类、常量类、异常类等 3 sems-pojo 子模块存放实体类、VO、DTO等 4 sems-server 子模块后端服务存放配置文件、Controller、Service、Mapper等 配置pom文件 文件路径SEMS\pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.7.3/version/parentgroupIdcom.ljc/groupIdartifactIdSEMS/artifactIdpackagingpom/packagingversion0.0.1-SNAPSHOT/versionmodulesmodulesems-common/modulemodulesems-pojo/modulemodulesems-server/module/modules!--它定义了一系列项目依赖的版本号--propertiesmybatis.spring2.2.0/mybatis.springlombok1.18.20/lombokfastjson1.2.76/fastjsoncommons.lang2.6/commons.langdruid1.2.1/druidpagehelper1.3.0/pagehelperaliyun.sdk.oss3.10.2/aliyun.sdk.ossknife4j3.0.2/knife4jaspectj1.9.4/aspectjjjwt0.9.1/jjwtjaxb-api2.3.1/jaxb-apipoi3.16/poi/propertiesdependencyManagementdependencies!--mybatis的依赖--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.spring}/version/dependency!--Lombok 是一个 Java 库用于自动化生成如 getter、setter、toString 等方法--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok}/version/dependency!--一个 Java 语言编写的高性能功能完善的 JSON 库--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion${fastjson}/version/dependency!--一个包含大量静态方法的库用于处理 Java 核心 API 中没有的常用功能--dependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion${commons.lang}/version/dependency!--阿里巴巴开源的数据库连接池--dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid}/version/dependency!--MyBatis 分页插件--dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactIdversion${pagehelper}/version/dependency!--Swagger 的增强 UI 实现用于 API 文档生成--dependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactIdversion${knife4j}/version/dependency!--AspectJ 是一个面向切面的编程AOP框架--dependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion${aspectj}/version/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactIdversion${aspectj}/version/dependency!--Java JWTJSON Web Tokens库用于生成和解析 JWT 令牌--dependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactIdversion${jjwt}/version/dependency!--阿里云对象存储服务OSS的 Java SDK--dependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactIdversion${aliyun.sdk.oss}/version/dependency!--用于将 Java 类映射到 XML 表示--dependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactIdversion${jaxb-api}/version/dependency!-- poi --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion${poi}/version/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion${poi}/version/dependency/dependencies/dependencyManagement /project SEMS\sems-server\pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.ljc/groupIdartifactIdSEMS/artifactIdversion0.0.1-SNAPSHOT/version/parentartifactIdsems-server/artifactIddependenciesdependencygroupIdcom.ljc/groupIdartifactIdsems-common/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdcom.ljc/groupIdartifactIdsems-pojo/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdscopecompile/scope/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactId/dependencydependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper-spring-boot-starter/artifactId/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactId/dependencydependencygroupIdorg.aspectj/groupIdartifactIdaspectjweaver/artifactId/dependencydependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-websocket/artifactId/dependencydependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactId/dependency!-- poi --dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactId/dependencydependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project SEMS\sems-pojo\pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.ljc/groupIdartifactIdSEMS/artifactIdversion0.0.1-SNAPSHOT/version/parentartifactIdsems-pojo/artifactIddependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.9.2/version/dependencydependencygroupIdcom.github.xiaoymin/groupIdartifactIdknife4j-spring-boot-starter/artifactId/dependency/dependencies /projectSEMS\sems-common\pom.xml ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.ljc/groupIdartifactIdSEMS/artifactIdversion0.0.1-SNAPSHOT/version/parentartifactIdsems-common/artifactIddependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactId/dependencydependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-json/artifactId/dependencydependencygroupIdio.jsonwebtoken/groupIdartifactIdjjwt/artifactId/dependency!--支持配置属性类yml文件中可以提示配置项--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdcom.aliyun.oss/groupIdartifactIdaliyun-sdk-oss/artifactId/dependencydependencygroupIdjavax.xml.bind/groupIdartifactIdjaxb-api/artifactId/dependency!--微信支付--dependencygroupIdcom.github.wechatpay-apiv3/groupIdartifactIdwechatpay-apache-httpclient/artifactIdversion0.4.9/version/dependency/dependencies /project配置好后需要点击这个编译一下显示成功才可继续后面的 配置git环境上传到仓库反之代码丢失 在各自对应的结构下构建相应的目录结构 名称 说明 constant 存放相关常量类 context 存放上下文类 enumeration 项目的枚举类存储 exception 存放自定义异常类 json 处理json转换的类 properties 存放SpringBoot相关的配置属性类 result 返回结果类的封装 utils 常用工具类 名称 说明 Entity 实体通常和数据库中的表对应 DTO 数据传输对象通常用于程序中各层之间传递数据 VO 视图对象为前端展示数据提供的对象 POJO 普通Java对象只有属性和对应的getter和setter 名称 说明 config 存放配置类 controller 存放controller类 interceptor 存放拦截器类 mapper 存放mapper接口 service 存放service类 SemsApplication 启动类 配置application.yml文件 sems-server/src/main/resources/application.yml server:port: 8080spring:profiles:active: devmain:allow-circular-references: truedatasource:druid:driver-class-name: ${ljc.datasource.driver-class-name}url: jdbc:mysql://${ljc.datasource.host}:${ljc.datasource.port}/${ljc.datasource.database}?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf-8zeroDateTimeBehaviorconvertToNulluseSSLfalseallowPublicKeyRetrievaltrueusername: ${ljc.datasource.username}password: ${ljc.datasource.password}mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.ljc.entityconfiguration:#开启驼峰命名map-underscore-to-camel-case: truelogging:level:com:sky:mapper: debugservice: infocontroller: infoljc:jwt:# 设置jwt签名加密时使用的秘钥admin-secret-key: kussm# 设置jwt过期时间admin-ttl: 7200000# 设置前端传递过来的令牌名称admin-token-name: tokensems-server/src/main/resources/application-dev.yml ljc:datasource:driver-class-name: com.mysql.cj.jdbc.Driverhost: localhostport: 3306database: semsusername: rootpassword: 8888 编写一些基础代码 1. 全局异常处理器处理项目中抛出的业务异常 GlobalExceptionHandler(全局异常处理器) sems-server\src\main\java\com\ljc\handler\GlobalExceptionHandler.java package com.ljc.handler;import com.ljc.exception.BaseException; import com.ljc.result.Result; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice;/*** 全局异常处理器处理项目中抛出的业务异常*/ RestControllerAdvice Slf4j public class GlobalExceptionHandler {/*** 捕获业务异常* param ex* return*/ExceptionHandlerpublic Result exceptionHandler(BaseException ex){log.error(异常信息{}, ex.getMessage());return Result.error(ex.getMessage());}}同时创建相关代码 BaseException(业务异常) sems-common\src\main\java\com\ljc\exception\BaseException.java package com.ljc.exception;/*** 业务异常*/ public class BaseException extends RuntimeException {public BaseException() {}public BaseException(String msg) {super(msg);}}Result(后端统一返回结果) sems-common\src\main\java\com\ljc\result\Result.java package com.ljc.result;import lombok.Data;import java.io.Serializable;/*** 后端统一返回结果* param T*/ Data public class ResultT implements Serializable {private Integer code; //编码1成功0和其它数字为失败private String msg; //错误信息private T data; //数据public static T ResultT success() {ResultT result new ResultT();result.code 1;return result;}public static T ResultT success(T object) {ResultT result new ResultT();result.data object;result.code 1;return result;}public static T ResultT error(String msg) {Result result new Result();result.msg msg;result.code 0;return result;}}2. 配置类注册web层相关组件JWT 注册自定义拦截器jwt 通过knife4j生成接口文档 设置静态资源映射 WebMvcConfiguration配置类注册web层相关组件 sems-server\src\main\java\com\ljc\config\WebMvcConfiguration.java package com.ljc.config;import com.ljc.interceptor.JwtTokenAdminInterceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket;/*** 配置类注册web层相关组件*/ Configuration Slf4j public class WebMvcConfiguration extends WebMvcConfigurationSupport {Autowiredprivate JwtTokenAdminInterceptor jwtTokenAdminInterceptor;/*** 注册自定义拦截器** param registry*/protected void addInterceptors(InterceptorRegistry registry) {log.info(开始注册自定义拦截器...);registry.addInterceptor(jwtTokenAdminInterceptor).addPathPatterns(/admin/**).excludePathPatterns(/admin/student/login);}/*** 通过knife4j生成接口文档* return*/Beanpublic Docket docket() {ApiInfo apiInfo new ApiInfoBuilder().title(体育器材项目接口文档).version(1.0).description(体育器材项目接口文档).build();Docket docket new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage(com.ljc.controller)).paths(PathSelectors.any()).build();return docket;}/*** 设置静态资源映射* param registry*/protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(/doc.html).addResourceLocations(classpath:/META-INF/resources/);registry.addResourceHandler(/webjars/**).addResourceLocations(classpath:/META-INF/resources/webjars/);} }3. 相关联的jwt令牌校验的拦截器 JwtTokenAdminInterceptor sems-server\src\main\java\com\ljc\interceptor\JwtTokenAdminInterceptor.java package com.ljc.interceptor;import com.ljc.constant.JwtClaimsConstant; import com.ljc.properties.JwtProperties; import com.ljc.utils.JwtUtil; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** jwt令牌校验的拦截器*/ Component Slf4j public class JwtTokenAdminInterceptor implements HandlerInterceptor {Autowiredprivate JwtProperties jwtProperties;/*** 校验jwt** param request* param response* param handler* return* throws Exception*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//判断当前拦截到的是Controller的方法还是其他资源if (!(handler instanceof HandlerMethod)) {//当前拦截到的不是动态方法直接放行return true;}//1、从请求头中获取令牌String token request.getHeader(jwtProperties.getAdminTokenName());//2、校验令牌try {log.info(jwt校验:{}, token);Claims claims JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(), token);Long empId Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());log.info(当前员工id, empId);//3、通过放行return true;} catch (Exception ex) {//4、不通过响应401状态码response.setStatus(401);return false;}} }4. 常量类后面用 JwtClaimsConstant sems-common/src/main/java/com/ljc/constant/JwtClaimsConstant.java package com.ljc.constant;public class JwtClaimsConstant {public static final String EMP_ID empId;public static final String USER_ID userId;public static final String PHONE phone;public static final String USERNAME username;public static final String NAME name;}MessageConstant sems-common/src/main/java/com/ljc/constant/MessageConstant.java package com.ljc.constant;/*** 信息提示常量类*/ public class MessageConstant {public static final String PASSWORD_ERROR 密码错误;public static final String ACCOUNT_NOT_FOUND 账号不存在;public static final String ACCOUNT_LOCKED 账号被锁定;public static final String UNKNOWN_ERROR 未知错误;public static final String USER_NOT_LOGIN 用户未登录;public static final String CATEGORY_BE_RELATED_BY_SETMEAL 当前分类关联了套餐,不能删除;public static final String CATEGORY_BE_RELATED_BY_DISH 当前分类关联了菜品,不能删除;public static final String SHOPPING_CART_IS_NULL 购物车数据为空不能下单;public static final String ADDRESS_BOOK_IS_NULL 用户地址为空不能下单;public static final String LOGIN_FAILED 登录失败;public static final String UPLOAD_FAILED 文件上传失败;public static final String SETMEAL_ENABLE_FAILED 套餐内包含未启售菜品无法启售;public static final String PASSWORD_EDIT_FAILED 密码修改失败;public static final String DISH_ON_SALE 起售中的菜品不能删除;public static final String SETMEAL_ON_SALE 起售中的套餐不能删除;public static final String DISH_BE_RELATED_BY_SETMEAL 当前菜品关联了套餐,不能删除;public static final String ORDER_STATUS_ERROR 订单状态错误;public static final String ORDER_NOT_FOUND 订单不存在;}StatusConstant sems-common/src/main/java/com/ljc/constant/StatusConstant.java package com.ljc.constant;/*** 状态常量启用或者禁用*/ public class StatusConstant {//启用public static final Integer ENABLE 1;//禁用public static final Integer DISABLE 0; }5. 异常类 AccountLockedException sems-common/src/main/java/com/ljc/exception/AccountLockedException.java package com.ljc.exception;/*** 账号被锁定异常*/ public class AccountLockedException extends BaseException {public AccountLockedException() {}public AccountLockedException(String msg) {super(msg);}}AccountNotFoundException sems-common/src/main/java/com/ljc/exception/AccountNotFoundException.java package com.ljc.exception;/*** 账号不存在异常*/ public class AccountNotFoundException extends BaseException {public AccountNotFoundException() {}public AccountNotFoundException(String msg) {super(msg);}}PasswordErrorException sems-common/src/main/java/com/ljc/exception/PasswordErrorException.java package com.ljc.exception;/*** 密码错误异常*/ public class PasswordErrorException extends BaseException {public PasswordErrorException() {}public PasswordErrorException(String msg) {super(msg);}}6. 配置类 JwtProperties sems-common/src/main/java/com/ljc/properties/JwtProperties.java package com.ljc.properties;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component;Component ConfigurationProperties(prefix ljc.jwt) Data public class JwtProperties {/*** 管理端员工生成jwt令牌相关配置*/private String adminSecretKey;private long adminTtl;private String adminTokenName;/*** 用户端微信用户生成jwt令牌相关配置*/private String userSecretKey;private long userTtl;private String userTokenName;}7. 实用工具 JwtUtil生成jwt sems-common/src/main/java/com/ljc/utils/JwtUtil.java package com.ljc.utils;import io.jsonwebtoken.Claims; import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm;import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.Map;public class JwtUtil {/*** 生成jwt* 使用Hs256算法, 私匙使用固定秘钥** param secretKey jwt秘钥* param ttlMillis jwt过期时间(毫秒)* param claims 设置的信息* return*/public static String createJWT(String secretKey, long ttlMillis, MapString, Object claims) {// 指定签名的时候使用的签名算法也就是header那部分SignatureAlgorithm signatureAlgorithm SignatureAlgorithm.HS256;// 生成JWT的时间long expMillis System.currentTimeMillis() ttlMillis;Date exp new Date(expMillis);// 设置jwt的bodyJwtBuilder builder Jwts.builder()// 如果有私有声明一定要先设置这个自己创建的私有的声明这个是给builder的claim赋值一旦写在标准的声明赋值之后就是覆盖了那些标准的声明的.setClaims(claims)// 设置签名使用的签名算法和签名使用的秘钥.signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))// 设置过期时间.setExpiration(exp);return builder.compact();}/*** Token解密** param secretKey jwt秘钥 此秘钥一定要保留好在服务端, 不能暴露出去, 否则sign就可以被伪造, 如果对接多个客户端建议改造成多个* param token 加密后的token* return*/public static Claims parseJWT(String secretKey, String token) {// 得到DefaultJwtParserClaims claims Jwts.parser()// 设置签名的秘钥.setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))// 设置需要解析的jwt.parseClaimsJws(token).getBody();return claims;}}8. 阶段效果展示 现在就可以开始运行代码了 SemsApplication sems-server/src/main/java/com/ljc/SemsApplication.java package com.ljc;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.transaction.annotation.EnableTransactionManagement;SpringBootApplication EnableTransactionManagement //开启注解方式的事务管理 Slf4j public class SemsApplication {public static void main(String[] args) {SpringApplication.run(SemsApplication.class, args);log.info(server started);} }打开浏览器输入http://localhost:8080/doc.html 可以看到通过knife4j生成的初步接口文档后面慢慢完善接口 学生管理--登录 接口设计 请求路径/admin/student/login 请求方式POST 设计数据库 student表为学生表用于存储学生信息。具体表结构如下 字段名 数据类型 说明 备注 id bigint 主键 自增 name varchar(32) 姓名 username varchar(32) 用户名 唯一 password varchar(64) 密码 phone varchar(11) 手机号 sex varchar(2) 性别 id_number varchar(18) 身份证号 status int 账号状态 1正常 0锁定 create_time datetime 创建时间 update_time datetime 最后修改时间 create_user bigint 创建人id update_user bigint 最后修改人id sql语句 DROP TABLE IF EXISTS student; CREATE TABLE employee (id bigint NOT NULL AUTO_INCREMENT COMMENT 主键,name varchar(32) COLLATE utf8_bin NOT NULL COMMENT 姓名,username varchar(32) COLLATE utf8_bin NOT NULL COMMENT 用户名,password varchar(64) COLLATE utf8_bin NOT NULL COMMENT 密码,phone varchar(11) COLLATE utf8_bin NOT NULL COMMENT 手机号,sex varchar(2) COLLATE utf8_bin NOT NULL COMMENT 性别,id_number varchar(18) COLLATE utf8_bin NOT NULL COMMENT 身份证号,status int NOT NULL DEFAULT 1 COMMENT 状态 0:禁用1:启用,create_time datetime DEFAULT NULL COMMENT 创建时间,update_time datetime DEFAULT NULL COMMENT 更新时间,create_user bigint DEFAULT NULL COMMENT 创建人,update_user bigint DEFAULT NULL COMMENT 修改人,PRIMARY KEY (id),UNIQUE KEY idx_username (username) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8mb3 COLLATEutf8_bin COMMENT员工信息;INSERT INTO student VALUES (1,管理员,admin,123456,13812312312,1,110101199001010047,1,2022-02-15 15:51:20,2022-02-17 09:16:20,10,1);设计接收和回传数据的DTO和VO结构以及和数据库对应的entity实体类 Student sems-pojo/src/main/java/com/ljc/entity/Student.java package com.ljc.entity;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.time.LocalDateTime;Data Builder NoArgsConstructor AllArgsConstructor public class Student implements Serializable {private static final long serialVersionUID 1L;private Long id;private String username;private String name;private String password;private String phone;private String sex;private String idNumber;private Integer status;//JsonFormat(pattern yyyy-MM-dd HH:mm:ss)private LocalDateTime createTime;//JsonFormat(pattern yyyy-MM-dd HH:mm:ss)private LocalDateTime updateTime;private Long createUser;private Long updateUser;}StudentLoginDTO sems-pojo/src/main/java/com/ljc/dto/StudentLoginDTO.java package com.ljc.dto;import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data;import java.io.Serializable;Data ApiModel(description 学生登录时传递的数据模型) public class StudentLoginDTO implements Serializable {ApiModelProperty(用户名)private String username;ApiModelProperty(密码)private String password; }StudentLoginVO sems-pojo/src/main/java/com/ljc/vo/StudentLoginVO.java package com.ljc.vo;import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;Data Builder NoArgsConstructor AllArgsConstructor ApiModel(description 学生登录返回的数据格式) public class StudentLoginVO implements Serializable {ApiModelProperty(主键值)private Long id;ApiModelProperty(用户名)private String userName;ApiModelProperty(姓名)private String name;ApiModelProperty(jwt令牌)private String token;}设计真正业务的代码 controller层-StudentController sems-server/src/main/java/com/ljc/controller/student/StudentController.java package com.ljc.controller.student;import com.ljc.constant.JwtClaimsConstant; import com.ljc.dto.StudentLoginDTO; import com.ljc.entity.Student; import com.ljc.properties.JwtProperties; import com.ljc.result.Result; import com.ljc.service.StudentService; import com.ljc.utils.JwtUtil; import com.ljc.vo.StudentLoginVO;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; 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.RestController;import java.util.HashMap; import java.util.Map;RestController RequestMapping(/admin/student) Slf4j public class StudentController {Autowiredprivate StudentService studentService;Autowiredprivate JwtProperties jwtProperties;/*** 登录** param studentLoginDTO* return*/PostMapping(/login)public ResultStudentLoginVO login(RequestBody StudentLoginDTO studentLoginDTO) {log.info(学生登录{}, studentLoginDTO);Student student studentService.login(studentLoginDTO);//登录成功后生成jwt令牌MapString, Object claims new HashMap();claims.put(JwtClaimsConstant.EMP_ID, student.getId());String token JwtUtil.createJWT(jwtProperties.getAdminSecretKey(),jwtProperties.getAdminTtl(),claims);StudentLoginVO studentLoginVO StudentLoginVO.builder().id(student.getId()).userName(student.getUsername()).name(student.getName()).token(token).build();return Result.success(studentLoginVO);}/*** 退出** return*/PostMapping(/logout)public ResultString logout() {return Result.success();} }service层-StudentService sems-server/src/main/java/com/ljc/service/StudentService.java package com.ljc.service;import com.ljc.dto.StudentLoginDTO; import com.ljc.entity.Student;public interface StudentService {/*** 学生登录* param studentLoginDTO* return*/Student login(StudentLoginDTO studentLoginDTO);}service层-StudentServiceImpl sems-server/src/main/java/com/ljc/service/impl/StudentServiceImpl.java package com.ljc.service.impl;import com.ljc.constant.MessageConstant; import com.ljc.constant.StatusConstant; import com.ljc.dto.StudentLoginDTO; import com.ljc.entity.Student; import com.ljc.exception.AccountLockedException; import com.ljc.exception.AccountNotFoundException; import com.ljc.exception.PasswordErrorException; import com.ljc.mapper.StudentMapper; import com.ljc.service.StudentService;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class StudentServiceImpl implements StudentService {Autowiredprivate StudentMapper studentMapper;/*** 学生登录** param studentLoginDTO* return*/public Student login(StudentLoginDTO studentLoginDTO) {String username studentLoginDTO.getUsername();String password studentLoginDTO.getPassword();//1、根据用户名查询数据库中的数据Student student studentMapper.getByUsername(username);//2、处理各种异常情况用户名不存在、密码不对、账号被锁定if (student null) {//账号不存在throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}//密码比对// TODO 后期需要进行md5加密然后再进行比对if (!password.equals(student.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (student.getStatus() StatusConstant.DISABLE) {//账号被锁定throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}//3、返回实体对象return student;}}mapper层-StudentMapper sems-server/src/main/java/com/ljc/mapper/StudentMapper.java package com.ljc.mapper;import com.ljc.entity.Student; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;Mapper public interface StudentMapper {/*** 根据用户名查询学生* param username* return*/Select(select * from student where username #{username})Student getByUsername(String username);}阶段结果展示 通过swagger测试 注意我在运行中出现的一些问题 基本就没什么问题了。 这样登录功能就搞定了 目前为止整体结构 完善登录功能 学生表中的密码是明文存储安全性太低 使用MD5加密方式对明文密码加密 ”123456“进行MD5加密后结果为 e10adc3949ba59abbe56e057f20f883e 进入数据库修改密码为这个 修改代码 完整代码 sems-server/src/main/java/com/ljc/service/impl/StudentServiceImpl.java package com.ljc.service.impl;import com.ljc.constant.MessageConstant; import com.ljc.constant.StatusConstant; import com.ljc.dto.StudentLoginDTO; import com.ljc.entity.Student; import com.ljc.exception.AccountLockedException; import com.ljc.exception.AccountNotFoundException; import com.ljc.exception.PasswordErrorException; import com.ljc.mapper.StudentMapper; import com.ljc.service.StudentService;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils;Service public class StudentServiceImpl implements StudentService {Autowiredprivate StudentMapper studentMapper;/*** 学生登录** param studentLoginDTO* return*/public Student login(StudentLoginDTO studentLoginDTO) {String username studentLoginDTO.getUsername();String password studentLoginDTO.getPassword();//1、根据用户名查询数据库中的数据Student student studentMapper.getByUsername(username);//2、处理各种异常情况用户名不存在、密码不对、账号被锁定if (student null) {//账号不存在throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}//密码比对// 进行md5加密然后再进行比对password DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(student.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (student.getStatus() StatusConstant.DISABLE) {//账号被锁定throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}//3、返回实体对象return student;}}初步完成这样
http://www.hkea.cn/news/14326266/

相关文章:

  • 网站建设销售找客户话术wordpress评论框加
  • 网站建设与管理个人职业生涯规划书郑州做网站推广的公司哪家好
  • 怎么自己制作微信小程序seo电商运营是什么意思
  • c2c网站系统中企动力公司是做什么的
  • 网站备案 拨测北京网站制作人才
  • 做自媒体常用的图片网站企业模板之家
  • 岳阳网站开发报价seo资源网站 排名
  • 嘉兴做网站的免费的短视频推荐app
  • 网站设计收费明细表微信做网站的弊端
  • 做网站怎么保证商品是正品北京网站制作出名 乐云践新
  • 天津网站建设哪家公司好成都市住房与城乡建设厅网站
  • 简述网站的四种常见结构商贸公司网站建设极致发烧
  • 阿里巴巴网站官网建筑木模板厂家
  • 网站后台程序怎么做刘家窑做网站的公司
  • app做好了网站怎么做贾汪区住房和城乡建设局网站
  • 定制旅游网站开发wordpress适合下载站的主题
  • 注册网站流程及费用海南新政策最新
  • 重庆网站建设专家游戏推广赚佣金的平台
  • 查找网站开发者网站备案信息可以更改吗
  • 网站优化 英文网页制作与设计
  • 手机网站关键词seo开发个网站需要多少钱
  • 呼市建设官方网站ps切片做网站
  • 哪个网站建站比较好公关公司都有哪些职位
  • 中国少数民族网站建设免费免费建网站
  • 新强生产建设兵团网站php网站配置说明
  • 网站服务器证书有问题重庆专业企业建设网站
  • 网站使用方法网页设计与制作教程英语
  • 猪八戒设计网站官网seo软件下载
  • 做公司网站联系公司南昌地宝网首页
  • 网站建站平台源码服务周到的上海网站建设公