IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 理解MVC设计架构以及通过jsp、servlet访问数据库,前后端交互实现简单的注册、登录 -> 正文阅读

[Java知识库]理解MVC设计架构以及通过jsp、servlet访问数据库,前后端交互实现简单的注册、登录


前言

经过大概6周的时间刷完Java SE、Java 也叫Jakarta 雅加达的课程,收获满满,从最开始的变量、关键字、条件语句、数组、线性表、栈、队列、二叉树、红黑树到类、接口、集合、IO流、注解、反射、网络编程、到NIO、JDBC、再到EE的内置对象、作用域、状态保存、Servlet、Listener、Filter,这一路唯一的感觉就是我以前了解的Java只是个简介罢了!JVM,多线程、并发编程、继承、多态、还有更重要的面向对象的思想是更值得推敲的东西,本文只是对近6周学的一个小总结,后续会不断完善项目。也希望大家能看到最后,相信你一定有收获!


一、项目搭建

本次是实现简单的注册、登录并简单展示功能,仅适用初学者,深知bug很多,大佬勿喷。
项目整体架构及实现如下
在这里插入图片描述

实现逻辑
在这里插入图片描述

二、业务逻辑

1.注册

部分代码如下:

 public int save(User user) {
        // sql语句
        String sql ="insert into user(username,password) value(?,?)";
        Connection conn =null;
        PreparedStatement statement=null;
        conn = getConn();
        if(conn==null){
            return 0;
        }
        try {
            // 判断是否存在
            int byUsername = findByName(user);
            if (byUsername!=0){
                return 0;
            }
            statement = conn.prepareStatement(sql);
            statement.setString(1,user.getUsername());
            statement.setString(2,user.getPassword());
            // 返回受影响的行数
            return statement.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            closeAll(conn,statement,null);
        }
        return 0;
    }
    public int findByName(User user){
            String sql ="select username from user where username=? ";
            Connection conn =null;
            PreparedStatement statement=null;
            ResultSet resultSet=null;
            conn = getConn();
            if(conn==null){
                return 0;
            }
            try {
                boolean next=false;
                statement = conn.prepareStatement(sql);
                statement.setString(1,user.getUsername());
                resultSet = statement.executeQuery();
                if (resultSet==null){
                    return 0;
                }
                next= resultSet.next();
                if(next){
                    return 1;
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            finally {
                closeAll(conn,statement,resultSet);
            }
            return 0;
    }

2.登录

部分代码如下:

    public int loginFind(User user) {
        // sql语句
        String sql ="select username,password from user where username=? and password=?";
        Connection conn =null;
        PreparedStatement statement=null;
        ResultSet resultSet=null;
        // 获取连接
        conn = getConn();
        if(conn==null){
            return 0;
        }
        try {
            boolean next=false;
            //  获取资源
            statement = conn.prepareStatement(sql);
            statement.setString(1,user.getUsername());
            statement.setString(2,user.getPassword());
            resultSet = statement.executeQuery();
            if (resultSet==null){
                return 0;
            }
            // 找到返回 1
            next= resultSet.next();
            if(next){
                return 1;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            closeAll(conn,statement,resultSet);
        }
        return 0;
    }

3.basedao

package com.jess.dao;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author Jess
 * @date 2021/10/24
 */
public class BaseDao {
    public static Connection getConn() {
        Context ctx = null;
        try {
            ctx = new InitialContext();
            // 资源获取
            DataSource dataSource =
                    (DataSource) ctx.lookup("java:comp/env/dataSource/mysql/manage");
            return dataSource.getConnection();
        } catch (NamingException | SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

三、效果展示

1、注册

在这里插入图片描述

2、注册

在这里插入图片描述

3、登录成功

在这里插入图片描述

4、显示信息

在这里插入图片描述


四、总结

本文主要是对最近所学知识的一个总结和运用,下面我简单介绍一下业务逻辑

1、jsp 通过表单提交的数据–>get 、post方法向浏览器发送请求,

2、servlet负责解析请求存到内存,(request,respose)------service 作为属性为servlet提供服务,servlet 解析完数据以对象的形式存入内存。

3、service负责业务逻辑的处理,分别调用不同方法处理不同的业务dao层作为属性为service提供属性,

4、dao层通过上层传入的数据直接操作数据库

五、心得体会

本文还缺少很多很多模块,离真实的项目还有很长的距离,比如:没有编写接口dao层,规范性不够,代码实现的耦合性也太高了,很多常量为定义,登录密码未加密,jsp页面也为放到WEB-INF下,可以直接访问,jsp页面也没有试验异步刷新,前端页面也未处理,直接简单的找了两张图片等,但是,很适合初学者了解其中原理,请看上面的总结。
看到这里的宝贝,希望能给个免费的点赞,谢谢大家。还有如果想要全部原码的可以在下方留言或者私信,希望我们可以互相交流,一起进步!



这一路一定会有不如意,一定会有各种为什么,一定也有让你失望、又或者羡慕的人,想一想,你和其他人又不同为什么一定要和别人一样呢。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 12:42:26  更:2021-10-27 12:43:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:10:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码