2025-1-21-简易登录功能的实现

前端

我们需要两个输入框,一个登录按钮,像这样(为了好看,用的是element-ui的组件,使用的话需要先去下载文件引用)

代码如下

系统
      <el-form ref="form" :model="user" label-width="80px">
      <el-form-item label="用户名">
          <el-input v-model="user.userID" style="width: 30%; margin: 0 auto;"></el-input>
      </el-form-item>
      <el-form-item label="密码">
          <el-input v-model="user.password" style="width: 30%; margin: 0 auto;"></el-input>
      </el-form-item>
      <el-form-item>
          <el-button type="primary" @click="dy">立即登录</el-button>
          <el-button @click="zc">注册</el-button>
      </el-form-item>
  </el-form>

然后呢我们就需要将数据传回到后端去了,这里用的是vue+axios将储存有我们输入两个数据的user以post方式传输,根据传回来的数据来进行不同的操作,我这里是成功登入就将界面展示,同时储存相应的数据,也可以是临时储存一下,转换到另一个主界面html中,失败则是不转换,就出现两条警告消息

   dy(){
        var _this = this;
        axios({
          method: 'post',
          url: 'http://localhost:8080/dy',
          data:_this.user
          }).then((res) => {
            if(Array.isArray(res.data) && res.data.length > 0&&res.data!='fail'){
              _this.isShowDy=false;
              _this.isShow=true;
              _this.user=res.data[0];
              _this.$message({
                message: '登录成功',
                type: 'success'
              });
              setTimeout(() => {
                _this.$message({
                  message: '欢迎您,' + _this.user.userID,
                  type: 'success'
                });
              }, 3000);
            }else if(res.data=='fail'){
              _this.$message({
                message: '登录失败',
                type: 'warning'
              });
              setTimeout(() => {
                _this.$message({
                  message: '您可能还未注册或账号密码错误',
                  type: 'warning'
                });
              }, 3000);
            }
        })
      },

后端代码因为是用的springboot的模型,在新建时类型就选择了maven,依赖项选择了我们的spring web,lombok,MyBatis Framework,MySQL Driver,连接数据库什么的就不说了,在这里提一下依赖的目的呢,主要是现在我们不注意版本使用lombok的时候会有不兼容问题,导致使用@Data的getter跟setter方法不能取到值,如果也有这种问题把设置里的注解编译器换成从项目类路径获取,或者自己从网上查找解决

跳过构造结构,在mapper的接口中我们需要有从数据库拿到数据的语句,这就是我们登录需要的语句

    @Select("select * from user where UserID=#{UserID} and password=#{password}")
    public List<user> selectdy(String UserID, String password);

下边呢我们需要先引入fastjson依赖,这是来进行json跟java对象之间转换的,我放在了编辑处理器中

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>

然后我们就是登录的GetMapping跟PostMapping,我有很多的输出语句,毕竟是简易的,而且也被lombok卡了好久,确实是红温了,完整体错误提示用try跟catch来打配合;这两个函数是一样的,获取到请求体中的json格式后我们将他转化成String类型,再转成user类型,然后实行查找方法,用isEmpty()来验证是否有值以此决定传输回前端的数据

    @GetMapping("/dy")
    public void dy(HttpServletRequest req, HttpServletResponse res) throws IOException {
        System.out.println("开始登录,查找个人信息中");
        //获取请求体数据
        BufferedReader reader = req.getReader();
        String line = reader.readLine();
        System.out.println(line);
        //获取到为json格式,我们将其转化为java对象
        user u= JSON.parseObject(line,user.class);
        System.out.println(u.toString());
        System.out.println(u.getUserID());
        //实行查找方法,用list<user>承接,再用isEmpty验证是否为空
        List<user> u1=s.selectdy(u.getUserID(),u.getPassword());
        System.out.println(u1);
        res.setContentType("application/json;charset=UTF-8");
        String JsonU=JSON.toJSONString(u1);
        if(!u1.isEmpty()){
            res.getWriter().write(JsonU);
        }
        else {
            res.getWriter().write("fail");
        }

    }
    @PostMapping("/dy")
    public void dy2(HttpServletRequest req, HttpServletResponse res) throws IOException {
        this.dy(req, res);
    }

这基本上就是我通用的一个简易模板,如果需要更多功能也是在这基础上增加,基本上不会被影响到

posted @ 2025-01-27 16:17  liu某人  阅读(46)  评论(1)    收藏  举报