校园论坛(Java)—— 用户管理系统模块

news2024/11/23 21:32:12

校园论坛(Java)—— 用户管理系统模块

文章目录

  • 校园论坛(Java)—— 用户管理系统模块
    • @[toc]
    • 1、写在前面
    • 2、系统结构设计
      • 2.1 各个页面之间的调用关系
      • 2.2. 用户管理系统模块各层的设计
    • 3、管理员管理用户功能
      • 3.1 管理员查看普通用户的所有帖子
      • 3.2 管理员管理所有用户
      • 3.3 管理员删除帖子功能的实现
      • 3.4 管理员删除学习专帖
      • 3.5 管理员注销用户功能
    • 5、项目代码

在这里插入图片描述


1、写在前面

  • Windows版本:Windows10
  • JDK版本:Java8
  • MySQL版本:MySQL5.7
  • Tomcat版本:Tomcat9.0
  • IDE:IntelliJ IDEA Ultimate2020.2.3

2、系统结构设计

2.1 各个页面之间的调用关系

在这里插入图片描述

用户管理系统模块

  • userlist.jsp:所有用户包括管理员自身的用户信息列表
  • userforumlist.jsp:管理员查看用户的普通帖子
  • MdeleteUserForumServlet:管理员删除用户普通帖子
  • MdeleteUserServlet:管理员删除用户
  • deleteUserAck.jsp:管理员删除用户后提示删除成功

2.2. 用户管理系统模块各层的设计

各层的代码已在用户登陆注册模块列出了,此处不再展示

  • Entity层

实体层声明学习专帖的user_id、user_name、user_password、user_sex、user_face、user_phone、user_email、user_from、isAdmin等变量以及对应的set、get方法

  • Dao层

Dao层分别实现一个interface接口类以及一个接口方法实现类

  • service层

实现servlet层调用的方法,对数据库进行增删改查操作。

  • Servlet层

在该层,通过jsp页面传递的参数,service对象调用相应的方法进行操作。

3、管理员管理用户功能

3.1 管理员查看普通用户的所有帖子

在userlist.jsp页面为每一个用户都设置了一个“查看发帖”按钮,通过该按钮可以查看展示的对应用户的所有发帖。该功能是由userforumlist.jsp页面传递的uid(用户ID)参数,再调用seeUserForumList()方法到数据库中进行查询操作实现的。

执行完数据库的逻辑操作之后,将请求转发到page/manager/userforumlist.jsp页面,进而显示所有用户的信息。

如下图所示:

在这里插入图片描述

点击「查看发帖」按钮,可以看到对应的用户所发表的所有普通帖子,进入该页面,通过“删帖”按钮即可实现管理员对帖子的删除权限。

在这里插入图片描述

3.2 管理员管理所有用户

管理员查看所有用户是在userlist.jsp页面实现的,通过MuserListServlet的逻辑实现,并传递的属性参数到该页面,由该页面展示所有的用户。

通过调用findUserList()方法然后请求转发到page/manager/userlist.jsp页面显示内容

代码

public class MUserListServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");

        UserServiceInf service = new UserServiceImpl();
        List<UserEntity> userList = service.findUserList();

        req.setAttribute("userList", userList);
        req.getRequestDispatcher("page/manager/userlist.jsp").forward(req, resp);
    }
}

如下图所示:

在这里插入图片描述

3.3 管理员删除帖子功能的实现

userforumlist.jsp页面中,对于每一个用户的每一条普通帖子都设置了一个“删帖”按钮用于删除帖子,在此页面获得两个参数uidfid。其中uid是用户ID,fid为要删除的帖子(主帖)的标识符,通过fid先删除该帖子下的所有回帖,最后再删除主帖(该帖子)。

代码

public class MdeleteUserForumServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String forumid = req.getParameter("fid");
        int fid = Integer.parseInt(forumid);
        String uid = req.getParameter("uid");
        ForumServiceInf service = new ForumServiceImpl();
        service.deleteReplyByFid(fid);
        service.deleteForumByFid(fid);
        req.setAttribute("uid", uid);
        req.getRequestDispatcher("MSeeUserForumServlet").forward(req, resp);
    }
}

在这里插入图片描述

3.4 管理员删除学习专帖

普通用户和管理员删除学习专帖的功能实现为同一逻辑和物理操作。

studyReply.jsp页面中,如果当前浏览的学习专帖发表者是当前登录用户或者当前登录用户是管理员身份,则设置有一个「删除本帖」的按钮,在此页面获得两个参数uidsid。其中uid是用户ID,sid为要删除的帖子(主帖)的标识符,通过sid先删除该帖子下的所有回帖,最后再删除主帖(该帖子)。

学习专帖的删除需要判断当前登录用户是否为管理员,如果是,会有「删除本帖」的按钮,否则不会显示此按钮

判断用户代码如下:

<script type="text/javascript">
    function judge() {
        var currentUid = ${user.user_id};
        var userId = '<%=userId%>';
        var flag = false;
        if (currentUid == userId) {
            flag = true;
        }
        return flag;
    }
</script>
<script type="text/javascript">
    function isCurrentUser() {
        var currentUid = ${user.user_id};
        var uid = '<%=uid%>';
        var flag = false;
        if (currentUid == uid) {
            flag = true;
        }
        if (flag) {
            alert("删除成功!")
            window.location.href = "MdeleteUserStudyServlet?sid=<%=getStudy.getSid()%>&uid=<%=getStudy.getAuthor().getUser_id()%>";
        }
    }
</script>

通过传递的参数,然后调用findStudyList()方法执行数据库逻辑操作,最后将请求转发到page/manager/deleteStudyList.jsp页面

3.5 管理员注销用户功能

在用户管理模块,管理员可以通过点击“注销”按钮,来注销掉普通用户

如下图所示:

在这里插入图片描述

5、项目代码

  • GitHub
  • Gitee

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

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

相关文章

微服务框架 SpringCloud微服务架构 10 使用Docker 10.1 镜像命令

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.1 镜像命令10.1.1 镜像相关命令10.1.2 镜像操作命令10.1.…

SpringBoot_整合PageHelper

分页插件/PageHelper插件 我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理 实现原理 PageHelper方法使用了静态的ThreadLocal参数&#xff0c;分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数&#xff08;pageIndex&#xff0c…

TypeScript21(装饰器Decorator)

Decorator 装饰器是一项实验性特性&#xff0c;在未来的版本中可能会发生改变 不仅增加了代码的可读性&#xff0c;清晰地表达了意图&#xff0c;而且提供一种方便的手段&#xff0c;增加或修改类的功能&#xff1b; 若要启用实验性的装饰器特性&#xff0c;你必须在命令行或…

计算机网络 HTTPS

HTTPS HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL&#xff0c;HTTPS 的安全基础是…

git:多分支管理

多分支管理1. 列出分支2. 新建分支3. 删除分支4. 切换分支5. 分支合并多分支开发的特点 | 作用1. 测试&#xff1a;合并之后再在分支中工作是否主分支里面的相同文件不会更改2. 测试&#xff1a;修改编辑test分支的文件&#xff0c;最后再合并分支&#xff0c;是否是直接覆盖&a…

FT2004(D2000)开发实战之启动流程介绍

一 启动流程概述 飞腾FT2004/D2000芯片提供两种引导方案,具体如下所示: 方案一: 方案二: 方案一和方案二的区别是第二阶段的运行组件不同,方案一运行的是U-boot、方案二运行的是UEFI 那么为什么会这样的了? 答案是:飞腾FT2004/D2000芯片既可以用于嵌入式方案,也可以…

Docker中网络的使用和配置用法详解

一、单个物理机中docker网络 1.1 Docker默认网桥 安装Docker 服务默认会创建一个 docker0 网桥&#xff08;其上有一个 docker0 内部接口&#xff09;&#xff0c;它在内核层连通了其他的物理或虚拟网卡&#xff0c;这就将所有容器和本地主机都放到同一个物理网络。 使用 doc…

初识猿如意开发工具

嗨&#xff0c;大家好&#xff0c;我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助&#xff0c;请支持一波。 希望未来可以一起学习交流。 一、初遇猿如意 第一次听说猿如意开发工具&#xff0c;于是抱着试试的心态&#xff0c;开始下载尝试。 首先是…

算法导论23章最小生成树习题—23.2练习

23.2-1对于同一个输人图&#xff0c;Kruskal 算法返回的最小生成树可以不同。这种不同来源于对边进行排序时&#xff0c;对权重相同的边进行的不同处理。证明:对于图G的每棵最小生成树T&#xff0c;都存在一种办法来对G的边进行排序&#xff0c;使得Kruskal算法所返回的最小生成…

HTML+CSS+JS网页设计期末课程大作业——上海旅游景点(10页)web前端开发技术 web课程设计 网页规划与设计

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

离散化【带题讲解】

全文目录&#x1f914; 原理&#x1f615; 区间和&#x1f635;‍&#x1f4ab; 建立映射&#x1f635;‍&#x1f4ab; 查找映射的下标&#x1f635;‍&#x1f4ab; 代码&#x1f914; 原理 离散化&#xff0c;把无限空间中有限的个体映射到有限的空间中去&#xff0c;以此提…

NVIDIA 安装 CUDA

名词解释&#xff1a;CUDA 是一个架构 该架构使GPU能够解决复杂的计算问题 此实战使用电脑为联想Y9000P 显卡型号为 3060 在安装 CUDA 之前需要先打开 NVIDIA 控制面板 一、准备工作 如图我这个显卡需要安装 CUDA 11.7 的版本 二、下载软件 进入官网下载 CUDA NVIDIA Deve…

解放军军官军衔(不含士兵军衔)分为3等10级

军衔&#xff0c;是国家最高权力机关授予军人的一种衔称。不同的级别有不同的军衔。对于军衔的认识&#xff0c;一些朋友或许只有片面的认识&#xff0c;下面&#xff0c;笔者就给大家来科普一下中国的军衔。 为了纪念中国人民解放军建军93周年&#xff0c;弘扬爱国主义精神&a…

被迫毕业,面试 30 家公司,终于上岸了!

大家好&#xff0c;我是君哥。今天分享一个老弟&#xff0c;被“毕业”后的求职经历。 在老东家干了 6 年&#xff0c;发展一般&#xff0c;很想出去&#xff0c;但是一直没有合适的机会&#xff0c;只好一边准备面试一边学习。让我没有想到的是&#xff0c;突然收到了“毕业”…

(1-线性回归问题)线性回归(Linear regression)Lasso回归和Ridge回归的区别

回归分析是机器学习中的经典算法之一&#xff0c;用途广泛&#xff0c;在用实际数据进行分析时&#xff0c;可能会遇到以下两种问题 过拟合, overfitting欠拟合, underfitting 在机器学习中&#xff0c;首先根据一批数据集来构建一个回归模型&#xff0c;然后在用另外一批数据…

Vue 中 (moment)操作日期的加减与展示

目录 基本语法 &#xff1a; 展示效果如下&#xff1a; 使用方式&#xff1a; 1、首先在 pacaage.json 中引入依赖 "moment": "^2.29.4" 2、然后命令行 install 安装 &#xff1a; 3、最后&#xff0c;在使用的页面引入moment 4、data 中我定义了一个…

python的Django项目中常见命令以及常错点(Linux环境下)

USE 数据库名 --------------- 切换数据库更新virtualenv库&#xff08;用于创建虚拟环境&#xff09;&#xff1a;sudo pip install -U virtualenv创建虚拟环境&#xff1a;virtualenv -p python venv(虚拟环境的目录名)激活虚拟环境&#xff1a;source venv/b…

利用Python处理excel表格,panda合并表格、合并多个excel、多个sheet

前言 记录一下&#xff0c;在使用pandas处理excel表格表格时候&#xff0c;关于分割(切分)表格这一块儿的操作。 这个系列会有三篇左右文章&#xff0c;这是第二篇&#xff0c;excel表格合并 我们常说的 excel文件&#xff0c; 在广义上&#xff0c;是指以 xls 或 xlsx 为后缀…

[1173]regexp_replace()和regexp_substr()函数的用法

文章目录REGEXP_REPLACE的使用方法命令格式&#xff1a;regexp_replace(source, pattern, replace_string, occurrence)参数说明返回值常用案例其他案例正则符号释义regexp_substr()函数的用法REGEXP_REPLACE的使用方法 命令格式&#xff1a;regexp_replace(source, pattern, r…

PF-Net基于深度学习的点云补全网络

1. 论文和代码 论文&#xff1a;https://openaccess.thecvf.com/content_CVPR_2020/papers/Huang_PF-Net_Point_Fractal_Network_for_3D_Point_Cloud_Completion_CVPR_2020_paper.pdfhttps://openaccess.thecvf.com/content_CVPR_2020/papers/Huang_PF-Net_Point_Fractal_Netw…