JavaWeb使用JDBC完成登录

步骤

一、创建数据库和表并执行查询操作

-- 判断存在即删除数据库
drop database if exists mydb;
-- 创建数据库
create database mydb;
-- 使用数据库
use mydb;
-- 删除重复的表
drop table if exists t_user;
-- 创建t_user表
create table t_user(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
-- 新增
insert into t_user(username,password,phone,address)values('张三','666','18965423548','南阳');
insert into t_user(username,password,phone,address)values('李四','333','18754263548','许昌');
insert into t_user(username,password,phone,address)values('小美','123','18565234759','信阳');
-- 查询
#select * from t_user where username=? and password=?
select * from t_user;
-- 创建t_goods表
create table t_goods(
gid int primary key auto_increment,
gname varchar(20),
price double,
mark varchar(200)
);
-- 新增
insert into t_goods(gname,price,mark) values('泡面',4.5,'够香够辣就是这个味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉质细腻Q弹!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰凉随心爽!');
-- 查询
select * from t_goods;


二、创建两个与表名相似的实体类User和Goods

package com.chen.bean;

public class User {
    private Integer uid;
    private String username;
    private String password;
    private String phone;
    private String address;
    //无参构造函数
    public User() {
    }
    //set和get方法
    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    //toString方法

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}
package com.chen.bean;

public class Goods {
    private Integer gid;
    private String gname;
    private Double price;
    private String mark;
    //无参构造函数
    public Goods() {
    }
    //set和get方法

    public Integer getGid() {
        return gid;
    }

    public void setGid(Integer gid) {
        this.gid = gid;
    }

    public String getGname() {
        return gname;
    }

    public void setGname(String gname) {
        this.gname = gname;
    }

    public Double getPrice() {
        return price;
    }

    public void setPrice(Double price) {
        this.price = price;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    //toString方法

    @Override
    public String toString() {
        return "Goods{" +
                "gid=" + gid +
                ", gname='" + gname + '\'' +
                ", price=" + price +
                ", mark='" + mark + '\'' +
                '}';
    }
}

三、登录操作

index.jsp页面

<html>
  <head>
    <title>第一个Web项目</title>
  </head>
  <body>
  <h2>欢迎学习Java Web!</h2>
  <a href="login.jsp">去登录</a>
  </body>
</html>

login.jsp页面 

<html>
<head>
    <title>登录页</title>
</head>
<body>
<h2>登录</h2>
<!--action是表单要提交的地址 method表单提交的方式 -->
<form action="login" method="post">
    账户:<input type="text" name="username" value=""> <br>
    密码:<input type="password" name="password" value=""> <br>
    <input type="submit" value="登录">
</form>
</body>

zhuye.jsp页面 

<html>
<head>
    <title>主页</title>
</head>
<body>
<h2>欢迎来到主页!</h2>
</body>
</html>

error.jsp页面 

<html>
<head>
    <title>错误页</title>
</head>
<body>
<h2>出错啦!</h2>
<a href="login.jsp">返回登录</a>
</body>
</html>

使用JDBC完成登录

1.设置请求和响应的编码

package com.chen.servlet;

import com.chen.bean.User;

import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置请求和响应的编码
        request.setCharacterEncoding("utf-8");//设置请求的编码格式
        response.setCharacterEncoding("utf-8");//设置响应的编码格式
        response.setContentType("text/html;charset=UTF-8");//设置响应的格式为:文本/html;中文编码
       
    }
}

2.获取请求参数

        //2.获取请求参数
        String username = request.getParameter("username");//根据表单的name属性获取用户输入的值
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);

3.业务处理-JDBC

 3.1、加载驱动包

 3.2、获得数据库连接对象

3.3、定义sql语句

3.4、获取预处理对象

3.5、传参

3.6、执行sql语句

3.7、结果集处理

3.8、关闭资源

        //3.业务处理-JDBC
        Connection con = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User login = null;
        try{
            //1.加载驱动包
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.获得数据库连接对象
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
            //3.定义sql语句
            String sql = "select * from t_user where username=? and password=?";
            //4.获取预处理对象
            pstm = con.prepareStatement(sql);
            //5.传参
            pstm.setObject(1,username);
            pstm.setObject(2,password);
            //6.执行sql语句
            rs = pstm.executeQuery();
            //7.结果集处理
            if(rs.next()){
                login = new User();
                //从结果集中获取数据,然后封装到实体类对象中
                login.setUid(rs.getInt("uid"));
                login.setUsername(rs.getString("username"));
                login.setPassword(rs.getString("password"));
                login.setPhone(rs.getString("phone"));
                login.setAddress(rs.getString("address"));
            }

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //8.关闭资源
            try{
                if(rs!=null){
                   rs.close();
                }
                if(pstm!=null){
                    pstm.close();
                }
                if(con!=null){
                    con.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }

4.判断业务处理结果,给前端做出响应

        //4.判断业务处理结果,给前端做出响应
        if(login!=null){
            //登录成功
            response.sendRedirect("zhuye.jsp");
        }else{
            //登录失败
            response.sendRedirect("error.jsp");
        }

运行后的浏览器页面

 

 

 

 控制台页面

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值