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

做外贸网站案例查网站排名

做外贸网站案例,查网站排名,网站暂时关闭怎么做,wordpress 免密码破解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.dtcms.com/wzjs/810910.html

相关文章:

  • html5响应式网站建设平台域名批量查询网站
  • 想做网站运营专员中企动力邮箱登陆首页
  • 校园网站的建设费用如何查看一个网站是不是用h5做的
  • win7 做网站好吗系统中没有安装wordpress
  • 卡片式网站模板深圳创意网站
  • 建网站流程的费用如何做网站title小标图
  • wordpress popup临沂网站优化
  • 做网站建设有哪些公司工业设计公司推荐
  • 电子商务网站开发需要注意问题win系统做网站
  • php是专门做网站的余姚做百度网站建设
  • 网站开发要考什么证织梦律师网站模版
  • 一般网站海报做一张多久在线作图网
  • 公司的官方网站怎么做旅游网站开发方案百度文库
  • 网站后台作用复古网站设计
  • 建设信用交通网站 省服务器域名查询
  • 广州做网站需要多少钱网页制作步骤图文
  • 米定制网的网站是那个公司做关于网站建设维护的创业计划书
  • 网站建设金手指专业犀牛建筑网校
  • 网站开发费用如何账务处理企业营销管理制度
  • 东莞做营销网站建设长春建设厅网站首页
  • 建筑网址大全网站我要建设一个网站
  • 腾讯云网站备案吗西安建设工程网上交易平台
  • 百度自助网站建设网站怎么做留言板块
  • 做网站属于什么技术一级建造师找工作网站
  • 做网站公司郑州汉狮应用网站如何做
  • 建设银行青海省分行招聘网站企业注册官网入口
  • 企业网站设计与规划论文wordpress无法显示中文
  • 企业招聘网站排行榜网上开店教程
  • 经营范围网站建设北京企业建网站优帮云
  • 家教网站如何做北京网站建设是什么意思