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知识库 -> 登录注册+文件格式检测(jsp+servlvt实现) -> 正文阅读

[Java知识库]登录注册+文件格式检测(jsp+servlvt实现)

项目场景:

使用jsp+servlet实现简单的注册登录功能,以及文件格式检测功能。

开发过程:

项目创建

在这里插入图片描述

  • 选择java工程
    在这里插入图片描述

  • 选择javaSDK版本和tomcat版本(根据自己电脑上的版本进行选择)
    在这里插入图片描述

  • web Application版本选择(版本跟我不一样也没事,问题不大)
    在这里插入图片描述

  • 目录结构
    在这里插入图片描述

  • 服务器首次启动
    在这里插入图片描述
    下图为浏览器显示效果
    在这里插入图片描述
    通过url地址,我们发现实际访问的是index.jsp页面
    在这里插入图片描述
    这说明,服务器启动的时候,默认访问的就是index.jsp文件

    事实证明,确实如此。浏览器显示的,确实是我们index.jsp中写的内容
    在这里插入图片描述

MVC编程模式

在讲功能实现的时候,先介绍一下什么叫作MVC

MVC是Move,View,Controller的缩写,代表了三种责任

  • Move表示模型:用于存储数据,以及处理用户的业务逻辑
  • View表示视图:用于向控制器提交数据,然后显示模型中的数据
  • Controller表示控制器:用于接收视图发过来的请求,然后从数据交给模型,讲处理完后的视图发给视图

基于 Servlet 的 MVC 模式的具体实现如下。

  • 模型:一个或多个 JavaBean 对象,用于存储数据(实体模型,由 JavaBean 类创建)和处理业务逻辑(业务模型,由一般的
    Java 类创建)。

  • 视图:一个或多个 JSP 页面,向控制器提交数据和为模型提供数据显示,JSP 页面主要使用 HTML 标记和 JavaBean
    标记来显示数据。

  • 控制器:一个或多个 Servlet 对象,根据视图提交的请求进行控制,即将请求转发给处理业务逻辑的

在这里插入图片描述
详细点的话,我们项目的架构就是下图这样
在这里插入图片描述

登录注册功能

思考一下,要怎么实现登录功能呢?

  • 第一步,要打开登录页面的网页,然后输入账号密码

  • 第二步,当我们点击登录以后,html页面要把我们输入的信息发给服务器

  • 第三步,服务器将前端页面传来的用户数据,在数据库中查找

  • 第四步,如果数据库中刚好有前端传来的用户数据,那就让登录成功实现

那要怎么实现注册呢

  • 第一步,打开注册页面,然后输入要注册的用户名和密码
  • 第二步,点击注册之后,html将我们的注册信息交给后台服务器处理
  • 第三步,将注册的信息存入数据库

下面让我们来实现这些流程

1 首先要创建一个用户表

这里设置id为自增

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(32) NOT NULL,
  `email` varchar(200) DEFAULT NULL,
  PRIMARY KEY (`id`),
)

在这里插入图片描述
先给数据库添加条测试数据
在这里插入图片描述
2 构造三层架构

根据我们的架构图,创建出三层架构
在这里插入图片描述

  • dao层:持久层,用来跟数据库进行交互
  • service层:调用持久层,用来处理业务逻辑
  • web层:视图层,用来调用service层,同时获取请求参数,封装成Bean

把自己的包目录创建出来
在这里插入图片描述
然后创建三层架构所属的包
在这里插入图片描述
我们首先在dao层中创建一个userDao接口,用来编写登录和注册的方法

在这里插入图片描述
现在返回类型User报红,这是因为我们还没有写相应的Bean对象,所以我们需要再创建一个pojo包,存放我们的Pojo对象

在这里插入图片描述
我们创建的UserBean如下

package com.pan.project.pojo;

public class User {
    private int id;
    private String username;
    private String password;
    private String email;

    public User() {

    }
//因为id是自动生成的,所以我们在赋值的时候,不用指定id
    public User(String username, String password, String email) {
        this.username = username;
        this.password = password;
        this.email = email;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

User类对应的是我们创建出来的数据表
在这里插入图片描述
Pojo类是用来存储数据的载体,User这个类就是user这个表生成的一个实体类

现在回到我们的dao包中,看看我们的UserDao接口

这时候User已经不报红了
在这里插入图片描述
登录的方法写好我们再写一个注册的方法

在这里插入图片描述

package com.pan.project.dao;

import com.pan.project.pojo.User;

public interface UserDao {
    /**
     * 根据用户名和密码查询用户信息
     * @param username 用户名
     * @param password 密码
     * @return
     */
    //我们要将查询结果,封装成一个User Bean对象
     User findUser(String username, String password);

    /**
     * 用来存放用户信息
     * @param user
     * @return
     */
     int save(User user);
}

接口写完之后,我们就要写这个接口的实现类
在这里插入图片描述
现在只是重写了两个方法,方法里的内容还没有写。

那要写什么内容呢?

在前面说过,我们dao层是负责与数据库交互的。

所以我们需要在dao层的实现类中做到与数据库连接并进行交互。

数据库连接
1.先写数据库连接的配置文件
在这里插入图片描述

username=root //你数据库的用户名
password=root //你数据库的密码
url=jdbc:mysql://localhost:3306/book?serverTimezone=GMT%2B8//book是我的数据库名,到时候要写你自己的
driverClassName=com.mysql.cj.jdbc.Driver
initialSize=5
maxActive=10

此外我们还需要两个jar包,也就是上图jar中的包
在这里插入图片描述

  • druid:数据库连接池
  • mysql-connector-java-8.0 :是MySQL提供的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包

我们现在创建的lib并不能让idea知道这是一个lib包,所以我们需要赋给它权限
在这里插入图片描述
一旦将它赋于权限之后,它就是真正的lib包了。包下的jar就会自动解压
在这里插入图片描述
连接数据库前的准备做好之后,我么现在就开始写代码进行连接了。

创建一个工具类进行数据库的连接。
在这里插入图片描述

package com.pan.project.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtil {
    private static DataSource ds;//创建连接池
    static {
        try{
            //获取配置文件
            Properties properties = new Properties();
            InputStream t = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
            properties.load(t);
            //初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(properties);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static Connection getConnect() throws SQLException {
        //获取数据库连接Connection对象
        return ds.getConnection();
    }
}


工具类创建好之后,我们来测试一下,这个工具类是否真能获取连接

往lib包中,丢一个junit的jar包,就可以使用注解@Test进行测试了

在这里插入图片描述

package com.pan.project.test;

import com.pan.project.util.JdbcUtil;
import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

public class test {
    @Test  //Test注解 用来指名这是一个测试方法
    public void textGetConnect(){
        try {
            Connection connection =  JdbcUtil.getConnect();
            System.out.println(connection);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

在这里插入图片描述
说明我的连接能成功获取

(未完待续…)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-04 10:54:21  更:2022-02-04 10:54:36 
 
开发: 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 10:48:17-

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