用户的登录和注册idea javaweb jdbc mysql

创建javaweb项目

用maven创建项目
在这里插入图片描述
设定为web,有报错警告什么的就直接按照提示解决
在这里插入图片描述
添加local tomcat
在这里插入图片描述

变成这个样子

在这里插入图片描述
第一次要先启动tomcat服务,然后才能运行代码,修改代码后需要更新否则还是服务用的还是之前的缓存。
在这里插入图片描述

在这里插入图片描述
新建一个文件夹,然后对该文件夹右键,选择mark directory as --> source root ,然后就像java这个文件一样变蓝,在该文件夹下,可以创建包。

要写jsp的话,要导入这三个jar包

在这里插入图片描述
数据库连接要把jar放在WEB-INF目录下(的lib下)

mysql8.0 导出sql

导出sql文件

代码

在数据库访问公共类中写了操作数据库的几个步骤,即加载驱动,创建连接,操作数据库,关闭数据库,提高了代码的复用性。通过prepareStatement 对象执行动态sql语句,查找输入用户名的密码。若查找为空,则用户名错误,若查找密码与输入密码不同则密码错误,弹窗提示错误类型并跳转回登录界面,若用户名和密码正确跳转到欢迎界面。注册:在login界面点击注册按钮跳转到singup界面填写注册信息,注册由表单提交到adduser界面,通过prepareStatement 对象执行数据库插入操作,完成注册。

jsp文件不能放在WEB-INF文件夹下,否则服务访问不了

设计数据库访问公共类DbUtil

package tools;
import java.sql.*;
public class DbUtil {
    //声明连接数据库的信息
    private static final String DRIVER_PATH = "com.mysql.cj.jdbc.Driver";    //驱动路径
    private static final String URL = "jdbc:mysql://localhost:3306/test3?serverTimezone=UTC";
    private static final String USER="root";
    private static final String PASSWORD="qaz,wsx,123";

    //声明JDBC相关对象
    protected static Statement s=null;
    protected static ResultSet rs=null;
    protected static Connection coon=null;

    /**
     * 创建数据库连接
     * @return coon
     */
    public static synchronized Connection getConnection() {
        try{
            Class.forName(DRIVER_PATH).newInstance();
            coon=DriverManager.getConnection(URL,USER,PASSWORD);

        }
        catch (Exception e){
            e.printStackTrace();
        }
        if (coon != null){
           System.out.println("数据库连接成功");
        }else {
            System.out.println("数据库连接失败");}
        return coon;
    }


    /**
     * 执行sql的插入,删除,更新语句
     * @param sql SQL语句,字符串类型
     * @return 执行结果,int类型
     */
    public static int executeUpdate(String sql){
        int result=0;
        try{
            s=getConnection().createStatement();
            result=s.executeUpdate(sql);
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 执行select语句
     * @param sql SQL语句,字符串类型
     * @return 结果集,ResultSet
     */
    public static ResultSet executeQuery(String sql){
        try{
            s=getConnection().createStatement();
            rs=s.executeQuery(sql);
        }
        catch (Exception e){
            e.printStackTrace();
        }
        return rs;
    }

    /**
     * 执行动态sql语句
     * @param sql SQL语句,字符串类型
     * @return prepareStatement对象
     */
    public static PreparedStatement executePreparedStatement(String sql){
        PreparedStatement ps=null;
        try{
            ps=getConnection().prepareStatement(sql);
        }
        catch(Exception e){
            e.printStackTrace();
        }
        return ps;
    }

    /**
     * 关闭数据库连接对象
     */
    public static void close(){
        try{
            if(rs!=null){
                rs.close();
            }
            if(s!=null){
                s.close();
            }
            if(coon!=null){
                coon.close();
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

}

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
<form action="testCheck.jsp" method="get">
    <table align="center">
        <tr>
            <td align="right">用户:</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td align="right">密码:</td>
            <td> <input type="password" name="password"></td>
        </tr>
        <tr>
            <td ><input type="submit" value="登录">

            <td ><input type="button" class="button" onclick="window.location.href='singup.jsp'" value="注册" >
        </tr>
    </table>
</form>
</body>
</html>

singup.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>signup</title>
</head>
<body>
<form action="adduser.jsp" method="get">
    <table align="center">
        <tr>
            <td align="right">用户名:</td>
            <td><input type="text" name="setUsername"></td>
        </tr>
        <tr>
            <td align="right">设置密码:</td>
            <td> <input type="password" name="setPassword"></td>
        </tr>
        <tr>
            <td ><input type="submit" value="注册">
        </tr>
    </table>
</form>
</body>
</html>

addusert.jsp

<%@ page import="java.sql.PreparedStatement" %>
<%@ page import="tools.DbUtil" %>
<%@ page import="java.sql.*" %><%--
  Created by IntelliJ IDEA.
  User: 11759
  Date: 2020/11/7
  Time: 22:25
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>adduser</title>
</head>
<body>
<%
    //设置请求报文的字符编码为 utf-8
    request.setCharacterEncoding("utf-8");
    //获取表单收入域的值
    String setUsername=request.getParameter("setUsername");
    String setPassword=request.getParameter("setPassword");

    //编写动态sql语句
    String sql_adduser="INSERT INTO users VALUES(?,?)";
    PreparedStatement ps= DbUtil.executePreparedStatement(sql_adduser);
    int result=0;
    try {
        ps.setString(1,setUsername);
        ps.setString(2,setPassword);
        result=ps.executeUpdate();
        ps.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    if(result>0){
        out.print("<script language='javascript'>alert('注册成功!');window.location.href='login.jsp';</script>");
    }
    else{
        out.print("<script language='javascript'>alert('注册失败');</script>");
    }
%>
</body>
</html>

testcheck.jsp

<%@ page import="java.sql.PreparedStatement,java.sql.*,tools.DbUtil" %><%--
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>check</title>
</head>
<body>
<%
    //设置请求报文的字符编码为 utf-8
    request.setCharacterEncoding("utf-8");
    //获取表单收入域的值
    String username=request.getParameter("username");
    String password=request.getParameter("password");

    //编写动态sql语句
    String sql="SELECT password FROM users WHERE username=?";
    PreparedStatement ps=DbUtil.executePreparedStatement(sql);
    ResultSet rs=null;
    String p=null;
    try {
        ps.setString(1,username);    //为动态sql语句赋值为输入的用户名
        rs=ps.executeQuery();//查询得到密码结果集
        while(rs.next()){
            p=rs.getString("password");//查询数据库得到用户密码
        }
        rs.close();
        ps.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    if(p==null){
        //显示未注册
        out.print("<script language='javascript'>alert('UserName Wrong!!');window.location.href='login.jsp';</script>");
    }
    else if(p.equals(password)){
        //进入欢迎界面
        session.setAttribute("username", username);
        request.getRequestDispatcher("greet.jsp").forward(request, response);
    }
    else{
        //密码错误
        out.print("<script language='javascript'>alert('Password Wrong!!');window.location.href='login.jsp';</script>");

        //response.sendRedirect("Login.jsp");
    }
%>
</body>
</html>

导出war包

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值