基于MVC模式和分层模式完成登录和注册

创建数据库

创建需要跳转的页面,完成对应页面内容

创建实体类

package com.su.Bean;
 
public class User {
    private Integer uid ;
    private String username;
    private String password;
    private String phone ;
    private String 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 + '\'' +
                '}';
    }
}

创建jdbc工具类

package com.su.util;
 
import java.sql.*;
 
public class JDBCUtil {
    private static String driver = "com.mysql.cj.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
    private static String user = "root";
    private static String password = "root";
    private static Connection con = null;
 
    /**
     * 获得数据库连接对象
     */
    public static Connection getCon() throws ClassNotFoundException, SQLException {
        try {
            //1.加载驱动
            Class.forName(driver);
            //2.获取数据库连接
            con= DriverManager.getConnection(url,user,password);
        } catch (Exception e) {
           //异常打印
            e.printStackTrace();
        }
        return con;
    }
    //方法重载
    public static void close(ResultSet rs, PreparedStatement ps,Connection con){
        try {
            if (rs!=null){
                rs.close();
            }
            if (ps!=null){
                ps.close();
            }
            if (con!=null){
                con.close();
            }
 
        }catch (Exception e){
           e.printStackTrace();
        }
 
    }
 
    public static void close(PreparedStatement ps, Connection con) {
        try {
 
            if (ps!=null){
                ps.close();
            }
            if (con!=null){
                con.close();
            }
 
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

创建接口

package com.su.dao;
 
import com.su.Bean.User;
 
public interface UserDao {
 
    User login(String username, String password);
 
    int register(User user);
}

实现接口

package com.su.dao.impl;
 
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.util.JDBCUtil;
 
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
 
public class UserDaoImpl implements UserDao {
    private Connection con=null;//数据库连接对象
    private PreparedStatement ps=null;//预处理对象
    private ResultSet rs=null;//结果集对象
    private int row=0;//增删改受影响的行数
    User login=null;
 
    @Override
    public User login(String username, String password) {
        try {
            con= JDBCUtil.getCon();
            //3.定义登录的sql语句
            String sql="select * from  t_user where username=? and password=?";
            //4.获取预处理对象
            ps=con.prepareStatement(sql);
            //5.传参
            ps.setObject(1,username);
            ps.setObject(2,password);
            //6.执行查询
            rs=ps.executeQuery();
            //7.解析结果集
            if(rs.next()){
                login=new User();
                //从结果集中获取数据,然后封装当实体类对象中
                int uid=rs.getInt("uid");
                login.setUid(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.关闭资源
            JDBCUtil.close(rs,ps,con);
        }
        return login;
    }
 
    @Override
    public int register(User user) {
        try {
            con=JDBCUtil.getCon();
            //定义新增(注册)的sql语句
            String sql="insert into t_user(username,password,phone,address) values (?,?,?,?)";
            //获取预处理对象
            ps=con.prepareStatement(sql);
            //传参
            ps.setObject(1,user.getUsername());
            ps.setObject(2,user.getPassword());
            ps.setObject(3,user.getPhone());
            ps.setObject(4,user.getAddress());
            //执行sql语句
            row=ps.executeUpdate();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtil.close(ps,con);
        }
        return row;
    }
}

完成登录页面

package com.su.servlet;
 
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.dao.impl.UserDaoImpl;
 
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 {
        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 UserDaoImpl();
        User login=userDao.login(username,password);
 
        //判断登录的用户信息是否为空
        if(login!=null){
          //登录成功,跳转到主页
            response.sendRedirect("zhuye.jsp");//指定跳转的页面
        }else{
          //登录失败,跳转到错误页
            response.sendRedirect("error.jsp");
        }
    }
 
 
}

完成注册页面

package com.su.servlet;
 
import com.su.Bean.User;
import com.su.dao.UserDao;
import com.su.dao.impl.UserDaoImpl;
 
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("/register")
public class Register 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");//以什么样的格式(文本/网页)响应
     //2.获取请求的参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String phone = request.getParameter("phone");
        String address= request.getParameter("address");
     //封装到User对象中
     User user=new User();
     user.setUsername(username);
     user.setPassword(password);
     user.setPhone(phone);
     user.setAddress(address);
 
         System.out.println(user);
         //JDBC操作
        UserDao userDao=new UserDaoImpl();
        int row=userDao.register(user);
 
        //3.做出响应
        if(row>0){
           response.sendRedirect("login.jsp");
        }else {
           response.sendRedirect("register.jsp");
        }
 
    }
}

HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTP 协议的工作过程:当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。

什么是el:

EL( Expression Language意思为表达式语言,可以获取域对象中的数据,它提供了在JsP中简化表达式的方法,让Jsp的代码更加简化。

是通过${}从作用域对象中自动获取数据,如果是对象可以通过.访问其属性。

什么是jstl:

JSTL(Java server pages standarded tag library,即JSP标准标签库)开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度

在页面中导入jstl的核心类库

<%@ page import="java.util.List" %>
<%@ page import="com.chen.bean.Goods" %><%--
  Created by IntelliJ IDEA.
  User: 桃
  Date: 2023/2/17
  Time: 20:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!---在页面导入jstl的核心类核--->
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>
<!---EL表达式是通过 $ { } 从作用域对象中自动获取数据,如果对象可以通过,访问其属性--->
<h2>欢迎来自${user.address}的${user.username}来到三次元世界购物</h2>
<table>
    <tr>
        <th>商品编号</th>
        <th>商品名称</th>
        <th>商品价格</th>
        <th>商品说明</th>
    </tr>
    <!--items:要遍历的集合元素 var:临时变量-->
    <c:forEach items="${goodsList}" var="goods">
        <tr>
            <td>${goods.gid}</td>
            <td>${goods.gname}</td>
            <td>${goods.price}</td>
            <td>${goods.mark}</td>
        </tr>
    </c:forEach>
<%--    <%--%>
<%--        //获取session对象--%>
<%--        HttpSession session1=request.getSession();--%>
<%--        //从session对象中获取--%>
<%--        List<Goods> goodsList = (List<Goods>) session1.getAttribute("goodsList");--%>
<%--        for (Goods goods:goodsList){--%>
<%--    %>--%>
<%--        <tr>--%>
<%--            <td><%=goods.getGid()%></td>--%>
<%--            <td><%=goods.getGname()%></td>--%>
<%--            <td><%=goods.getPrice()%></td>--%>
<%--            <td><%=goods.getMark()%></td>--%>
<%--        </tr>--%>
<%--    <%--%>
<%--        }--%>
<%--    %>--%>
</table>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值