首页 > 其他分享 >案例-用户登录-和上次案列联动一样

案例-用户登录-和上次案列联动一样

时间:2023-07-02 14:45:24浏览次数:32  
标签:username String 登录 案列 user 联动 import password public

 

package com.itheima.mapper;

import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

public interface UserMapper {


    /**
     * 根据用户名和密码查询用户对象
     * @param username
     * @param password
     * @return
     */
    @Select("select * from tb_user where username = #{username} and password = #{password}")
    User select(@Param("username") String username,@Param("password")  String password);

    /**
     * 根据用户名查询用户对象
     * @param username
     * @return
     */
    @Select("select * from tb_user where username = #{username}")
    User selectByUsername(String username);

    /**
     * 添加用户
     * @param user
     */
    @Insert("insert into tb_user values(null,#{username},#{password})")
    void add(User user);
}
package com.itheima.pojo;

public class User {

    private Integer id;
    private String username;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
package com.itheima.service;

import com.itheima.mapper.UserMapper;
import com.itheima.pojo.User;
import com.itheima.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

public class UserService {
    //1. 使用工具类获util取到getSqlSessionFactory
    SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();

    /*
    * 登录方法
    * */
    public User login(String username,String password){
        //2. 获取SqlSession
        SqlSession sqlSession = factory.openSession();
        //3. 获取UserMapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //4. 调用方法
        User user = mapper.select(username, password);

        //释放资源
        sqlSession.close();

        return user;
    }
}
package com.itheima.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtils {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        //静态代码块会随着类的加载而自动执行,且只执行一次

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }

}
package com.itheima.web;

import com.itheima.pojo.User;
import com.itheima.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    //获取UserService对象
    private UserService service=new UserService();

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 获取用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //2. 调用service查询方法
        User user = service.login(username, password);

        //3. 判断
        if (user != null){
            //登录成功

            //将登陆成功后的user对象,储存到session
            HttpSession session = request.getSession();
            session.setAttribute("user",user);

            //获取该地址的跟目录,以便设置相对路径
            String contextPath = request.getContextPath();
            //设置重定向路径
            response.sendRedirect(contextPath + "/selectAllServlet");
        }else {
            //登录失败

            //储存错误信息到request
            request.setAttribute("login_msg","用户名或密码错误");

            //跳转到login.jsp
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.mapper.UserMapper">

</mapper>
<%--
  Created by IntelliJ IDEA.
  User: admin
  Date: 2023/7/2
  Time: 13:46
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link href="css/login.css" rel="stylesheet">
</head>

<body>
<div id="loginDiv" style="height: 350px">
    <form action="/cookie-demo/loginServlet" id="form">
        <h1 id="loginMsg">LOGIN IN</h1>
        <div id="errorMsg">${login_msg}</div>
        <p>Username:<input id="username" name="username" type="text"></p>

        <p>Password:<input id="password" name="password" type="password"></p>
        <p>Remember:<input id="remember" name="remember" type="checkbox"></p>
        <div id="subDiv">
            <input type="submit" class="button" value="login up">
            <input type="reset" class="button" value="reset">&nbsp;&nbsp;&nbsp;
            <a href="register.html">没有账号?</a>
        </div>
    </form>
</div>

</body>
</html>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>login</title>
    <link href="css/login.css" rel="stylesheet">
</head>

<body>
<div id="loginDiv" style="height: 350px">
    <form action="" id="form">
        <h1 id="loginMsg">LOGIN IN</h1>
        <div id="errorMsg">用户名或密码不正确</div>
        <p>Username:<input id="username" name="username" type="text"></p>

        <p>Password:<input id="password" name="password" type="password"></p>
        <p>Remember:<input id="remember" name="remember" type="checkbox"></p>
        <div id="subDiv">
            <input type="submit" class="button" value="login up">
            <input type="reset" class="button" value="reset">&nbsp;&nbsp;&nbsp;
            <a href="register.html">没有账号?</a>
        </div>
    </form>
</div>

</body>
</html>

 

标签:username,String,登录,案列,user,联动,import,password,public
From: https://www.cnblogs.com/Karl-hut/p/17520771.html

相关文章

  • 基于Sa-Token实现微服务之前的单点登录
    修改配置文件,准备好四个域名127.0.0.1auth.server.com127.0.0.1user.server.com127.0.0.1third.server.com127.0.0.1eureka.server.com注册中心:eureka-server服务pom依赖<dependency><groupId>org.springframework.cloud</groupId>......
  • 仿京东登录显示隐藏密码
    仿京东登录显示隐藏密码D:\开发\Vue项目\Vue2学习\html练习\仿京东显示隐藏密码.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......
  • 传奇架设登录器无法使用?解决乱码问题的方法在这里!
    近年来,传奇架设已经成为了一款备受欢迎的网络游戏。然而,有些玩家在使用传奇架设登录器的过程中可能会遇到一些问题,其中之一就是乱码问题。如果你正困扰于传奇架设登录器无法使用或乱码问题,那么你来对地方了!本文将为你详细介绍解决传奇架设登录器乱码问题的方法。首先,让我们先了解一......
  • 前端Vue自定义勾选协议组件 可用于登录 注册等场景
    前端Vue自定义勾选协议组件,可用于登录注册等场景,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13299效果图如下:cc-protocolBox使用方法<!--agree:是否同意勾选 protocolArr:协议数组@click:勾选同意点击@protocolClick:协议点击--><......
  • 前端Vue自定义登录界面切换tabs 账号登录验证码登录模版 支持手机号校验邮箱校验验证
    前端Vue自定义登录界面切换tabs账号登录验证码登录模版支持手机号校验邮箱校验、验证码发送, 下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13298效果图如下:cc-loginTabs使用方法<!--selIndex:选中序列 tabs-arr:tabs数组 @tabClic......
  • github第三登录
    文章目录第三方登录包创建应用编写代码:oauth2协议github的api简单的认证登录通过justAuth就写完了,自己写的第三方登录包自己使用的:justauth码云文档很详细.我就自己写我是怎么弄得,记录自己的操作过程:创建应用进入github用户的setting,填写:然后就会生成ClientID和密码:......
  • 登录页面
    <!DOCTYPEhtml><html><head><title>Register</title><style>body{font-family:Arial,sans-serif;background-color:#f4f4f4;}.container{max-width:400px;......
  • PC网站如何实现微信扫码登录
    不管你运营什么类型的网站,用户注册都是很重要的一个环节,用户注册的方式也是很多的,比如邮箱注册、手机号注册、第三方授权登录等。其中,第三方授权登录是最常用的一种方式,微信扫码登录是其中的一种,但是微信扫码登录的实现方式有很多种,比如公众号扫码,小程序扫码,网页扫码等。本文将介......
  • 内网使用postman测试websocket接口(无法登录的情况下)
    postman测试websocket接口。但是发现老版本的postman不支持websocket接口的测试。于是直接上最新版本postman。打开postman,new,选择websocket。发现选不了,提示:youneedtobeinaworkspacetoperformthisaction.然后我去工作台,发现强制要登录!!!但是问题在于:我这公司电脑不......
  • 注册功能 ,前端登录注册页面
    目录1异步发送短信1.1视图类1.2序列化类加入万能验证码2注册功能3.1视图类3.2序列化类补充3前端注册页面分析3.1Header.vue3.2Login.vue4前端登录注册页面复制4.1Login.vue4.2Register.vue4.3Header.vue5前端登录功能6前端注册功能1异步发送短信#原来的发送短......