Web connection database completes login registration

​​​​​​The complete file directory is as follows:

  1. Writing the main page (.jsp file)

<html>
  <head>
    <title>淘宝网</title>
  </head>
  <body>
  <h1>欢迎来到主页面!</h1>
  <a href="Login.jsp">去登陆</a><br>
  <a href="register.jsp">去注册</a>
  </body>
</html>

Give customers two options (login/register)---the completion page is as follows

1. Login page writing 

<html>
<head>
    <title>登陆页面</title>
</head>
<body>
    <h2>欢迎学习WEB!</h2>
    <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>
</html>

1.2 Registration page

<html>
<head>
    <title>注册页面</title>
</head>
<body>
    <h1>注册页面</h1>
    <form action="register" method="post">
        账号:<input type="text" name="username" value=""> <br>
        密码:<input type="password" name="password" value=""> <br>
        再次输入密码:<input type="password" name="password" value=""> <br>
        手机号:<input type="text" name="phone" value=""> <br>
        地址:<input type="text" name="address" value=""> <br>
        <input type="submit" value="注册">&nbsp;&nbsp;&nbsp;
        <a href="Login.jsp">已有账号?点击登录</a>
    </form>
</body>
</html>

1.3 Project page

<html>
<head>
    <title>主页</title>
</head>
<body>
    <h1>欢迎项目主页</h1>
    <h2>主页信息展示</h2>
    <table>
        <thead>
        <tr>
            <th>商品编号</th>
            <th>商品名称</th>
            <th>商品价格</th>
            <th>商品介绍</th>
        </tr>
        </thead>
 
        <tbody id="list">
            <%
                // 获取session
                HttpSession session1 = request.getSession();
                // 从session中取出数据
                List<Goods> goodsList = (List<Goods>) session1.getAttribute("goodsList");
                // 遍历集合中的元素
                for (Goods goods : goodsList) {
            %>
                <!--使用java脚本获取集合中对象的元素,放入html标签中-->
                <tr>
                    <td><%=goods.getGid()%></td>
                    <td><%=goods.getGname()%></td>
                    <td><%=goods.getPrice()%></td>
                    <td><%=goods.getMark()%></td>
                </tr>
            <%
                }
            %>
 
        </tbody>
    </table>
 
</body>
</html>

 1.4 Error page

<html>
<head>
    <title>错误页</title>
</head>
<body>
    <h1>密码输入错误!!!</h1>
    <a href="index.jsp">回到主页</a> <br>
    <a href="Login.jsp">回到登录页</a>
</body>
</html>

 2. Login page writing

<html>
<head>
    <title>登陆页面</title>
</head>
<body>
    <h1>登陆页面</h1>
    <h2>欢迎学习WEB!</h2>
    <form action="login" method="post">
        账号:<input type="text" name="username" value=""> <br>
        密码:<input type="password" name="password" value=""> <br>
        <input type="submit" value="登录">&nbsp;&nbsp;&nbsp;
        <a href="register.jsp">没有账号?点击注册</a>
    </form>
</body>
</html>

2.1 Entity class

 

package com.man.dao;
 
public class User {
    private Integer uid;
    private String username;
    private String password;
    private String phone;
    private String address;
 
    public User() {
    }
 
    public User(Integer uid, String username, String password, String phone, String address) {
        this.uid = uid;
        this.username = username;
        this.password = password;
        this.phone = phone;
        this.address = address;
    }
 
    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;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

 goods class

package com.man.bean;
 
public class Goods {
 
    private Integer gid;
    private String gname;
    private Double price;
    private String mark;
 
 
    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;
    }
 
    @Override
    public String toString() {
        return "Goods{" +
                "gid=" + gid +
                ", gname='" + gname + '\'' +
                ", price=" + price +
                ", mark='" + mark + '\'' +
                '}';
    }
}

 

2.2 Write login java code

package com.man.servlet;
 
 
import com.man.services.User;
 
import javax.servlet.ServletException;
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 {
        System.out.println("Login-doGet...");
        doPost(request,response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Login-doPost...");
        // 1.设置请求和响应的编码格式,以及响应的格式
        request.setCharacterEncoding("utf-8"); // 设置获取数据的格式
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html:charset=UTF-8");//以什么样的格式(文本/网页)响应
 
        // 2.获取请求的参数
        String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
 
        // 3.执行业务处理
        Connection connection = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        User login = null;
 
 
        try{
            // 1.加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2.获取数据库连接
            connection = 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 = connection.prepareStatement(sql);
            // 5.传参
            pstm.setObject(1,username);
            pstm.setObject(2,password);
            // 6.执行查询
            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 (connection!=null){
                    connection.close();
                }
 
            }catch (Exception e){
                e.printStackTrace();
            }
 
        }
 
 
        // 4.判断登陆信息是否为空
        if (login!=null){
            // 登陆成功,跳转到主页
            response.sendRedirect("zhuye.jsp");
        }else {
            // 登陆失败,跳转到错误页
            response.sendRedirect("error.jsp");
        }
    }
}

 userDao class

package com.man.dao;
 
import com.man.bean.User;
import com.man.util.JDBCUtil;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class UserDao {
 
    Connection con = null;
    ResultSet rs = null;
    PreparedStatement pstm = null;
    User login = null;
    int row = 0;
 
    public User login(String username, String password) {
        try{
            // 1.获取数据库连接
            con = JDBCUtil.getCon();
            // 2.定义登陆的sql语句
            String sql = "select * from t_user where username=? and password=?" ;
            // 3.获取预处理对象
            pstm = con.prepareStatement(sql);
            // 4.传参
            pstm.setObject(1,username);
            pstm.setObject(2,password);
            // 5.执行查询
            rs = pstm.executeQuery();
            // 6.解析结果集
            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();
        }
        return login;
    }
 
    public int register(User user) {
        try{
            // 1.获取数据库连接
            con = JDBCUtil.getCon();
            // 2.定义注册的新增sql语句
            String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
            // 3.获取预处理对象
            pstm = con.prepareStatement(sql);
            // 4.传参
            pstm.setObject(1,user.getUsername());
            pstm.setObject(2,user.getPassword());
            pstm.setObject(3,user.getPhone());
            pstm.setObject(4,user.getAddress());
            // 5.执行更新(增删改)
            row = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        } finally {
            JDBCUtil.close(con,pstm);
        }
 
        return row;
    }
}

 

login class code

package com.man.servlet;
 
 
import com.man.bean.User;
import com.man.dao.UserDao;
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("/login")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Login-doGet...");
        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");//以什么样的格式(文本/网页)响应
 
        // 2.获取请求的参数
        String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
 
        // 3.执行业务处理
        UserDao userDao = new UserDao();
        User login = userDao.login(username, password);
 
        // 4.判断登陆信息是否为空
        if (login!=null){
            // 登陆成功,当前servlet业务处理完毕---后续操作由别人完成---请求别的地址
            request.getRequestDispatcher("selectAllGoods").forward(request,response);
        }else {
            // 登陆失败,跳转到错误页
            response.sendRedirect("error.jsp");
        }
    }
}

 SelectAllGoods class

package com.man.servlet;
 
import com.man.bean.Goods;
import com.man.dao.GoodsDao;
 
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
 
@WebServlet("/selectAllGoods")
public class SelectAllGoods extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("SelectAllGoods-doGet...");
        doPost(request,response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.执行查询业务
        // 2.查询所有商品信息
        GoodsDao goodsDao = new GoodsDao();
        List<Goods> goodsList = goodsDao.selectAllGoods();
        System.out.println(goodsList);
        // 3.把数据传递到前端页面
        // 3.1通过request获取session对象,该对象可以向前端传输数据的容器
        HttpSession session = request.getSession();
        // 4.向session中存入商品信息集合
        session.setAttribute("goodsList",goodsList);
 
        // 4.登录成功,跳转到登录页
        response.sendRedirect("zhuye.jsp");
 
    }
}

 

2.3 Tool files

package com.man.util;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class JDBCUtil {
 
    private static String driver = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
    private static String user = "root";
    private static String psw = "root";
 
    int row = 0;
    static Connection con = null;
 
    public static Connection getCon(){
 
        try{
            // 1.加载数据库驱动
            Class.forName(driver);
            // 2.获取数据库连接
            con = DriverManager.getConnection(url, user, psw);
 
        } catch (Exception e){
            e.printStackTrace();
        }
        return con;
    }
 
    public static void close(ResultSet rs,Connection con,PreparedStatement pstm){
        // 关闭资源
        try{
            if (rs!=null){
                rs.close();
            }
            if (pstm!=null){
                pstm.close();
            }
            if (con!=null){
                con.close();
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static void close(Connection con,PreparedStatement pstm){
        // 关闭资源
        try{
            if (pstm!=null){
                pstm.close();
            }
            if (con!=null){
                con.close();
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

Enter the correct information and enter the main page after database comparison.

Otherwise, it will enter the error page. 

3. Registration page 

<html>
<head>
    <title>注册页面</title>
</head>
<body>
    <h2>欢迎学习WEB!</h2>
    <form action="zhuce" method="post">
        账号:<input type="text" name="username" value=""> <br>
        密码:<input type="password" name="password" value=""> <br>
        再次输入密码:<input type="password" name="password" value=""> <br>
        手机号:<input type="text" name="phone" value=""> <br>
        地址:<input type="text" name="address" value=""> <br>
        <input type="submit" value="注册">
    </form>
</body>
</html>

3.1Write registration java code

package com.man.servlet;
 
import com.man.dao.User;
import javax.servlet.ServletException;
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;
 
public class Zhuce extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Zhuce-doGet...");
        doPost(request, response);
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Zhuce-doPost...");
        // 1.设置请求和响应的编码格式,以及响应的格式
        request.setCharacterEncoding("utf-8"); // 设置获取数据的格式
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html:charset=UTF-8");//以什么样的格式(文本/网页)响应
 
        // 2.获取请求的参数
        String username = request.getParameter("username"); //根据表单的name属性获取用户输入的账号密码
        String password = request.getParameter("password");
        String phone = request.getParameter("phone");
        String address = request.getParameter("address");
        System.out.println(username);
        System.out.println(password);
        System.out.println(phone);
        System.out.println(address);
 
        // 3.执行业务处理
        Connection connection = null;
        PreparedStatement pstm = null;
        User zhuce = null;
        int a = 0;
 
        try{
            // 1.加载数据库驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2.获取数据库连接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC","root","root");
            // 3.定义登陆的sql语句
            String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
            // 4.获取预处理对象
            pstm = connection.prepareStatement(sql);
            // 5.传参
            pstm.setObject(1,username);
            pstm.setObject(2,password);
            pstm.setObject(3,phone);
            pstm.setObject(4,address);
            a = pstm.executeUpdate();
            zhuce = new User();
            zhuce.setUsername(username);
            zhuce.setPassword(password);
            zhuce.setPhone(phone);
            zhuce.setAddress(address);
            // 6.处理结果
            if (a > 0) {
                System.out.println("新增成功");
            } else {
                System.out.println("新增失败");
            }
        } catch (Exception e){
            e.printStackTrace();
        } finally {
            // 8.关闭资源
            try{
                if (pstm!=null){
                    pstm.close();
                }
                if (connection!=null){
                    connection.close();
                }
 
            }catch (Exception e){
                e.printStackTrace();
            }
 
        }
 
 
        // 4.判断登陆信息是否为空
        if (a > 0){
            // 登陆成功,跳转到主页
            response.sendRedirect("zhuye.jsp");
        }else {
            // 登陆失败,跳转到错误页
            response.sendRedirect("error.jsp");
        }
    }
}

//The code used to execute the business processing part and the login business code are in the same .java file

 @Override
    public int register(User user) {
        try{
            // 1.获取数据库连接
            con = JDBCUtil.getCon();
            // 2.定义注册的新增sql语句
            String sql = "insert into t_user(username,password,phone,address) values(?,?,?,?)" ;
            // 3.获取预处理对象
            pstm = con.prepareStatement(sql);
            // 4.传参
            pstm.setObject(1,user.getUsername());
            pstm.setObject(2,user.getPassword());
            pstm.setObject(3,user.getPhone());
            pstm.setObject(4,user.getAddress());
            // 5.执行更新(增删改)
            row = pstm.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        } finally {
            JDBCUtil.close(con,pstm);
        }
 
        return row;
    }

 

 Enter the information and click Register to automatically jump to the login page.

Enter the account and password you just registered and log in to the project homepage.

 

4. Complete the servlet mapping relationship configuration  

4.1 Mapping method one

<?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>
        <!-- 起别名 -->
        <servlet-name>login</servlet-name>
        <servlet-class>com.man.servlet.Login</servlet-class>
        <!-- servlet类所在的位置:类的全类名就是 包名.类名 -->
    </servlet>
    <!-- Servlet类的映射:Servlet用来处理哪个请求 -->
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    
    <servlet>
        <servlet-name>zhuce</servlet-name>
        <servlet-class>com.man.servlet.Zhuce</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>zhuce</servlet-name>
        <url-pattern>/zhuce</url-pattern>
    </servlet-mapping>
 
</web-app>

4.2 Mapping method two 

Write @WebServlet ("/the page you want to jump to") in the outermost layer of the code to complete the mapping

5.MYSQL code part

#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
 
 
#创建表
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;
 
 
create table t_goods
(
    gid int primary key auto_increment,
    gname varchar(20),
    price double,
    mark varchar(100)
);
 
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;
 

Guess you like

Origin blog.csdn.net/WJY898989/article/details/129099164