SpringBoot中使用MySQL存用户信息, 日志的使用
创始人
2024-03-14 17:54:24

SpringBoot中使用MySQL存用户信息

UserController类

package com.tedu.secboot.controller;
import com.tarena.mnmp.api.SendParam;
import com.tedu.secboot.entity.User;
import com.tedu.secboot.util.DBUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Random;@Controller
public class UserController {private static Logger logger = LoggerFactory.getLogger(UserController.class);//导入日志@RequestMapping("/regUser")    /*之前写法public void reg(HttpServletRequest request, HttpServletResponse response){System.out.println("开始处理注册");String username = request.getParameter("username");String password = request.getParameter("password");String nickname = request.getParameter("nickname");String ageStr = request.getParameter("age");int age = Integer.parseInt(ageStr);System.out.println(username+","+password+","+nickname+","+age);}*//*** SpringMVC框架会根据先通过User的无参构造器实例化User* 并利用User对象的属性名去request中获取同名参数并利用User对象上对应属性的set方法将值设置到该属性上。** 因此如果以自己定义的一个对象作为参数时,该对象的类要满足:* 1:属性名与浏览器传递过来的参数名一致* 2:类要有无参公开的构造器* 3:属性有set方法* 注:只要类设计符合JAVA_BEAN设计规范就可以。*/
//    public void reg(User user,HttpServletResponse response){
//        System.out.println(user);
//    }//方法上的参数名要与原request.getParameter()方法传入的字符串内容一致(相当于与表单输入框名字一致)public void reg(String username,String password,String nickname,int age,String phone, HttpServletResponse response){//日志logger.debug("开始处理注册");//debug级别一般记录的是用于跟踪程序执行流程logger.info(username+","+password+","+nickname+","+age+","+phone);//info通常记录程序所用到的数据,当我们获取用户信息时可通过info记录//必要验证工作if(username==null||username.isEmpty()||password==null||password.isEmpty()||nickname==null||nickname.isEmpty()||phone==null||phone.isEmpty()||!phone.matches("[0-9]{11}")){//warn用于记录警告内容。例如:正常注册前端验证后通常不会进到这个if里,进来这里说明用户绕过了前端验证,这里要警告程序员。logger.warn("注册信息验证错误:"+username+","+password+","+nickname+","+age+","+phone);//要求浏览器查看错误提示页面try {response.sendRedirect("/reg_info_error.html");} catch (IOException e) {e.printStackTrace();//error用于记录程序实际出现的错误。logger.error(e.getMessage(),e);}return;}//2/*将该注册用户插入到数据库userinfo表中。插入成功后,响应注册成功页面*/try (Connection conn = DBUtil.getConnection();){String sql1 = "SELECT username FROM userinfo WHERE username=?";PreparedStatement ps = conn.prepareStatement(sql1);ps.setString(1,username);ResultSet rs = ps.executeQuery();if(rs.next()){//结果集若存在记录,该用户已存在。response.sendRedirect("/have_user.html");return;}String sql2 = "INSERT INTO userinfo(username,password,nickname,age) " +"VALUES (?,?,?,?)";ps = conn.prepareStatement(sql2);ps.setString(1,username);ps.setString(2,password);ps.setString(3,nickname);ps.setInt(4,age);int sum = ps.executeUpdate();if(sum>0){response.sendRedirect("/reg_success.html");//发送短信String code = randomCode();//生成验证码System.out.println("验证码:"+code);//创建发送参数对象SendParam param = new SendParam.DefaultSendParam().defaultSendParam(code,phone);//借助Spring提供的RestTemplatenew RestTemplate().postForObject("http://124.71.224.210:8082/send/sms",param,String.class);//向消息中台发送一个HTTP请求}} catch (SQLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}private String randomCode(){Random random = new Random();StringBuilder builder = new StringBuilder(random.nextInt(1000000)+"");for(int i=builder.length();i<6;i++){//随机生成的验证码不足6位时前面补充若干个0达到6位builder.insert(0,"0");}return builder.toString();}}

User

package com.tedu.secboot.entity;/*** 该类的每一个实例用于表示一个注册用户信息*/
public class User {private int id;private String username;private String password;private String nickname;private int age;public User(){}public User(int id, String username, String password, String nickname, int age) {this.id = id;this.username = username;this.password = password;this.nickname = nickname;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", nickname='" + nickname + '\'' +", age=" + age +'}';}
}

日志的使用

Logger记录日志时常用的方法:

  • trace(): trace级别日志
    所有方法都会被记录到日志中
  • debug():debug级别日志
    debug级别一般记录的是用于跟踪程序执行流程
  • info():info级别日志
    info通常记录程序所用到的数据,当我们获取用户信息时可通过info记录
  • warn():warn级别日志
    warn用于记录警告内容。例如:正常注册前端验证后通常不会进到这个if里,进来这里说明用户绕过了前端验证,这里要警告程序员。
  • error():error级别日志
    error用于记录程序实际出现的错误。

日志级别:

 trace

例如:

  • 如果在application.properties下指定的日志级别为:trace
    那么上述所有方法都会被记录到日志中。

  • 如果在application.properties下指定的日志级别为:debug
    那么除了trace记录的不会保留,剩下的都会保留

具体实现

在这里插入图片描述
在这里插入图片描述

更多可以参考这篇文章: 跳转链接

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...