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

市委宣传部部长是什么职级个人网站seo入门

市委宣传部部长是什么职级,个人网站seo入门,销售管理软件有哪些,出生在几月的鸡命最好spring boot 开发简单接口 1. 首先我们先把 package 的结构创建好 package com.2.在pojo放实体类 (实体类中的Data注解是来源于lombok用于省略get set)3.在Mapper 中编写 登录和注册方法4. 在Service中 添加 UserService 重写 mapper 中的方法 &#xff…

spring boot 开发简单接口

        • 1. 首先我们先把 package 的结构创建好 package com.
        • 2.在pojo放实体类 (实体类中的@Data注解是来源于lombok用于省略get set)
        • 3.在Mapper 中编写 登录和注册方法
        • 4. 在Service中 添加 UserService 重写 mapper 中的方法 (降低了代码耦合度)
        • 5. 在 Service 下的 Impl 包中,添加 UserServiceImpl 类来实现 UserService 接口并依赖 UserMapper 接口
        • 6. 在controller中编写登录和注册、查询用户详细信息的接口

springboot 开发用户登录 用户注册 和 获取 用户信息 接口

1. 首先我们先把 package 的结构创建好 package com.
	com/
└── YJZE/├── controller/│   └── ...├── mapper/│   └── ...├── pojo/│   └── ...├── service/│   └── ...└── service/│    └── Impl/│        └── ...└──utils/└──...       
<!-- 需要在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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.3</version></parent><groupId>com.YJZE</groupId><artifactId>big-event</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>big-event</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.34</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>4.4.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies>
</project>
2.在pojo放实体类 (实体类中的@Data注解是来源于lombok用于省略get set)
//放User实体类 用于登录和注册、查询用户信息
package com.YJZE.pojo;import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;import java.time.LocalDateTime;@Data
public class User {private Integer id;//主键IDprivate String username;//用户名@JsonIgnore //此注解用于指示 Jackson 库在将对象序列化为 JSON 时忽略该字段。private String password;//密码private String nickname;//昵称private String email;//邮箱private String userPic;//用户头像地址private LocalDateTime createTime;//创建时间private LocalDateTime updateTime;//更新时间}//放Result实体类 用在请求成功后 中data和message的显示
package com.YJZE.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;//统一响应结果
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Result<T> {private Integer code;//业务状态码  0-成功  1-失败private String message;//提示信息private T data;//响应数据//快速返回操作成功响应结果(带响应数据)public static <E> Result<E> success(E data) {return new Result<>(0, "操作成功", data);}//快速返回操作成功响应结果public static Result success() {return new Result(0, "操作成功", null);}public static Result error(String message) {return new Result(1, message, null);}
}
3.在Mapper 中编写 登录和注册方法
package com.YJZE.mapper;import com.YJZE.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface UserMapper {@Select("select * from user where username = #{username}") //用于注册用户查重 和 登录时校验 passwordUser findByUserName(String username);@Select("insert  into  user(username,password,create_time,update_time)" + "values (#{username},#{password},now(),now())")void add(String username, String password); //注册用户
//    User findByUserName(String username);
}
4. 在Service中 添加 UserService 重写 mapper 中的方法 (降低了代码耦合度)
package com.YJZE.service;import com.YJZE.mapper.UserMapper;
import com.YJZE.pojo.User;
import org.springframework.stereotype.Service;@Service
public interface UserService {//根据用户名查询用户User findByUserName(String username);//注册用户void register(String username, String password);
}
5. 在 Service 下的 Impl 包中,添加 UserServiceImpl 类来实现 UserService 接口并依赖 UserMapper 接口
package com.YJZE.service.Impl;import com.YJZE.mapper.UserMapper;
import com.YJZE.pojo.User;
import com.YJZE.service.UserService;
import com.YJZE.utils.Md5Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic User findByUserName(String username) {User u = userMapper.findByUserName(username);return u;}@Overridepublic void register(String username, String password) {//加密//md5String md5String = Md5Util.getMD5String(password);userMapper.add(username,md5String);//添加}
}
6. 在controller中编写登录和注册、查询用户详细信息的接口
package com.YJZE.controller;import com.YJZE.pojo.Result;
import com.YJZE.pojo.User;
import com.YJZE.service.UserService;
import com.YJZE.utils.JwtUtil;
import com.YJZE.utils.Md5Util;
import jakarta.validation.constraints.Pattern;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.HashMap;
import java.util.Map;/*** 用户控制器*/
@RestController
@RequestMapping("/user") // 设置请求路径前缀为 /user
@Validated // 开启参数校验
public class UserController {@Autowired // 自动注入UserServiceprivate UserService userService;/*** 用户注册接口* @param username 用户名,长度为5-16位,不能包含空格* @param password 密码,长度为5-16位,不能包含空格* @return 注册结果*/@PostMapping("/register")public Result register(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password) {// 查询用户是否存在User user = userService.findByUserName(username);if (user == null) {// 用户不存在,执行注册操作userService.register(username, password);return Result.success(); // 注册成功} else {return Result.error("用户名被占用"); // 用户名已存在}}/*** 用户登录接口* @param username 用户名,长度为5-16位,不能包含空格* @param password 密码,长度为5-16位,不能包含空格* @return 登录结果,包含JWT Token*/@PostMapping("/login")public Result<String> login(@Pattern(regexp = "^\\S{5,16}$") String username, @Pattern(regexp = "^\\S{5,16}$") String password) {User loginUser = userService.findByUserName(username);if (loginUser == null) {return Result.error("用户名错误"); // 用户名不存在}// 验证密码if (Md5Util.getMD5String(password).equals(loginUser.getPassword())) {// 密码正确,生成JWT TokenMap<String, Object> claims = new HashMap<>();claims.put("id", loginUser.getId());claims.put("username", loginUser.getUsername());String token = JwtUtil.genToken(claims);return Result.success(token); // 登录成功,返回Token}return Result.error("密码错误"); // 密码错误}/*** 获取用户信息接口* @param token JWT Token,从请求头Authorization获取* @return 用户信息*/@GetMapping("/userInfo")public Result<User> userinfo(@RequestHeader(name = "Authorization") String token) {// 解析JWT Token获取用户名Map<String, Object> map = JwtUtil.parseToken(token);String username = (String) map.get("username");// 根据用户名查询用户信息User user = userService.findByUserName(username);return Result.success(user); // 返回用户信息}
}
//在utils工具包里面添加 MD5加密密码 和 JWt 用于用户登录后返回token
package com.YJZE.utils;import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;import java.util.Date;
import java.util.Map;public class JwtUtil {private static final String KEY = "itheima";//接收业务数据,生成token并返回public static String genToken(Map<String, Object> claims) {return JWT.create().withClaim("claims", claims).withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)).sign(Algorithm.HMAC256(KEY));}//接收token,验证token,并返回业务数据public static Map<String, Object> parseToken(String token) {return JWT.require(Algorithm.HMAC256(KEY)).build().verify(token).getClaim("claims").asMap();}}package com.YJZE;import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.Claim;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.junit.jupiter.api.Test;import java.util.Date;
import java.util.HashMap;
import java.util.Map;public class JwtTest {@Testpublic  void testGEn(){Map<String,Object> claims = new HashMap<>();claims.put("id",1);claims.put("username","张三");String token = JWT.create().withClaim("user",claims).withExpiresAt(new Date(System.currentTimeMillis())).sign(Algorithm.HMAC256("itheima"));//指定算吗System.out.println(token);}@Testpublic void textParse(){//定义字符串模拟tokenString token =  "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9." +"eyJ1c2VyIjp7I mlkIjoxLCJ1c2VybmFtZSI6IuW8oOS4iSJ9LCJleHAiOjE3NDY4ODM3NzZ9" +".qK-oXtJqEhzdp8Sa0JgSojky_DH_sEBBFyF3Vtv-HOs";JWTVerifier jw = JWT.require(Algorithm.HMAC256("itheima")).build();DecodedJWT decodedJWT = jw.verify(token);Map<String, Claim> claims = decodedJWT.getClaims();System.out.println(claims.get("user"));//如果篡改了头部和载荷的数据 验证事变//token}
}

注意
如有错误请告知
如有侵权请带着截图发邮件
邮箱 1413229255@qq.com

http://www.cadmedia.cn/news/5981.html

相关文章:

  • 公司注册网站需要什么资料中央新闻今日要闻
  • 企业网站建设中图片优化的方法百度百度一下就知道
  • 装修设计网站哪个好用多地优化完善疫情防控措施
  • 深圳网站建设lxhdseo关键词排名工具
  • 甘肃省城乡建设局网站首页重庆seo排
  • 免费网站制作案例佛山企业用seo策略
  • 增城商城网站建设全网推广哪家正宗可靠
  • 吉安永新哪里做网站西安疫情最新通知
  • 新疆伊犁河建设管理局网站培训seo哪家学校好
  • 网站建设长春网络建设推广
  • 网站建设的宣传词桂平seo关键词优化
  • 网站建设要经历哪些步骤重庆网站建设公司
  • 天猫商城网站设计分析今日油价92汽油价格调整最新消息
  • 企业诚信建设网站绍兴seo网站管理
  • wordpress 私有文章seo网站关键词
  • 国际新闻最新消息今天冠状肺炎福州seo推广服务
  • 深圳响应式网站建设哪家好seoshanghai net
  • 南通模板网建站app制作公司
  • 深圳营销型网站建设哪家好广州seo服务
  • 天津品牌网站建设哪个好百度搜索网站排名
  • 增加网站关键词网站seo关键词
  • 百度网站收录链接提交市场营销考试题目及答案2022
  • 河南建设银行官方网站seo的定义
  • 莱阳网站建设网络运营推广具体做什么工作
  • 张店网站建设定制合肥网站推广助理
  • 建各公司网站要多少钱网站优化是什么
  • 机械设计师网课网站seo课程
  • 建设官方网站需要那些人员成都网站建设公司
  • 象刀设计网站怎么把产品推广到各大平台
  • cae毕业设计代做网站竞价托管