JavaWeb小项目——【源码】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

news2025/2/14 6:23:29

目录

  • 引出
  • 小项目要求
  • 固定的东西
    • 1.pom.xml文件配置 + web.xml文件配置
    • 2.util里面JDBC的DBUtils + 字符串工具StringUtils
    • 3.entity里面的PageInfo分页实体类+ResData响应标准格式
    • 4.filter里面的编码CharacterEncodingFilter和权限LoginAuthorFilter
    • 5.前端固定的js包和bootstrap包
  • 小项目源码
  • 总结

引出

使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

小项目要求

(一)题目要求
使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

(二)数据库设计(10分)
创建数据库woniu_note
(1)用户表:t_user,必要字段包含:用户名(username)、密码(passwd)
(2)文件夹表:t_folder,必要字段包含:文件夹id(id)、文件夹名(folder_name)
(3)笔记表:t_note,必要字段包含:笔记id(id)、笔记标题(title)、笔记内容(content)、关联文件夹表id(folder_id)

(三)项目需求(共90分)
(1)实现用户登录(10分)
① 登录成功可跳转主页(5分)
② 要求使用过滤器验证用户的登陆权限(5分)
在这里插入图片描述

(2)实现笔记列表查询功能(20分)
① 备注:文件夹是通过笔记表(t_note)连接查询文件夹表(t_folder)获取,否则不得分(10分)

(3)实现笔记列表分页显示功能(20分)
① 备注:文件夹是通过笔记表(t_note)连接查询文件夹表(t_folder)获取,否则不得分(10分)
在这里插入图片描述

(4)实现添加笔记功能(10分)
在这里插入图片描述

(5)实现修改笔记功能(20分)
① 要求数据回显(10分)
② 修改成功(10分)

(6)实现删除笔记功能(10分)

固定的东西

1.pom.xml文件配置 + web.xml文件配置

pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.tianju</groupId>
  <artifactId>javawebTest0612</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

    <!--    jsp相关-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>

    <!--    数据库相关-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.16</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.22.RELEASE</version>
    </dependency>

    <!--    其他-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.22</version>
    </dependency>

    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
    </dependency>

    <!--    工具包-->
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.8.11</version>
    </dependency>

    <!--    fastjson包-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.76</version>
    </dependency>

  </dependencies>
</project>

web.xml文件

<?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">
</web-app>


2.util里面JDBC的DBUtils + 字符串工具StringUtils

DBUtils.java文件:

package com.tianju.util;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.jdbc.core.JdbcTemplate;

public class DBUtils {
    private static DruidDataSource dataSource =null;
    static {
        String driverClassname = "com.mysql.cj.jdbc.Driver";
        String ip = "127.0.0.1:3306/javaweb";
//        String ip = ConfigMap.getConfig().get("ip");
        // jdbc:mysql://127.0.0.1:3306/javaweb06?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8
        String url = "jdbc:mysql://"+ip+"?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
//        String url = "jdbc:mysql://"+"127.0.0.1:3306/javaweb"+"?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";
        String username = "root";
        String password = "123";
        dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassname);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
    }

    /**
     *
     * @return 返回一个JdbcTemplate对象
     */
    public static JdbcTemplate getJdbcTemplate(){
        return new JdbcTemplate(dataSource);
    }
}

StringUtils.java文件

package com.tianju.util;

/**
 * 防止前端传过来为null 或者 ""
 */
public class StringUtils {
    public static Boolean isBlank(String str){
        if(str==null || str.trim().equals("")){
            return true;
        }
        return false;
    }
}

3.entity里面的PageInfo分页实体类+ResData响应标准格式

PageInfo.java

package com.tianju.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 和分页相关的实体类
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageInfo<T> {
    private Integer pageNum; // 当前是第几页,如果没有输入,默认是第一页
    private Integer pageSize; // 每页显示的数据条数,百度默认一页10条
    private Integer total; // 总条数;
    private Integer pages; // 总页数;
    private List<T> list; // 传给前端的list
}

ResData.java

package com.tianju.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 响应的实体类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ResData {
    private Integer code;
    private String msg;
    private Object data;
}

4.filter里面的编码CharacterEncodingFilter和权限LoginAuthorFilter

CharacterEncodingFilter.java文件

package com.tianju.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * 解决编码问题的过滤器
 */
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // 编码问题
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        // 一定要记得放行
        chain.doFilter(request, response);

    }

    @Override
    public void destroy() {

    }
}

LoginAuthorFilter.java文件

package com.tianju.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * 控制权限
 */
@WebFilter("/*")
public class LoginAuthorFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        String requestURI = req.getRequestURI();
        // 1.不登录也可以访问的连接,放行
        if (requestURI.contains("/js/")
                || requestURI.contains("/bootstrap/")
                || requestURI.contains("/css/")
                || requestURI.contains("/img/")
                || requestURI.contains("/user/login")
                || requestURI.contains("/user/login.jsp")
        ){
            chain.doFilter(request, response);
        }else {
            // 2.其他连接必须登陆后才能访问
            HttpSession session = req.getSession();
            Object user = session.getAttribute("user");
            // 如果没有登陆,就去登陆页面
            if (user==null){
                resp.sendRedirect(req.getContextPath()+"/user/login.jsp");
            }else {
                //登陆了,就放行
                chain.doFilter(request, response);
            }
        }
    }

    @Override
    public void destroy() {

    }
}

5.前端固定的js包和bootstrap包

见本文的代码包

小项目源码

见本文的代码包

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


总结

使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645357.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入剖析mmap原理 - 从三个关键问题说起

作者&#xff1a;招财二师兄 链接&#xff1a;https://www.jianshu.com/p/eece39beee20 来源&#xff1a;简书 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 对于mmap&#xff0c;您是否能从原理上解析以下三个问题&#xff1a; 1&#…

CentOS阿里镜像源

阿里CentOS镜像源位置&#xff1a;http://mirrors.aliyun.com/centos/?spma2c6h.25603864.0.0.50d03715CS95s4 CentOS下载最小位置&#xff1a; https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spma2c6h.25603864.0.0.5e38f5advNCSXC 如图&#xff1a;

用敏捷工具Leangoo领歌做敏捷需求管理

传统的瀑布工作模式使用详细的需求说明书来表达需求&#xff0c;需求人员负责做需求调研&#xff0c;根据调研情况编制详细的需求说明书&#xff0c;进行需求评审&#xff0c;评审之后签字确认交给研发团队设计开发。在这样的环境下&#xff0c;需求文档是信息传递的主体&#…

vue H5项目如何在PC端时居中展示,而不全屏拉伸

目录 1、场景再现&#xff1a;在PC端时 H5项目布局被拉伸2、代码实现3、最终效果图4、疑惑 1、场景再现&#xff1a;在PC端时 H5项目布局被拉伸 2、代码实现 在App.vue中的写入&#xff0c;vue2 的在mounted中写入&#xff0c;vue3的写在onMounted写入。 逻辑讲解&#xff1a…

Linux之进程掩码 umask

目录 Linux之进程掩码 umask 最大权限 umask unmask作用 语法格式 参数及作用 umask存放位置 案例 示例1 --- 在shell进程中创建文件 示例2 --- 修改shell umask值&#xff08;临时&#xff09; 示例3 --- 修改shell umask值&#xff08;永久&#xff09; 示例4 ---…

机器人项目创新课题汇总提示

创新课题推荐自己思考并给出&#xff0c;如下案例仅供参考&#xff1a; 不想看&#xff0c;不愿意做&#xff0c;就遵循自己内心想法&#xff0c;做自己喜欢的事情吧。 题目和描述&#xff1a; 自动导航机器人&#xff1a;设计一种能够自主导航的机器人&#xff0c;可以在不需…

实验篇(7.2) 14. 站对站安全隧道 - 走对方宽带上网(FortiGate-IPsec) ❀ 远程访问

【简介】前面实验已经知道&#xff0c;FortiClient客户端拨号到远端防火墙&#xff0c;包括上网流量等所有流量都可以通过隧道到达远端防火墙&#xff0c;并从对方宽带上网。那么两台防火墙之间连接的安全隧道&#xff0c;可以实现这个功能吗&#xff1f; 实验要求与环境 OldMe…

BTree和B+Tree详解

BTree和BTree详解 B树索引是B树在数据库中的一种实现&#xff0c;是最常见也是数据库中使用最为频繁的一种索引。B树中的B代表平衡(balance)&#xff0c;而不是二叉(binary)&#xff0c;因为B树是从最早的平衡二叉树演化而来的。在讲B树之前必须先了解二叉查找树、平衡二叉树(…

群晖nas(DS423+)和百度云盘互相自动备份

群晖nas提供了云同步功能&#xff0c;使用该功能&#xff0c;可以将百度云盘和群晖nas设置成互为备份&#xff0c;这样我们nas上的的重要数据就有多了一层保护。 通过设置&#xff0c;可以将nas上的某个目录同步到百度云盘的一个目录中&#xff0c;同步的方向可以自行定义&…

springmvc整合thymeleaf

概述 Thymeleaf提供了一组Spring集成&#xff0c;使您可以将其用作Spring MVC应用程序中JSP的全功能替代品。 这些集成将使您能够&#xff1a; Controller像使用JSP一样&#xff0c;将Spring MVC 对象中的映射方法转发到Thymeleaf管理的模板。在模板中使用Spring表达式语言&…

win10中部署个人邮件服务器hMailServer

一、安装邮件服务器hMailServer hMailServer是一个免费的开源电子邮件服务器,适用于Microsoft Windows,本次实践以Windows10为例。hMailServer支持常见的电子邮件协议(IMAP、SMTP 和 POP3),并且可以轻松地与许多现有的 Web 邮件系统集成。它具有灵活的垃圾邮件保护,可以附…

Allegro PCB设计中:结构文件DXF导入、更新、PCB板框更改

1.将结构工程师输出的DXF文件导入到Allegro PCB设计中;文章来源地址https://www.yii666.com/blog/453846.html?action=onAll 2.结构文件DXF多次更改导致PCB板框尺寸涉及的修改; 1.Allegro导入结构DXF文件 Step1:首先进行单位精度设置,我们一般设置mil小数点二位;mm设置…

ROS-melodic:源码安裝teb_local_planner算法、替换DWA算法

一.安裝teb_local_planner算法 源码下载地址&#xff1a;GitHub - rst-tu-dortmund/teb_local_planner: An optimal trajectory planner considering distinctive topologies for mobile robots based on Timed-Elastic-Bands (ROS Package) 注意选择对应ROS版本的代码。 放在…

宝塔安装yapi

宝塔安装部署YApi图文教程&#xff0c;YApi旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API。 官方文档&#xff1a;https://hellosean1025.github.io/yapi/ 1.给宝塔安装PM2管理器同时安装node 下面看一下使用宝塔的PM2管理器…

掌握SQL注入利器:SQLMap使用入门教程及技巧分享

1、SQLMap安装与使用 SQLMap 是一个功能强大的自动化 SQL 注入工具&#xff0c;它可以用于检测和利用 SQL 注入漏洞。以下是 SQLMap 的使用教程的基本步骤&#xff1a; 1.安装 SQLMap&#xff1a; 首先&#xff0c;你需要从 SQLMap 的官方网站下载并安装 SQLMap 工具。根据你…

#2023开放原子全球开源峰会之旅

#2023我在开源峰会 2023开放原子全球开源峰会参会指南 嗨咯&#xff0c;大家好&#xff01; 6月11号&#xff0c;是一年一度的开放原子大会&#xff0c;有幸参加&#xff0c;很开心&#xff01; 文章目录 1、逛展区&#xff08;领周边&#xff09;环节1.1 CSDN展区1.2 阿里云 …

frp实现内网穿透(内网服务器到公网访问的方案)

目录 背景: 一、frp的简介 二、Frp Server的配置 三.Frp Client的配置 背景: 我使用python写了一个http后端&#xff0c;如代码所示&#xff0c;ip为10.1.136.73&#xff0c;port为8000&#xff0c;现在需要把http后端在公网可以被使用。一个较简单的方案是通过frp实现内网…

Centos7/Centos8安装Mysql8

​ 1.检测系统。 是否已经安装过mysql或其依赖&#xff0c;若已装过要先将其删除&#xff0c;否则第4步使用yum安装时会报错&#xff1a; # yum list installed | grep mysql若出现如下所示&#xff0c;则用第三行中的命令删掉mysql&#xff1a; # yum list installed | gr…

为什么超三成制造企业上市公司选择用友U9 cloud?

导读&#xff1a;30%制造企业上市公司和40%专精特新制造业上市公司都选择用友U9 cloud 当前&#xff0c;数智化转型已经成为中国制造重构竞争力、实现高质量发展的必经之路。《“十四五”智能制造发展规划》提出&#xff0c;到2025年&#xff0c;70%的规模以上制造业企业基本实…

命名管道:FIFO

至此&#xff0c;我们还只能在相关的程序之间传递数据&#xff0c;即这些程序是由一个共同的祖先进程启动的。但如果我们想在不相关的进程之间交换数据&#xff0c;这还不是很方便。 我们可以用FIFO文件来完成这项工作&#xff0c;它通常也被称为命名管道&#xff08;named pip…