web + servlet + jdbc mysql 实现简单的登陆注册界面有点长但是耐心很重要(含完整步骤代码,不懂可留言私信)

首先我们准备好开发使用的工具以及配置
idea2020
tomcat8.5 创建javaweb参考idea编译Tomcat详细步骤
IDEA通过JDBC连接数据库请参考jdbc连接数据库

首次创建我们的javaweb
在这里插入图片描述
在这里插入图片描述
接下来我们导包,导包请参考IDEA通过JDBC连接数据库请参考jdbc连接数据库
包的位置如图,记得右键选add library
在这里插入图片描述
我们在src包里面新建一个bean
在bean里面写一个Usedata类
建立一个登录界面要有,id,密码,注册界面,id,密码,姓名。后续需要什么自己可以添加的,比如加个性别什么的,做什么管理系统图书之类的,可以加书名,价格,日期等等,所以这里面我们的属性简单一点方便大家学习和交流
在这里插入图片描述

package bean;

public class Usedata {
    private String id;//账号
    private String name;//名字
    private String pwd;//密码
    public Usedata(String id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public String getName() {
        return name;
    }
    public String getId() {
        return id;
    }
    public String getPwd() {
        return pwd;
    }

}
//定义好数据表的属性

数据库

我们创建一下数据库
在这里插入图片描述
创建表

create table table_name
(
	id varchar(45) not null,
	name varchar(45) not null,
	pwd varchar(45) not null,
	constraint table_name_pk
		primary key (id)
);


在idea使用database连接数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再创建一个连接数据库的和使用数据库的类
在这里插入图片描述

package db;


import bean.Usedata;

import java.sql.*;
import java.util.ArrayList;

public class Database {
    Connection conn = null;

    //注册驱动器
    public Database() throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");//注册驱动
        this.conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydata01", "root", "123456");
        //System.out.println(conn);测试是否连接成功
    }

    //验证是否连接成功
    public void showConnect() {
        System.out.println(this.conn);
    }

    //在表里添加数据
    public void insert(String id, String name,String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("insert into mydata01.table_name(id, name,pwd)  value (?,?,?)");
        prep.setString(1, id);
        prep.setString(2, name);
        prep.setString(3, pwd);
        prep.execute();//运行程序
    }

    //在表里删除数据
    public void delete(String id) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("delete from sl.table_name where id=?");
        prep.setString(1, id);
        prep.execute();
    }

    //在表里查询数据
    public Usedata getUser(String id) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("select * from mydata01.table_name where id=?");
        prep.setString(1, id);
        prep.execute();
        ResultSet resultSet = prep.getResultSet();
        if (resultSet.next()) {
            String myname = resultSet.getString("name");
            String myid = resultSet.getString("id");
            String mypwd = resultSet.getString("pwd");
            return new Usedata(myid,myname,mypwd);

        } else {
            return null;
        }
    }

    //查看整张表
    public ArrayList<Usedata> getAllUser() throws SQLException {
        ArrayList<Usedata> uselist = new ArrayList<Usedata>();
        PreparedStatement prep = conn.prepareStatement("select * from mydata01.table_name");
        prep.execute();
        ResultSet resultSet = prep.getResultSet();
        while (resultSet.next()) {
            String myid = resultSet.getString("id");
            String myname = resultSet.getString("name");
            String mypwd = resultSet.getString("pwd");
            uselist.add(new Usedata(myid, myname, mypwd));

        }

        return uselist;
    }

    //关闭连接
    public void close() throws SQLException {
        conn.close();
    }
    //登录实现
    public Usedata login(String id, String pwd) throws SQLException {
        PreparedStatement prep = conn.prepareStatement("select mydata01.table_name.pwd from sl.table_name where id=?");
        prep.setString(1,id);
        prep.execute();
        ResultSet resultSet = prep.getResultSet();
        if (resultSet.next()){
            String mypwd =resultSet.getString("pwd");
            if (pwd.equals(mypwd)){
                return getUser(id);
            }
            else
                return null;
        }
        else
            return null;
    }

    public void insert(String id, String name, String pwd) {

    }
}


创建servlet

首先创建一个包servlet
创建登陆界面的类
创建注册界面的类
在这里插入图片描述
在这里插入图片描述

package servlet;


import bean.Usedata;
import db.Database;

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;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("GBK");
        response.setCharacterEncoding("GBK");
        PrintWriter printWriter = response.getWriter();
        response.setHeader("content-tupe","test/html;charset=GBK");
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        response.setContentType("text/html;charset=GBK");
        PrintWriter out =response.getWriter();
        try {
            Database database =new Database();
            database.showConnect();
            Usedata userdata = database.login(id,pwd);
            database.close();
            if(userdata==null) {
                out.println("用户名或者密码不正确<br>");
                out.println("<a href=\"http://localhost:8880/servlet_war_exploded/login.html\">登陆界面</a>");
            }
            else {
                out.println("welecome" + userdata.getName());
                // response.sendRedirect("/_war_exploded/loginOK.jsp")这个是直接跳转到别的jsp用的
                out.println("用户名:" + userdata.getName());
                out.println("<a href=\"http://localhost:63342/%E4%BA%94%E5%AD%90%E6%A3%8B%E5%B0%8F%E6%B8%B8%E6%88%8F/gobang-master/index.html?_ijt=gruh5vqggfpoepnspgdeocftv0\">点击跳转游戏界面</a>");

            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

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

import db.Database;

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;
import java.io.PrintWriter;
import java.sql.SQLException;

@WebServlet( "/RegisterServlet")
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("GBK");
        response.setCharacterEncoding("GBK");
        PrintWriter printWriter = response.getWriter();
        response.setHeader("content-tupe","test/html;charset=GBK");
        String name = request.getParameter("name");
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        String pwd2 = request.getParameter("pwd2");
        if (pwd.equals(pwd2)) try {
            Database database = new Database();
//        //一、是否连接数据库
            database.showConnect();
            database.insert(id,name,pwd);
            database.close();
            printWriter.write("注册成功");
            response.sendRedirect("/servlet_war_exploded/login.html");
        } catch (ClassNotFoundException |SQLException e ) {
            e.printStackTrace();
            printWriter.write("注册失败");
        }
        else {

            printWriter.write("两次输入密码不一致!");
        }

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

        doPost(request,response);
    }
}

我们再web.xml配置一些东西
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>registerServlet</servlet-name>
        <servlet-class>servlet.RegisterServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/servlet/LoginServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>registerServlet</servlet-name>
        <url-pattern>/servlet/RegisterServlet</url-pattern>
    </servlet-mapping>

</web-app>

接下来我们写登录界面
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="LoginServlet">
    账号:<input type="text" name="id">
    密码:<input type="password" name="pwd"><br>
    <input type="submit" name="登录"><input type="reset" value="重新输入">
</form>
</body>
</html>

注册界面
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="get" action="RegisterServlet" >
    姓名:<input type="text" name="name"><br>
    账号:<input type="text" name="id"><br>
    密码:<input type="password" name="pwd"><br>
    确认密码:<input type="password" name="pwd2"><br>
    <input type="submit" value="提交"><input type="reset" value="重新输入">
    </form>

</body>
</html>

首页我们直接再jsp里面写
在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: 咋咋
  Date: 2022/1/15
  Time: 11:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <a href="http://localhost:8880/servlet_war_exploded/login.html">登陆界面</a>
  <a href="http://localhost:8880/servlet_war_exploded/Register.html">注册界面</a>
  </body>
</html>

配置好tomacat后运行
运行效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试一下注册
当两次密码不一致的时候
在这里插入图片描述
在这里插入图片描述
注册成功后会自动跳转到登录界面
在这里插入图片描述
在这里插入图片描述
数据库方面
在这里插入图片描述
在这里插入图片描述
以上便是今天全部内容欢迎咨询各种疑难杂症

好的,这是一个常见的Web开发问题,下面是一个简单实现方式: 1. 创建数据库表 首先,需要在MySQL数据库中创建一个用户表,例如: ```sql CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 2. 编写登录页面 在JSP中编写一个登录页面,包括用户名和密码的输入框以及登录按钮,例如: ```html <form action="login" method="post"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <input type="submit" value="登录"> </form> ``` 3. 编写ServletServlet中处理登录请求,首先获取用户输入的用户名和密码,然后查询数据库中是否存在对应的用户记录,如果存在则认为登录成功,否则登录失败。例如: ```java public class LoginServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户输入的用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); // 查询数据库中是否存在对应的用户记录 String sql = "SELECT * FROM user WHERE username = ? AND password = ?"; try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC", "root", "password"); PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, username); stmt.setString(2, password); try (ResultSet rs = stmt.executeQuery()) { if (rs.next()) { // 登录成功,将用户信息存入Session中 HttpSession session = request.getSession(); session.setAttribute("username", username); // 跳转到欢迎页面 response.sendRedirect("welcome.jsp"); } else { // 登录失败,返回错误信息 request.setAttribute("error", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } catch (SQLException e) { throw new ServletException(e); } } } ``` 4. 编写欢迎页面 在JSP中编写一个欢迎页面,显示用户登录成功的信息,例如: ```html <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎</title> </head> <body> <h1>欢迎,<%= session.getAttribute("username") %>!</h1> <a href="logout">退出</a> </body> </html> ``` 5. 编写退出功能 在Servlet中编写一个退出功能,清除Session中的用户信息,例如: ```java public class LogoutServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 清除Session中的用户信息 HttpSession session = request.getSession(); session.removeAttribute("username"); // 跳转到登录页面 response.sendRedirect("login.jsp"); } } ``` 6. 配置Web.xml 最后,在Web.xml中配置Servlet和JSP的映射关系,例如: ```xml <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.example.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>LogoutServlet</servlet-name> <servlet-class>com.example.LogoutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LogoutServlet</servlet-name> <url-pattern>/logout</url-pattern> </servlet-mapping> ``` 这样就完成了一个简单Jdbc+Servlet+Jsp+MySQL实现登录功能的Web应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南师大蒜阿熏呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值