Java Servlet 简单的登录代码

2023-11-09

需要的jar包

  1. commons-beanutils-1.8.0.jar
  2. druid-1.0.9.jar
  3. spring-jdbc-5.0.0.RELEASE.jar
  4. spring-beans-5.0.0.RELEASE.jar
  5. mysql-connector-java-5.1.37-bin.jar
    大概就这些了

HTML 显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
        <form action="/demo02_anli/userDaoServlet" method="post">
           <label> 用户名:<input type="text" name="username" placeholder="请输入用户名"></label><br>
            <label>密码:<input type="text" name="password" placeholder="请输入密码"></label><br>
           <input type="submit" value="登录">
        </form>
</body>
</html>

sql 数据库创建个人信息

// 这是使用demo02的数据库
USE demo02;

//   创建一个名为user的表格
	CREATE TABLE USER(
	     id INT PRIMARY KEY AUTO_INCREMENT,
	     username VARCHAR(32) UNIQUE NOT NULL,
	     PASSWORD VARCHAR(32) NOT NULL
	);
	// 向表格中添加数据
	INSERT INTO USER(id ,username,PASSWORD) VALUES(NULL,'wangwu','134');
	// 查看表格
	SELECT * FROM USER

数据库中创建出来的user表格 图片:
创建出来的user表格

创建一个User类

package domain;
/* 
   一个基础的JavaBean
*/
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 "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

创建一个获取数据库连接和获取数据库资源的JDBCUtils 工具类

package utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtils {

    private static DataSource ds;

    static {
    // 配置文件 获取druid.properties 文件
        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
        Properties pro = new Properties();
        try {
            pro.load(is);

            // 初始化连接池
             ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }
    // 获取连接池DataSource对象
    public static DataSource getDataSource(){
        return ds;
    }
    // 获取Connection对象
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

建立数据库连接

age dao;

import domain.User;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import utils.JDBCUtils;

public class UserDao {
    // 将JDBCTemplate对象共用
    private static JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());


    public User login(User userLogin){
        try {
            // 编写sql
            String sql = "select * from user where username = ? and password = ?";

            // 调用query方法
            User user = template.queryForObject(sql,
                    new BeanPropertyRowMapper<User>(User.class),
                    userLogin.getUsername(),
                    userLogin.getPassword());
            return user;
        } catch (DataAccessException e) {
            e.printStackTrace();
            return null;
        }
    }
}

将客户端输入的用户名在数据库中寻找是否有与之对应的 如果没有则为空

		package web;

import dao.UserDao;
import domain.User;

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("/userDaoServlet")
public class UserDaoServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     // 设置编码
        request.setCharacterEncoding("utf-8");

        // 获取参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 创建User对象 传入参数
        User userLogin = new User();
        userLogin.setUsername(username);
        userLogin.setPassword(password);
        //创建UserDao对象 传入User对象
        UserDao dao = new UserDao();
        User user = dao.login(userLogin);

        // 判断是否为空
        if (user == null){
            // 登录失败 跳转到登录失败也页面
            request.getRequestDispatcher("/failServlet").forward(request,response);

        }else {
            //登录成功
            // 存储数据
            // 跳转到登录成功 页面
            request.setAttribute("user",user);
            request.getRequestDispatcher("/successServlet").forward(request,response);

        }

    }

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

登录成功页面

package web;

import domain.User;

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("/successServlet")
public class SuccessServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置编码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        // 获取共享资源
        User user = (User) request.getAttribute("user");
        // 输出登录成功语句
        response.getWriter().write("登录成功!"+user.getUsername()+",欢迎您...");
    }

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

登录失败页面

package web;

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

/*
注: 此代码为菜鸟第一次编写 如有不对之处,
请 各位大佬 不吝指出 谢谢 !!!

*/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Servlet 简单的登录代码 的相关文章

  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • JavaWeb05(删除&增加&修改功能实现&连接数据库)

    目录 一 实现删除功能 1 1 url如何传参 xx do 参数 参数值 参数名 参数值 1 2 servlet如何拿对应值 根据参数名拿到对应的参数值 String str req getParameter 参数名 1 3 如何询问 nc
  • bean的有效范围和生命周期(scope)

    scope 的取值范围给出了bean的生命周期 存活时间 即scope 取值决定了Tomcat服务器分配给用户的 bean 的有效范围和生命周期 因此需要理解 scope取值的具体意义 下面就JSP动作标记useBean 中scope取值的
  • javatServlet中的cookie设置

    cookie 服务器将一些信息存储在浏览器 本地 当用户再次打开网页时 会自动填充该信息 当浏览器再次发送请求时 会将存储的信息通过请求头的方式发送给服务器端 不需要用户每次都填充某些内容 cookie中理论上来讲 最大存储4KB内容 co
  • java复制文件后保持文件的创建时间不变

    复制后保持文件的创建时间不变 File oldFile new File E test old png File newFile new File E test new png FileCopyUtils copy oldFile newF
  • 利用Java EE相关技术实现一个简单的Web聊天室系统

    利用Java EE相关技术实现一个简单的Web聊天室系统 1 编写一个登录页面 登录信息中有用户名和密码 分别用两个按钮来提交和重置登录信息 2 通过请求指派来处理用户提交的登录信息 如果用户名为本小组成员的名字且密码为对应的学号时 跳转到
  • Spring中的监听器与SpringMVC简述

    目录 Spring中的监听器 SpringMVC概述 web层的框架完成的相应的操作图示 SpringMVC开发使用步骤 SpringMVC流程图示 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转
  • JAVA WEB 中间件为SERVLET(四)

    写一个用户登录部署到tomcat 本地 先找到一个模板 HTML代码复制到本地的项目index jsp中 这个登录模板包含一个JSP 一个JS 三个CSS等文件 这个是index jsp代码
  • 细谈JavaWeb中的Request和Response

    文章目录 1 Request和Response的概述 2 Request对象 2 1 Request继承体系 2 2 Request获取请求数据 2 2 1 获取请求行数据 2 2 2 获取请求头数据 2 2 3 获取请求体数据 2 2 4
  • IDEA-设置VM启动参数

    点击配置 OK 使用方式 System out println System getProperty parm
  • this调用本类的其他构造器

    Student类 package Java project 1 public class Student private String name private String schoolName public Student public
  • Response响应方法详解

    Response 响应 服务器把请求的处理结果告知客户端 在B S架构中 响应就是把结果带回浏览器 响应对象 在项目中用于发送响应的对象 常用状态码 状态码 说明 200 执行成功 302 它和307一样 都是用于重定向的状态码 只是307
  • 数学建模——论文排版

    目录 一 参考文献的排版 1 三种方案 通常使用方案一 方案一有两种方法 2 参考文献排版要点总结 二 附录的排版 具体方法 补充 代码高亮 三 表格标题自动编号 进阶做法 四 公式编辑软件的介绍 1 LaTeX 较难 有时间可学 2 wo
  • 分配操作菜单

    目录 概述 介绍 数据库 后端 前端 效果展示 概述 在写后台管理系统时 我们可以根据不同的登录人 给予不同的功能菜单 如 给楼栋管理员登录时分配 楼栋管理 宿舍管理 所以在数据库就要创建 1 登录人与角色表 2再给角色表分配操作菜单 登录
  • smbms 获取角色操作,角色管理实现

    为了我们职责统一 可以把角色的操作单独放在一个包中 和pojo中的对应 RoleDao 接口 package com Li dao role import com Li pojo Role import java sql Connectio
  • 泛型与反射机制在JDBC和Servlet编程中的实践

    写在前面 泛型与反射是java中的两种强大机制 可以很好的提高代码的灵活性和复用性 本篇文章向大家展现在JDBC和Servlet编程场景下反射和泛型技术的实践 通过灵活使用这两种机制打造 高度可复用的JDBC和Servlet代码 1 JDB
  • JavaWeb——第五章 Servlet

    第五章 Servlet 一 Servlet简介 1 1 动态资源和静态资源 1 2 Servlet简介 二 Servlet开发流程 2 1 目标 2 2 开发过程 三 Servlet注解方式配置
  • 【计算机毕业设计】汽车维修保养智能预约系统

    信息数据从传统到当代 是一直在变革当中 突如其来的互联网让传统的信息管理看到了革命性的曙光 因为传统信息管理从时效性 还是安全性 还是可操作性等各个方面来讲 遇到了互联网时代才发现能补上自古以来的短板 有效的提升管理的效率和业务水平 传统的
  • JUC的常见类

    目录 Callable ReentrantLock Semaphore CountDownLatch JUC 即 java util concurrent 其中存放了一些进行多线程编程时有用的类 Callable Callable是一个接口
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台

随机推荐

  • JavaScript笔记_this指向

    this 指向问题 普通函数的this由调用规则来确定 而箭头函数的的this 本身没有this 取决于父作用域的this 代码执行后 箭头函数取决于父级作用域的this 只跟随父作用域的this改变而改变 普通函数的this取决于调用方式
  • Tomcat 无法访问,未发送任何数据

    问题描述 直接上图 解决 开启的Tomcat 的cmd窗口不要关闭 访问localhost 8080 试试 8080接口被其它服务占用了 修改8080接口 不要修改为1 1023端口和常用端口3306等 首先关闭Tomcat 双击shutd
  • 【Java】Java基础习题1

    这里写目录标题 1 编译Java应用程序源文件将产生相应的字节码文件 字节码文件的扩展名为 2 Java源程序文件的扩展名为 3 编译Java源代码 java 文件的工具为 4 执行Java字节码 class 文件的工具为 5 main方法
  • Spring Security的十一个拦截器

    目录 一 SecurityContextPersistenceFilter 二 LogoutFilter 三 AbstractAuthenticationProcessingFilter 四 DefaultLoginPageGenerati
  • 基于PaddleOCR的DBNet多分类文本检测网络

    目录 目的 模型网络结构对比 代码实现 1 数据集格式 2 配置文件调整 3 数据预处理 4 模型代码调整 5 添加多分类loss 6 修改db postprocess py 7 修改train py eval py infer det p
  • VS无法定位程序输入点于动态链接库

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 问题原因 前言 我们使用QtCreator创建的工程 使用visual studio 打开 前提是vs中安装了qt vsaddin msvc插件 VS无法定位程序输入点于动态链接库 一
  • 清除mac中自动记录的git用户名和密码

    应用程序 实用工具 双击钥匙串 右上角搜索github 右击选项删除
  • 陀螺研究院

    摘要 产业动态 由建行发起的价值30亿美元数字债券将推迟上市 15国正式签署RCEP 全球规模最大自贸协定达成 浙江省首个产业区块链赋能中心落地宁波江北 越南教育和培训部计划在2021年实施区块链技术颁发文凭 深圳市政务区块链专委会正式揭牌
  • pytorch代码实现之SAConv卷积

    SAConv卷积 SAConv卷积模块是一种精度更高 速度更快的 即插即用 卷积 目前很多方法被提出用于降低模型冗余 加速模型推理速度 然而这些方法往往关注于消除不重要的滤波器或构建高效计算单元 反而忽略了特征内部的模式冗余 原文地址 Sp
  • 图像处理(RGB分离)

    图像处理技术 RGB分离 最近学习了图像处理技术 第一个小工程做的事将一张图片的rgb分离 存为三张图片 就像PS中的RGB通道的三张图片一样 我们先准备两张24位真彩色图片 一张宽度像素为4的倍数 一张则不是 我们来看下它的文件头和信息头
  • js文字朗读

    var u new SpeechSynthesisUtterance function read text speed u text text u lang zh u rate speed speechSynthesis speak u
  • 游戏开发安卓知识杂谈系列:关于下载jdk

    想要下载jdk11 去oracle官网下载jdk 发现jdk13以下的版本需要账号登陆 但是去注册账号发现官网账号无法注册 找了半天 网上说Oracle自java SE 8的某个版本以后 需要进行付费才能下载 两个解决办法 找百度网盘或者第
  • webpack使用(5)之处理CSS

    一 需要引入的loader 1 style loader 主要负责创建style标签 并将标签塞入到文档中 2 css loader 主要负责css解析 3 less loader 负责解析less 二 如何引入css资源 1 安装配置st
  • 【数据结构】哈希表

    散列表 也叫哈希表 是根据关键码值而直接进行访问的数据结构 它通过把关键码值映射到表中一个位置来访问记录 以加快查找的速度 哈希表的核心是合适的hash函数 数据范围 解决冲突的办法 这里通过数字分析法设计哈希函数 链地址法解决从冲突 冲突
  • 2023华为OD机试真题【敏感字段加密/字符串风格】【2023.Q2】

    题目描述 给定一个由多个命令字组成的命令字符串 1 字符串长度小于等于127字节 只包含大小写字母 数字 下划线和偶数个双引号 2 命令字之间以一个或多个下划线 进行分割 3 可以通过两个双引号 来标识包含下划线 的命令字或空命令字 仅包含
  • 【机器学习】通俗易懂决策树(实战篇)python实现(为新患者找到合适的药物)

    决策树 我们将学习一种更流行的机器学习算法 决策树 我们将使用此算法从患者的历史数据以及他们对不同药物的反应大数据中 用训练过的决策树来构建分类模型预测未知患者的类别 或者说为新患者找到合适的药物 导入以下包 numpy as np pan
  • docker快速学习--容器的数据卷--04

    一 数据卷概念 数据卷是宿主机中的一个目录或文件 当容器目录和数据卷目录绑定后 对方的修改会立即同步 一个数据卷可以被多个容器同时挂载 一个容器也可以被挂载多个数据卷 二 数据卷作用 容器数据持久化 外部机器和容器间接通信 数据交互 容器之
  • python进阶--正则表达式(2)

    一 初识正则表达式 为了使计算机具有在文本中检索某种模式的能力 我们引入了正则表达式 正则表达式为高级的文本模式匹配 抽取或者文本形式的搜素和替换功能提供了基础 利用正则表达式能够匹配多个字符串 正则表达式的强大之处在于引入了特殊字符来定义
  • ajax工作原理 前后端交互流程

    一 前后端交互流程 1 服务器 提供某种服务器的机器 计算机 qq音乐 音频服务器 迅雷 文件服务器 qq邮箱 邮件服务器 爱奇艺 视频服务器 谷歌 web服务器 2 前端 访问 服务器的四种方式 1 直接在地址栏输入网址 网页会跳转 全局
  • Java Servlet 简单的登录代码

    需要的jar包 commons beanutils 1 8 0 jar druid 1 0 9 jar spring jdbc 5 0 0 RELEASE jar spring beans 5 0 0 RELEASE jar mysql c