首页 > 其他分享 >登录案例_代码实现1与登录案例_代码实现2

登录案例_代码实现1与登录案例_代码实现2

时间:2023-01-31 15:55:36浏览次数:36  
标签:登录 com 代码 request 案例 User import servlet example

登录案例_代码实现1

    开发项目:用户登录

       开发步骤:

          1.创建项目,导入html页面,配置文件,jar包

          2.创建数据库的环境

CREATE DATABASE day14;


USE day014;


CREATE TABLE USER(
  id  INT  PRIMARY KEY  AUTO_INCREMENT,
  USER    VARCHAR(32) UNIQUE NOT NULL,
  PASSWORD VARCHAR(32) NOT NULL            
);

          3.创建包com.example.day014_userlogin.domain,创建一个类User

package com.example.day014_userlogin.domain;

/**
 * 用户实体类
 */
public class User{

    private int id;
    private String username;
    private String password;

    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;
    }

    @Override
    public String toString() {
        return "Uesr{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

        4.创建包com.example.day014_userlogin.dao,创建类UserDao,提供login方法

package com.example.dao;


import com.example.domain.User;
import com.example.util.JDBCUtils;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

/**
 * 操作数据库中User表的类
 */
public class UserDao {

    //声明JDBCTemplate对象共用
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    /**
     * 登录方法
     * @param loginUser 只有用户名和密码
     * @return user包含用户全部数据,没有查询到,返回null
     */
    public User login(User loginUser){
        try {
            //1.编写sql
            String sql = "select * from user where username = ? and password = ?";
            //2.调用query方法
            User user = template.queryForObject(sql,
                    new BeanPropertyRowMapper<>(User.class),
                    loginUser.getUsername(), loginUser.getPassword());


            return user;
        } catch (DataAccessException e) {
            e.printStackTrace();//记录日志
            return null;
        }
    }
}

           5.创建包com/example/test,创建UserDaoTest

package com.example.test;


import com.example.dao.UserDao;
import com.example.domain.User;
import org.junit.Test;

public class UserDaoTest {



    @Test
    public void testLogin(){
        User loginuser = new User();
        loginuser.setUsername("ikun");
        loginuser.setPassword("123");


        UserDao dao = new UserDao();
        User user = dao.login(loginuser);

        System.out.println(user);
    }
}

 

登录案例_代码实现2

      6.编写com/example/web/servlet类

FailServlet
package com.example.web.servlet;

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 java.io.IOException;

@WebServlet("/FailServlet")
public class FailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //给页面写一句话

        //设置编码
        response.setContentType("text/html;charset=utf-8");
        //输出
        response.getWriter().write("登录失败,用户名或密码错误");

    }

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

SuccessServlet

package com.example.web.servlet;

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 java.io.IOException;

@WebServlet("/FailServlet")
public class FailServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //给页面写一句话

        //设置编码
        response.setContentType("text/html;charset=utf-8");
        //输出
        response.getWriter().write("登录失败,用户名或密码错误");

    }

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

LoginServlet

package com.example.web.servlet;

import com.example.dao.UserDao;
import com.example.domain.User;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet("/loginServlet")
public class  LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        //1.设置编码
        request.setCharacterEncoding("utf-8");
        //2.获取请求参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //3.封装user对象
        User loginuser = new User();
        loginuser.setUsername(username);
        loginuser.setPassword(password);


        //4.调用UserDao的login方法
        UserDao dao = new UserDao();
        User user = dao.login(loginuser);


        //5.判断user
        if (user == null){
            //登录失败
            request.getRequestDispatcher("/FailServlet").forward(request,response);
        }else {
            //登录成功
            //存储数据
            request.setAttribute("user",user);
            //转发
            request.getRequestDispatcher("/SuccessServlet").forward(request,response);

        }



    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            this.doGet(request,response);

    }
}

     7.login.html中form表单的action路径的写法

         虚拟目录+Servlet的资源路径 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/day14_test/loginServlet" method="post">
    用户名:<input type="text" name="username"> <br>
    密码:<input type="password" name="password"><br>

    <input type="submit" value="登录">

</form>
</body>
</html>

 

标签:登录,com,代码,request,案例,User,import,servlet,example
From: https://www.cnblogs.com/x3449/p/17078321.html

相关文章

  • Shell脚本案例
    检查脚本 修复脚本#!/bin/bashCount_passmin=`cat/etc/profile|grep-n^PASS_MIN_DAYS|awk-F[:]'{print$1}'`if["$Count_passmin"];then Num_passmin=1......
  • shell基础代码_ sed 内容替换
    sed(StreamEDitorsed)[options]'command'file(s)【sed [选项]  '操作'  参数】sed有关内容替换的命令介绍:options(选项)-ecommand,--expression=command......
  • 名单揭晓!OpenMLDB 获评 2022 年度中国开源社区健康案例
    2023年1月13日,2022年度OSC中国开源项目评选——「2022中国开源社区健康案例」获奖社区正式揭晓!OpenMLDB社区获评2022年度中国开源社区健康案例。OSCHINA(开源中国)......
  • C代码模拟IOC
    C代码模拟IOC用途一个模块记录设备诸多状态,当任意一个状态发生变化时,会执行对应的回调操作实现思想将设备状态进行备份,如果设备最新状态变化,可以比较出哪个状态发生变......
  • 登录、支付、发布
    我的页面介绍登录-store里准备好tokentoken要放到vuex里,所以来到store/modules/user.js,里面声明一个state里的数据用来存tokenstate(){return{.........
  • Fitter-案例-过滤敏感词汇-分析 Fitter-案例-过滤敏感词汇-代码实现
    Fitter-案例-过滤敏感词汇-分析需求:1.对day17_case案例录入的数据进行敏感词汇过滤2.敏感词汇参考《敏感词汇.txt》3.如果是敏感词汇,替换为** 分......
  • vscode 插件登录 Leetcode
    尝试美区账号:用github登录的,成功;中区账号:昵称密码登录使用电话号码注册的,有密码,但是网页试过密码登录错误。还限制超过两次密码输入错误就限制24小时后才能登录。......
  • IoC和DI入门案例
    IoC思路分析1、管理什么--Service和Dao2、如何将被管理的对象告知IoC容器--配置3、被管理的对象交给IoC容器,如何获取到IoC容器--接口4、IoC容器得到后,如何从容器中......
  • 验证码案例需求分析
    1.访问带有验证码的登录页面login.jsp2.用户输入用户名,密码以及验证码*如果用户名和密码输入有误,跳转登录页面,提示:用户名或密码错误*如果验证码输入有误,跳......
  • 代码随想录算法训练营第十六天|LeetCode 104. 二叉树的最大深度、LeetCode 111.二叉树
    104.二叉树的最大深度文章:代码随想录(programmercarl.com)视频:二叉树的高度和深度有啥区别?究竟用什么遍历顺序?很多录友搞不懂|LeetCode:104.二叉树的最大深度_哔哩哔......