Java项目-博客管理系统介绍

2023-11-09

一,项目背景

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。 “魔力博客系统的设计”是基于Mysql数据库,在servlet框架的基础上实现的。随着经济的持续发展,信息时代日益更新,蓬勃发展。同时,随着信息社会的快速发展,魔力博客系统的设计面临着越来越多的信息,因此很难获得他们对高效信息的需求,如何使用方便快捷的方式使查询者在广阔的海洋信息中查询,存储,管理和共享知识方面有效,对我们的工作和生活具有重要的现实意义

二,相关技术准备

1.网络通信三要素

  • IP:IP就是一个电脑节点的网络物理地址,就是像学校家里的地址,是设备在网络的唯一标识
  • 端口:是应用程序在计算机中的唯一标识,物理端口指的是物理存在的端口;逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535
  • 传输协议:规定了数据在传输的规则,比如TCP/IP协议,UDP协议,TCP协议等等TCP和UDP是建立在IP协议基础上的两个非常通用的协议,相当于TCP的稳定性来说,UDP因为其数据传输的不可靠性,在经常使用的HTTP协议就是建立在TCP协议的基础上的

2.Jsp简介

Jsp是服务端技术,与微软的ASP一样,是一种动态网页的技术,不过jsp是使用Java语言技术开发的技术,jsp使用的时候会被jsp引擎解析成Servlet代码,而jsp虽然可以写Java代码,但是jsp主要的作用是为了展示视图,所以jsp+javabean 可以很好的解决代码混淆问题,然后将视图与逻辑分离

3.Servlet简介

  • Servlet 是Server Applet的简称,翻译过来就是服务程序。是由sun公司提供的一门用于开发动态Web资源的技术。简单的讲,Servlet就是运行在服务器上的一个小程序,用来处理服务器接收到的请求。
  • 比如一般的网页程序,是由我们通过浏览器来访问实现的,在这个过程中,我们的浏览器发送访问请求,服务器接收到请求,并对浏览器的请求做出相应的处理,这就是我们熟悉的B/S模型(浏览器—服务器模型)。而Servlet就是对请求做出处理的组件,运行于支持java的应用服务器中。Servlet从狭义上说白了就是个接口,从广义上说就是实现了这个接口的所有的子类
  • Servlet执行原理
    ①当服务器接收到客户端浏览器的请求后,会解析请求url路径,获取访问的Servlet的资源路径
    ②查找web.xml文件,是否有对应的标签体内容
    ③如果有,则在找到对应的全类名
    ④tomcat会将字节码文件加载进内存,并且创建其对象调用其方法

4.Tomcat服务器

Tomcat 是 Apache 的扩展,是 Apache 的一个子项目,可以在后端运行特定规范的 Java 代码 Servlet,同时将执行的结果以 HTML 代码的形式返回客户端,可以监听接受请求并响应静态资源,Tomcat 虽然和 Apache 或者 Nginx 这些 Web 服务器一样,Tomcat 通常是作为一个 Servlet 和 JSP 容器,单独运行在后端

三,系统需求分析

1.易用性分析

首先该系统面对的是在各个领域的使用不同语言的编程用户,从一定的角度考虑,该系统规模小,且可以编辑博客,发表内容,同时也不会消耗太多的资源,可以供在校学生使用,符合经济的可行性,随着互联网的发展,技术不断更新时,该系统面向社会,也可以扩大规模,保证了人数增多时系统人数的限制,当人数增多时,系统可以全面支持用户编辑博客,符合社会可行性

2.安全性分析

(1)当用户在登录系统时,密码和用户名会加密处理,防止出现密码泄露,他人登录账号的情况,系统中用户的信息管理员会进行信息保护,以免不正当网站窃取学生信息,对用户造成影响
(2)系统的权限在学生和管理员,其他用户不可进入,保证了信息的安全,同时还有数据安全性,在管理员进行添加删除学生信息,不会对之前信息进行干扰,同时更新数据时,不会使原数据丢失或是损坏,这也很好的保证了该系统的安全性能,加大用户对此系统的信任和使用

四,数据库设计和实现

1.创建数据库和相关表

首先在MySQL中建立了一个名myblog2022的数据库用来存放此系统相关的表的信息
在这里插入图片描述

2.使用JDBC连接数据库

/**
 * 连接数据库
 */
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DBUtils {
    private  static MysqlDataSource mysqlDataSource;
    private static Connection connection;
    private static  MysqlDataSource getMysqlDataSource(){
        if(mysqlDataSource==null){
            synchronized (DBUtils.class){
                if(mysqlDataSource==null){
                    mysqlDataSource=new MysqlDataSource();
                    mysqlDataSource.setURL("jdbc:mysql://127.0.0.1:3306/myblog2022?characterEncoding=utf8&useSSL=false");
                    mysqlDataSource.setUser("root");
                    mysqlDataSource.setPassword("********");

                }
            }
        }
        return mysqlDataSource;
    }
    /**
     * 两种模式(单例模式的 Connection / 多例模式 Connection【此方法实现】)
     * @return
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        Connection connection = (Connection) getMysqlDataSource().getConnection();
        return  connection;
    }
    public static void close(ResultSet resultSet, PreparedStatement statement,Connection connection) throws SQLException {
        if(resultSet!=null){
            resultSet.close();
        }
        if(statement!=null){
            statement.close();
        }
        if(connection!=null){
            connection.close();
        }
    }
}

3.使用配置文件(仅供参考)

1.properties 配置文件

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog2022?
characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

2.yml 配置文件

spring:
        datasource:
        url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
        username: root
        password: root

在这里插入图片描述

五,项目搭建和系统功能截图

1.创建Servlet项目

在这里插入图片描述

2.配置pom.xml文件

 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.22</version>
      <scope>provided</scope>
    </dependency>
    <!--jdbc jar-->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.7.22</version>
    </dependency>

3.编写前端后端代码

前端ajax代码

请求后端的接口使用 ajax
            jQuery.ajax({
                url:"login",
                type:"POST",
                data:{"username":username.val(),"password":password.val()},
                success:function(result){
                    if(result!=null && result.succ==200){
                        if(result.data==1){
                            // alert("恭喜:登录成功!");
                            location.href = "myblog_list.html";
                        }else{
                            alert("抱歉:登录失败,"+result.msg);
                        }
                    }else{
                        alert("后端程序不可用!");
                    }
                }
            });

后端Servlet代码(代码太多只粘贴一部分)

/**
 * 得到当前登录用户的信息
 */
@WebServlet("/loginUserInfo")
public class LoginUserInfoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String msg = "未知错误!";
        UserInfo userInfo = SessionUtils.getLoginUser(req);
        if (userInfo != null) {
            // 当前用户已登录
            userInfo.setPassword(""); // 去除掉返回信息中的密码数据
        } else {
            msg = "未登录!";
        }
        // 3.将用户返回给前端
        resp.setContentType("application/json; charset=utf-8");
        resp.getWriter().println(JSONUtil.toJsonStr(ResultUtils.toResult(
                200, userInfo, msg)));
    }
}

4.功能界面截图

(1)用户注册界面
在这里插入图片描述
(2)用户登陆界面
在这里插入图片描述
(3)编辑博客界面
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java项目-博客管理系统介绍 的相关文章

随机推荐

  • 语雀导出知识库内所有文档为markdown格式备份

    语雀 写在前面 本复刻版本无法提交issue 有问题欢迎到语雀评论区和我交流 我一般不看csdn的评论 需要找我请到语雀文章评论区 欢迎给我的语雀文档点赞 或者给我复刻的仓库star 另外我想说明一下 复刻这个仓库的目的是为了防止重要的笔记
  • navigator对象

    navigator 对象是 JavaScript 中的一个内置对象 表示当前浏览器的信息和状态 它提供了访问浏览器相关信息的属性和方法 下面是一些 navigator 对象的常见属性和方法 navigator userAgent 返回包含浏
  • MySQL慢查询日志总结

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录 它用来记录在MySQL中响应时间超过阀值的语句 具体指运行时间超过longquerytime值的SQL 则会被记录到慢查询日志中 longquerytime的默认值为10
  • 在ubuntu18.04下安装 elsasticsearch-head 插件

    下载链接地址为 https github com mobz elasticsearch head archive master zip 下载命令如下 下载完成之后使用 unzip master zip 命令对下的压缩包进行解压 查看node
  • Qt连接远程SqlServer数据库,遍历结果集速度慢

    如题 我用qt连接远程的sqlserver数据库 一共110条数据 查询的时候遍历结果非常慢 达到十几秒左右 一开始我以为是结构体本身的问题 把结构体里面的赋值函数参数改成引用传递后 速度有所改善 缩短到9秒左右 但是并没有改变根本 最后我
  • AES-GCM加密算法的简单介绍

    一 什么是AES加密 常见的加密主要分为两类 对称加密和非对称加密 AES加密就是对称加密的一种 即加密和解密使用相同的一把密钥 它的全称是Advanced Encryption Standard 高级加密标准 主要是用来取代DES加密算法
  • mobx v6 + react hook 状态管理配置

    react hook 风格下不再使用class类的形式定义组件 也就不再适用mobx以前版本的装饰器语法 以下分享 reack hook 语法风格下使用 mobx v6 版本的状态管理配置使用方式 相关依赖版本 react 17 0 2 m
  • Spark基本概念

    Application 指的是用户编写的Spark应用程序 代码 包含了Driver功能代码和分布在集群中多个节点上运行的Executor代码 Driver Spark中的Driver即运行行数Application的Main 函数并且创建
  • 为什么一个mac可以对应多个ip_路由器、交换机、IP、MAC原来可以这样理解

    先理解它们能够代表着什么 数据帧 快递 二层MAC地址 你的身份证号 全球唯一 三层IP地址 你的当前的住宅地址 你随时可能会搬去其他地址住额外的 规则 一个住宅地址只能住一个人 否则会导致收发快递不正常 交换机 给你派件的快递员 但是只认
  • CTFSHOW 萌新计划web9-15

    题目地址 http ctf show 0x01 web9 乍一看别被迷惑了 这个正则是字符串中包含 system exec highlight才能执行eval if preg match system exec highlight i c
  • 如何用logging记录python实验结果?

    做python实验有时候需要打印很多信息在控制台 console 但是控制台的信息不方便回顾和保存 故而可以采用logging将信息存储起来 先新建一个文件message log 代码如下 import logging logging ba
  • Android Studio 守护进程 错误 Error:Unable to start the daemon process....

    简介 有段时间没有使用Android Studio 最近使用AS打jar包的时候 不知道什么原因 突然出现了的问题 下面也没有详细的错误信息 网上很多解决类似问题的做法都是说AS在启动Jvm时候的空间问题 然而这个问题的下划线下面是有更详细
  • 航天生物计算机作文,科幻遨游太空作文(精选6篇)

    科幻遨游太空作文 精选6篇 导语 很多人语文成绩上不去 都是因为作文分数一直提不上去 为了让您在写作文时更加简单方便 下面是小编为大家收集的科幻遨游太空作文 精选6篇 欢迎大家借鉴与参考 希望对大家有所帮助 遨游太空作文1 太空 是一个充满
  • SQL触发器

    触发器 触发器是与表有关的数据库对象 可以在 insert update delete 之前或之后 触发并执行触发器中定义的SQL语句 触发器的这种特性可以协助应用在数据库端确保数据的完整性 日志记录 数据校验等操作 使用别名 NEW 和
  • 微信小程序之用camera实现类似扫码枪连续扫码

    微信小程序之用camera实现类似扫码枪连续扫码 搜了CSDN里面的文章 除了有一篇有关微信小程序 用微信小程序里面代码实现 扫码的功能 其它都是用别的 原博文是 小程序连续扫码实现但是他只是实现了一次扫码后就不能再继续扫码了 在js代码部
  • 组件库系列四:组件封装思路

    文章目录 按钮 输入框 tabs选项卡 toast提示 Popover 遇到的问题 前面已经有按钮为例子搭建的组件库 这里记录几个组件的封装思路 持续更新 按钮 感觉涟漪效果挺有趣的 就加进来了 简单分析一下 在按钮组件中使用canvas组
  • [译文]PHP 正则表达式入门 Getting Started with PHP Regular Expressions

    PHP 正则表达式入门 Getting Started with PHP Regular Expressions 译者注 本文是面向0正则基础的phper 很多正则的高级使用都没有涉及到 仅仅是一份简单的入门 对于有基础的 可直接查看本文末
  • element的form表单中如何一行显示多el-form-item标签

    element的form表单中如何一行显示多el form item标签 效果图 HTML代码 div div
  • mysql查询两列的总和,null值处理

    mysql中需要用sum 函数计算两列或者多列的总和时 可参考以下写法 select SUM IFNULL c1 0 IFNULL c2 0 from tb mytable sum c1 c2 c3 函数是计算多列的总和 ifnull c1
  • Java项目-博客管理系统介绍

    目录 一 项目背景 二 相关技术准备 1 网络通信三要素 2 Jsp简介 3 Servlet简介 4 Tomcat服务器 三 系统需求分析 1 易用性分析 2 安全性分析 四 数据库设计和实现 1 创建数据库和相关表 2 使用JDBC连接数