JAVA、MySql实现登录注册(网页)

2023-11-04

初学JAVA  EE,老师留下一小作业,用JAVA实现与服务器端交互,实现登录和注册功能,初学一种专业课很多老师都会留下一种让学生实现登录和注册的作业。

下面是记录的实现步骤:

1、首先是账号密码输入框和按钮:

登录:

<form action="login.do"  method="get">
            <table>
                <tr><td>账号:</td><td><input style="line-height: 28px;" type="text" name="id" /></td></tr>

                <tr><td>密码:</td><td><input style="line-height: 28px;" type="password" name="password" /></td></tr>

                <tr><td> <a href="register.jsp" >还没注册?点击注册</a></td><td><input id="login_in" type="submit" value=" 登录 "></td></tr>
            </table>
 </form>
注册:

<form name="form1" action="register.do" method="post">
    <table width="200" border="0">
        <tr>
            <td colspan="2">
                <div id="status">注册新用户</div>
            </td>
        <tr>
            <td>*用户名</td>
            <td><input type="text" name="username" size="10" id="username"></td>
        </tr>
        <tr>
            <td>*密码</td>
            <td><input type="password" name="password1" size="10"></td>
        </tr>
        <tr>
            <td>*确认密码</td>
            <td><input type="password" name="password2" size="10"></td>
        </tr>
        <tr>
            <td>Email</td>
            <td><input type="text" name="email" size="10"></td>
        </tr>
        <tr>
            <td colspan="2"><a href="login.jsp">返回登录页</a> <input
                    type="submit" name="submit" value="提交注册"></td>
        </tr>
    </table>
</form>
两个form表的属性里都有action,可理解为是用来标记登录和注册的,在web.xml中和对应的servlet绑定

2、数据库建表,插入数据

在服务器中打开MySQL,建表

create table login(
uname char(15) primary key,
password char(15) not null,
email char(20)
)
3、sql语句内嵌到java语句中,查找(登录)和插入(注册)用户信息,以下类名即为文件的名字

登录:

import java.sql.*;
public class userlogin {

    String drv = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/login";
    String usr = "root";
    String pwd = "***";//自己的密码

    public boolean isuserlogin(String id,String password){
        boolean isValid = false;

        String sql="select * from ulogin where uname='"+id+"' and password='"+password+"'";
        try{
            Class.forName(drv).newInstance();
            Connection conn = DriverManager.getConnection(url,usr,pwd);
            Statement stm = conn.createStatement();
            ResultSet rs = stm.executeQuery(sql);

            if(rs.next()){
                isValid = true;
            }

            rs.close();
            stm.close();
            conn.close();
        }catch (Exception e) {
            e.printStackTrace();
            System.out.println(e);
        }
        if(isValid){//判断用户名以及密码是否与设定相符
            return true;
        }
        else return false;
    }
}
注册:

import java.sql.*;
public class register {

    String drv = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/login";
    String usr = "root";
    String pwd = "***";

    public boolean userregister(String id,String password,String email){

        boolean b = false;

        String sql = "select * from ulogin where uname='"+id+"'";

        try{
            Class.forName(drv).newInstance();
            Connection conn = DriverManager.getConnection(url,usr,pwd);
            Statement stm = conn.createStatement();
            ResultSet rs = stm.executeQuery(sql);

            if(!rs.next()){

                sql = "insert into ulogin(uname,password,email) values('"+id+"','"+password+"','"+email+"')";
                stm.execute(sql);
                b = true;
            }

            rs.close();
            stm.close();
            conn.close();
        }catch (Exception e) {
            e.printStackTrace();
            System.out.println(e);
        }

        if(b)
        {
            return true;
        }
        else return false;
    }
}
4、构建servlet来处理事务,如果连接数据库查找成功,则登录成功,否则失败;如果注册成功返回登录界面

登录:由用户输入信息,所以使用doGet方法

@WebServlet(name = "ServletLogin")
public class ServletLogin extends HttpServlet {
    public void init() throws ServletException {
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        boolean b=false;
        userlogin MyPOJO=new userlogin();//新建MyPOJO类的对象myPOJO

        //根据标示名获取JSP文件中表单所包含的参数
        String id=request.getParameter("id");
        String password=request.getParameter("password");
        String result = "";

        b=MyPOJO.isuserlogin(id,password);//使用模型对账号和密码进行验证,返回一个boolean类型的对象
        PrintWriter out = response.getWriter();
        if(b){  //如果验证结果为真,跳转至登录成功页面
            out.println("success");
            result = "success";
            //Cookie
            Cookie username= new Cookie("username",id);

            //设置路径,这个路径即该工程下都可以访问该cookie 如果不设置路径,那么只有设置该cookie路径及其子路径可以访问

            username.setPath("/");
            username.setMaxAge(60*60);
            response.addCookie(username);
            response.sendRedirect("index.jsp");
        }
        else {  //如果验证结果为假,跳转至登录失败页面
            out.println("fail");
            result = "fail";
            response.sendRedirect("JSP/LoginFailed.jsp" );
        }
        out.write(result);
        out.flush();
        out.close();
        System.out.println(result);
    }
注册:使用doPost方法

@WebServlet(name = "ServletRegister")
public class ServletRegister extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        boolean b = false;
        register myPOJO=new register();

        String id=request.getParameter("username");
        String password=request.getParameter("password1");
        String email = request.getParameter("email");

        b=myPOJO.userregister(id,password,email);

        if(b){
            response.sendRedirect("login.jsp");
        }
        else{
            response.sendRedirect("register.jsp");
        }
    }
}
5、在web.xml中将servlet和url-pattern进行匹配

<servlet>
        <servlet-name>ServletLogin</servlet-name>
        <servlet-class>service.ServletLogin</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletLogin</servlet-name>
        <url-pattern>/login.do</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>ServletRegister</servlet-name>
        <servlet-class>service.ServletRegister</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletRegister</servlet-name>
        <url-pattern>/register.do</url-pattern>
    </servlet-mapping>

6、测试运行

将服务器端的mysql数据库中加入一条用户信息:

insert into ulogin values('test1','123',null);
网页上输入该信息:


点击登录:登陆成功



注册:在注册框中输入信息:



提交后在数据库中查找该用户信息:



注意:项目中应该导入jsp-api.jar和servlet-api.jar两个jar包
















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

JAVA、MySql实现登录注册(网页) 的相关文章

随机推荐

  • 利用MATLAB设计低通滤波器和CIC滤波器

    FDATool界面左下侧排列了一组工具按钮 其功能分别如下所述 创建多速率滤波器 Create a Multirate Filter 滤波器转换 TransForm Filter 设置量化参数 Set Quantization Parame
  • API 接口防刷(接口请求次数限制)

    目录 一 问题 1 解决 2 原理 二 实现 1 导入坐标 2 自定义注解 3 Redis 缓存工具类 4 自定义拦截器 5 WebConfig 配置类 6 异常处理器 1 异常标记码 1 通用对象返回类 7 Redis序列化配置 8 测试
  • 【Flink】yarn集群模式

    预备知识 Linux export 命令的生命周期 断开会话后 export 的环境变量不生效 支持会话级别的新增 删除和修改环境变量 用作之后的程序使用 仅仅用作此次会话期间 基于 YARN 模式部署 Flink 服务 3 1 基于 YA
  • 【SPI协议】

    一 SPI介绍 SPI是 全双工 通信 具有单独的发送和接收线 可以同时进行发送和接收 从机不主动发起访问 总是被动执行操作 SPI包含4根逻辑线 MISO 主机输入 从机输出 MOSI 主机输出 从机输入 SCLK 串行时钟信号 此信号由
  • 论文阅读:AAAI2022 Evaluating Explainable AI on a Multi-Modal Medical Imaging Task: Can Existing Algor...

    任务 explainable AI XAI 可解释性探索 主要提出两个指标 可以代替医生对事后可解释性算法进行评估 目的 多模态医学影像中存在的clinically important but technically ignored the
  • ModuleNotFoundError: No module named ‘xxx‘问题

    更换国内安装源和设置超时时间可以解决 pip install xxx default timeout 100 i https pypi tuna tsinghua edu cn simple 即可 安装源参考 超时时间参考
  • 【004】一天一道C/C++编程题

    第四题 请编写一个函数void fun char tt int pp 统计在tt字符串中 a 到 z 26个字母各自出现的次数 并依次放在pp所指数组中 例如 当输入字符串abcdefgabcdeabc后 程序的输出结果应该是 3 3 3
  • 面试题(2)

    1 J2EE是什么 2 介绍JAVA中的Collection FrameWork 包括如何写自己的数据结构 如COLLECTION中遗留类 HASHTABLE VECTOR 和现有类的区别 同步 3 Java中异常处理机制 事件机制 4 E
  • 实验7-3-8 统计字符出现次数(20 分)

    实验7 3 8 统计字符出现次数 20 分 本题要求编写程序 统计并输出某给定字符在给定字符串中出现的次数 输入格式 输入第一行给出一个以回车结束的字符串 少于80个字符 第二行输入一个字符 输出格式 在一行中输出给定字符在给定字符串中出现
  • 三位水仙花数的两种做法

    编写程序计算如下数列的值 1 2 3 4 966 其中 所有数字为整数 从1开始递增 奇数为正 偶数为负 s 0 for i in range 967
  • mybatis plus 写sql语句

    一 api public Map
  • app常见专项测试点

    常见的apk专项测试 主要有几类 主要指项目中经常用到的 1 稳定性 2 安全性 3 兼容性 4 版本升级 5 流量测试 6 实际测试总结 对整个项目团队是如何进行测试以及测试的内容 一 稳定性测试 稳定性测试是指对应用进行长时间的操作 检
  • jq+ajax提交合并表单,JQuery通过Ajax提交表单并返回结果

    如下 1 非Ajax 对应后台 2 JQuery之Ajax 在介绍使用JQuery提交表单前 我们需要首先引用jquery form js 它来自于http www malsup com jquery form 至此 我们需要引用的JS文件
  • Nice! I just got a Minecraft gift code for FREE! :D https://freeminecraftgiftcode.net

    Nice I just got a Minecraft gift code for FREE D https freeminecraftgiftcode net Nice I just got a Minecraft gift code f
  • Nodejs学习笔记 - 版本号

    npm outdated 查看过期了的包 也不能说过期 反正版本号不是最新的 就那么个意思 QWQ npm update 更新那个包 语言组织能力有点差 理解就行了 QWQ 进入正题了哇 版本号 eg 13 1 4 上边的版本号共分为3块
  • wind10 idea中 go 开发环境搭建

    下载安装包 国内的 不用翻墙 https studygolang com 官网 需翻墙 https golang org 这里使用的的是第一种https studygolang com 下载后解压到本地 目录结构 配置环境变量 path中配
  • while语句中的break和continue

    1 break介绍 include
  • 怎么彻底删除电脑上的软件_彻底删除流氓软件的两个工具!

    流氓软件 弹出广告 我想 这些应该让很多同学都苦不苦不堪言 卸载不干净 无法卸载 卸载残留 这些顽固的软件就如同牛皮癣一样 一旦粘着就很难摆脱 本文就来推荐2款软件 这两款都是经过多年使用 对比保留下来的 从此就可以对流氓软件说再见了 前言
  • android studio构建的AAB是什么

    AAB 是 Android App Bundle 的缩写 是一种由 Google 推出的 Android 应用程序发布格式 AAB 格式的应用程序包含了应用程序的所有代码和资源 但是与传统的 APK 包不同 AAB 包含了多个分割的模块 每
  • JAVA、MySql实现登录注册(网页)

    初学JAVA EE 老师留下一小作业 用JAVA实现与服务器端交互 实现登录和注册功能 初学一种专业课很多老师都会留下一种让学生实现登录和注册的作业 下面是记录的实现步骤 1 首先是账号密码输入框和按钮 登录