1024程序员节|基于Springboot实现爱心捐赠管理系统

news2025/1/13 7:26:12

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

文末获取源码 

项目编号:BS-XX-151

一,项目简介

捐赠救助系统组织管理进行信息化建设的目的主要有三点:一是信息资源是能够创造财富的;二是信息化的运用可以降低成本,提高效率;三是信息透明是捐赠救助组织的核心竞争力,有助于提高捐赠救助系统组织的公信力建设。通过网络信息的传播并透明公开,能提高公信力,并增强规范发展,同时推动捐赠救助系统服务的成效;通过信息平台建设和信息服务,有助于转变捐赠救助系统组织服务意识,救助项目执行管理方式的改变以及专业能力建设的推动,这必将成为捐赠救助系统事业发展的趋势。

随着社会的发展,捐赠救助系统组织的业务流程和服务形式的进一步优化,工作方式必然全面改造,需要彻底地向社会大众提供优质、规范、透明、公正的服务,符合国际水准的管理和服务。

如何运用现代信息技术,帮助捐赠救助系统组织,完善捐赠救助系统组织捐赠相关信息的入库、更新、检索,优化管理流程、提高效率,这些问题的研究和解决对中国捐赠救助系统组织的发展具有重要意义,同时也对其他相关组织信息化管理有示范与借鉴的作用。

                                                                

本系统以使捐赠救助系统后台管理规范化信息化为宗旨,利用Java技术,采用B/S模式,实现了工作人员登录个人账号后对于捐赠过程涉及到的信息的增删改查等功能,保证了捐赠救助系统工作人员对于各种信息登记获取的及时性与便利性。且在本论文中,笔者对于小型捐赠救助系统信息管理不完善的现象,给出了一定的解决方案。

本系统主要基于Springboot开发实现一个爱心损赠管理系统,用户分为前端损赠平台使用用户和后台管理用户。前端用户注册登陆系统后可以实现在线损赚物资,查看自己损赚的物品统计情况,图形报表统计,在线发贴交流,在线许愿,个人主页等功能,后台管理员登陆系统后可以实现对捐赠信息的管理功能,以用户的管理功能,查看论坛贴子等信息管理功能。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:Springboot+Mybatis

前台开发技术:Layui+Ajax+Echart图形报表

三,系统展示

前端首页

在线捐赠物品

论坛交流

爱心许愿

个人主页

用户登陆界面:前端用户可以在此进行注册登陆

用户管理

捐赠记录管理

论坛管理

留言管理

心愿管理

四,核心代码展示

package com.lc.controller;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.Article;
import com.lc.entity.User;
import com.lc.service.ArticleService;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

/**
 * 文章信息控制层
 */
@RestController
@RequestMapping("/article")
public class ArticleController {

    @Autowired
    ArticleService articleService;


    /**
     * 文章信息数据表格接口
     */
    @RequestMapping(value = "/getTableData", produces = "application/json; charset=utf-8")
    public String getTableData(@RequestBody Article article) {
        Map<String, Object> pageDataMap = new HashMap<>(3);
        //默认分页参数
        if(article.getCurrentPage() == null || article.getLimitCount() == null){
            article.setCurrentPage(1);
            article.setLimitCount(10);
        }
        List<Article> dataList = articleService.selectList(article);
        for(Article a : dataList){
            if(!StrUtil.isBlank(a.getPicStr())){
                a.setCoverImg(a.getPicStr().split(",")[0]);
            }
        }
        Integer totalCount = articleService.selectCount(article);
        pageDataMap.put("code", 0);
        pageDataMap.put("data", dataList);
        pageDataMap.put("count", totalCount);
        return JSON.toJSONString(pageDataMap);
    }

    /**
     * 文章信息保存
     */
    @RequestMapping("/saveArticle")
    public String saveArticle(@RequestBody Article article) {
        return articleService.saveArticle(article);
    }

    /**
     * 文章信息删除(物理删除)
     */
    @RequestMapping("/deleteArticle")
    public String deleteArticle(String id) {
        return articleService.deletePhysical(id);
    }

    /**
     * 我的文章数据获取
     */
    @RequestMapping("/selfArticle")
    public List<Article> selfArticle() {
        User currentUser = UserContext.getCurrentUser();
        List<Article> articleList = articleService.selectByUserId(currentUser.getId());
        return articleList;
    }

    /**
     * 根据id获取
     */
    @RequestMapping("/getById")
    public Article getById(String id) {
        Article article = articleService.selectEntity(id);
        if(!StrUtil.isBlank(article.getPicStr())){
            List<String> picList = new ArrayList<>(Arrays.asList(article.getPicStr().split(",")));
            article.setPicList(picList);
        }
        return article;
    }


}

package com.lc.controller;

import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.Donation;
import com.lc.entity.User;
import com.lc.service.DonationService;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 捐赠信息控制层
 */
@RestController
@RequestMapping("/donation")
public class DonationController {

    @Autowired
    DonationService donationService;


    /**
     * 捐赠信息数据表格接口
     */
    @RequestMapping(value="/getTableData", produces="application/json; charset=utf-8")
    public String getTableData(@RequestBody Donation donation) {
        Map<String, Object> map = donationService.selectPage(donation);
        return JSON.toJSONString(map);
    }

    /**
     * 后台捐赠信息保存
     */
    @RequestMapping("/saveDonation")
    public String saveDonation(@RequestBody Donation donation) {
        return donationService.save(donation);
    }

    /**
     * 前台捐赠信息保存
     */
    @RequestMapping("/insertDonationList")
    public String insertDonationList(@RequestBody List<Donation> list) {
        return donationService.insertDonationList(list);
    }

    /**
     * 捐赠信息删除(物理删除)
     */
    @RequestMapping("/deleteDonation")
    public String deleteDonation(String id) {
        return donationService.deletePhysical(id);
    }

    /**
     * 我的捐赠记录数据获取
     */
    @RequestMapping("/selfDonation")
    public List<Map<String, Object>> selfDonation(){
        User currentUser = UserContext.getCurrentUser();
        List<Map<String, Object>> listMap = donationService.countSelfDonation(currentUser.getId());
        return listMap;
    }

    /**
     * 后台修改捐赠记录状态
     */
    @RequestMapping("/updateVerify")
    public String updateVerify(String id, Integer verify){
        return donationService.updateVerifyById(id, verify);
    }


    /**
     * 前台页面第一个饼状图数据接口
     */
    @RequestMapping("/echartsDataOne")
    public List<Map<String, String>> echartsDataOne(){
        List<Donation> allList = donationService.selectAllList();
        Map<String, List<Donation>> allMap = allList.stream().peek(o -> {
            if(o.getKind() == 0){
                o.setKindName("上衣");
            }else if(o.getKind() == 1){
                o.setKindName("裤子");
            }else if(o.getKind() == 2){
                o.setKindName("袜子");
            }else if(o.getKind() == 3){
                o.setKindName("手套");
            }else if(o.getKind() == 4){
                o.setKindName("帽子");
            }else if(o.getKind() == 5){
                o.setKindName("其他");
            }
        }).collect(Collectors.groupingBy(Donation::getKindName));
        List<Map<String, String>> listMap = new ArrayList<>();
        for(Map.Entry<String, List<Donation>> map : allMap.entrySet()){
            Double sum = map.getValue().stream().mapToDouble(Donation::getNumber).sum();
            Map<String, String> itemMap = new HashMap<String, String>();
            itemMap.put("value", String.valueOf(sum));
            itemMap.put("name", map.getKey());
            listMap.add(itemMap);
        }
        return listMap;
    }

    /**
     * 前台页面第二个柱状图数据接口
     */
    @RequestMapping("/echartsDataTwo")
    public Map<String, List<String>> echartsDataTwo(){
        Map<String, List<String>> resultMap = new HashMap<>();
        //获取最近七天的时间段(往前找3天+往后找三天+今天一天)
        List<String> dateList = new ArrayList<>();
        String today= DateUtil.today();
        Date date = DateUtil.parse(today);
        for(int i=0; i<7; i++){
            String d = DateUtil.format(DateUtil.offset(date, DateField.DAY_OF_MONTH, -6 + i), "yyyy-MM-dd");
            dateList.add(d);
        }
        //根据日期获取数据
        List<String> dataList = new ArrayList<>();
        List<Donation> allList = donationService.selectAllList();
        for(String currentDate : dateList){
            List<Donation> list = allList.stream().filter(o -> currentDate.equals(o.getCreateDate().split(" ")[0])).collect(Collectors.toList());
            if(list.isEmpty()){
                dataList.add(String.valueOf(0));
            }else{
                dataList.add(String.valueOf(list.stream().mapToDouble(Donation::getNumber).sum()));
            }
        }
        resultMap.put("dateList", dateList);
        resultMap.put("dataList", dataList);
        return resultMap;
    }

    /**
     * 前台页面第三个折现图数据接口
     */
    @RequestMapping("/echartsDataThree")
    public Map<String, List<String>> echartsDataThree(){
        Map<String, List<String>> resultMap = new HashMap<>();
        //获取最近七天的时间段(往前找6天+今天一天)
        List<String> dateList = new ArrayList<>();
        String today= DateUtil.today();
        Date date = DateUtil.parse(today);
        for(int i=0; i<7; i++){
            String d = DateUtil.format(DateUtil.offset(date, DateField.DAY_OF_MONTH, -6 + i), "yyyy-MM-dd");
            dateList.add(d);
        }
        //根据日期获取数据
        List<Donation> allList = donationService.selectAllList();
        List<String> agreeList = new ArrayList<>();
        List<String> refuseList = new ArrayList<>();
        List<String> waitList = new ArrayList<>();
        for(String currentDate : dateList){
            List<Donation> list = allList.stream().filter(o -> currentDate.equals(o.getCreateDate().split(" ")[0])).collect(Collectors.toList());
            agreeList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 1).count()));
            refuseList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 2).count()));
            waitList.add(String.valueOf(list.stream().filter(o -> o.getVerify() == 0).count()));
        }
        resultMap.put("dateList", dateList);
        resultMap.put("agreeList", agreeList);
        resultMap.put("refuseList", refuseList);
        resultMap.put("waitList", waitList);
        return resultMap;

    }




}
package com.lc.controller;

import cn.hutool.core.codec.Base64;
import cn.hutool.core.io.file.FileNameUtil;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.*;

/**
 * 文件上传控制层
 */
@Controller
@RequestMapping("/file")
public class FileController {

    /**
     * 前缀路径(本地测试环境)
     */
    public static String filePrePath = System.getProperty("user.dir")+ "\\src\\main\\resources\\static\\";


    /**
     * 论坛图片上传
     * @param file
     * @return
     */
    @RequestMapping("/imagesUpload")
    @ResponseBody
    public String imagesUpload(@RequestParam("file") MultipartFile file){
        Map<String, Object> resultMap = new HashMap<>(4);
        try{
            //修改文件名,防止重复
            String filename = file.getOriginalFilename();
            String extName = FileNameUtil.getSuffix(filename);
            String newFileName = IdUtil.simpleUUID() + "." +extName;
            String pathString = filePrePath + "forumImg\\" + newFileName;
            //文件上传
            File f = new File(pathString);
            file.transferTo(f);
            //转base64
            String base64 = "data:image/"+extName+";base64," + Base64.encode(f);
            //回调信息
            resultMap.put("code",0);
            resultMap.put("data", newFileName);
            resultMap.put("baseData", base64);
            return JSON.toJSONString(resultMap);
        }catch(Exception e){
            e.printStackTrace();
            resultMap.put("code",1);
            return JSON.toJSONString(resultMap);
        }
    }

    /**
     * 随机获取一个默认头像
     */
    public static String randomGetDefaultUserImg(){
        List<String> userImgList = new ArrayList<>();
        userImgList.add("defaultOne.jpg");
        userImgList.add("defaultTwo.jpg");
        userImgList.add("defaultThree.jpg");
        userImgList.add("defaultFour.jpg");
        userImgList.add("defaultFive.jpg");
        Random random = new Random();
        return userImgList.get(random.nextInt(userImgList.size()));
    }



}

package com.lc.controller;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.lc.entity.*;
import com.lc.service.*;
import com.lc.utils.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 用户信息控制层
 */
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    UserService userService;
    @Autowired
    DonationService donationService;
    @Autowired
    ArticleService articleService;
    @Autowired
    MessageService messageService;
    @Autowired
    WishService wishService;


    /**
     * 用户信息数据表格接口
     */
    @RequestMapping(value="/getTableData", produces="application/json; charset=utf-8")
    public String getUserData(@RequestBody User user) {
        Map<String, Object> map = userService.selectPage(user);
        return JSON.toJSONString(map);
    }

    /**
     * 用户信息保存
     */
    @RequestMapping("/saveUser")
    public String saveUser(@RequestBody User user) {
        return userService.saveUser(user);
    }

    /**
     * 用户删除(物理删除)
     */
    @RequestMapping("/deleteUser")
    public String deleteUser(String id) {
        return userService.deletePhysical(id);
    }

    /**
     * 根据userId获取个人信息
     */
    @RequestMapping("getPersonalInformation")
    public Map<String, Object> getPersonalInformation(String userId){
        Map<String, Object> map = new HashMap<>();
        if(StrUtil.isBlank(userId)){
            User currentUser = UserContext.getCurrentUser();
            userId = currentUser.getId();
        }
        //用户个人信息
        User user = userService.selectEntity(userId);
        map.put("user", user);
        //用户捐赠总数量
        List<Donation> donationList = donationService.selectByUserId(userId);
        map.put("donationCount", donationList.stream().mapToDouble(Donation::getNumber).sum());
        //用户发帖数量
        List<Article> articleList = articleService.selectByUserId(userId);
        map.put("articleCount", articleList.size());
        //用户帖子
        map.put("article", articleList);
        //用户心愿数量
        List<Wish> wishList = wishService.selectByUserId(userId);
        map.put("wishCount", wishList.size());
        //用户心愿
        map.put("wish", wishList);
        //用户留言数量
        List<Message> messageList = messageService.selectByUserId(userId);
        map.put("messageCount", messageList.size());
        //各个捐赠类别的数量
        Map<Integer, List<Donation>> groupMap = donationList.stream().collect(Collectors.groupingBy(Donation::getKind));
        for(Map.Entry<Integer, List<Donation>> itemGroup : groupMap.entrySet()){
            map.put(String.valueOf(itemGroup.getKey()), itemGroup.getValue().stream().mapToDouble(Donation::getNumber).sum());
        }
        //补零
        for(int i=0; i<=5; i++){
            if(map.get(String.valueOf(i)) == null){
                map.put(String.valueOf(i), 0);
            }
        }
        return map;
    }


}

五,项目总结

项目整体功能完整,前后端业务流程完备,适合做毕业设计使用。

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

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

相关文章

Mybatis-plus学习(基于版本3.0.5)

文章目录一.概念1.1 简介1.2 特性二.快速入门三.CRUD扩展3.1 Insert插入3.2 主键生成策略3.3 Update更新3.4 自动填充3.5 乐观锁3.6 查询操作3.7 删除操作3.8 性能分析插件&#xff08;新版本的Mybatis-plus已将此插件移除&#xff09;3.9 条件构造器3.10 代码生成器一.概念 1…

Transformer合集3

太多了 我都累了 这都第4了 这次先是关于他的小样本目标检测 , 用很少的训练示例检测新目标 小样本目标检测 论文地址&#xff1a; https://openaccess.thecvf.com/content/CVPR2022/papers/Han_Few-Shot_Object_Detection_With_Fully_Cross-Transformer_CVPR_2022_paper.…

docker安装influxdb及备份恢复

influxdb安装influxdb1&#xff0c;拉取镜像2&#xff0c;创建目录并进入到目录内3&#xff0c;创建influxdb容器服务4&#xff0c;访问&#xff1a;ip8086备份恢复influxdb数据准备1.1 创建用户&#xff0c;填入组织&#xff0c;桶信息1.2&#xff0c;给桶添加点数据1&#xf…

ansible部署lnmp架构

环境准备&#xff1a; 主机名IP服务系统ansible192.168.160.131ansibleCentOS-8.5nginx192.168.160.132nginxCentOS-8.5mysql192.168.160.137mysqlCentOS-8.5php192.168.160.139phpCentOS-8.5 1、生成私钥&#xff0c;对另外三台主机进行免密登入 [rootansible ~]# ssh-keyge…

【单片机毕业设计】【mcuclub-jj-007】基于单片机的门铃的设计

最近设计了一个项目基于单片机的门铃&#xff0c;与大家分享一下&#xff1a; 一、基本介绍 项目名&#xff1a;门铃 项目编号&#xff1a;mcuclub-jj-007 单片机类型&#xff1a;STC89C52、STM32F103C8T6 具体功能&#xff1a; 1、通过人体热释电检测是否有人&#xff0c;当…

Java --- 创建SpringMVC项目

目录 一、什么是MVC 二、什么是SpringMVC 三、SpringMVC的特点 四、创建SpringMVC项目 4.1、开发环境 4.2、创建maven工程 4.3、配置web.xml文件 4.4、创建请求控制器 4.5、配置springMVC.xml文件 4.5、访问首页面 4.6、访问指定页面 一、什么是MVC MVC是一种软件架…

C++:C++的IO流

while (scanf("%s", buff) ! EOF)如何终止&#xff1f; 答&#xff1a;ctrl z换行 是规定&#xff0c;ctrl c 是发送信号杀死进程&#xff08;一般不建议ctrl c&#xff09;。 int main() {string str;while (cin >> str) // operator>>(cin, str){cou…

K_A01_001 基于单片机驱动WS2812 点灯流水灯 0-9显示

目录 一、资源说明 二、基本参数 三、通信协议说明 WS2812时序: 代码: 四、部分代码说明 1、接线说明 2、主函数 五、相关资料链接 六、数字提取格式 七、视频效果展示与资料获取 八、项目所有材料清单 九、注意事项 十、接线表格 一、资源说明 单片机型号 测试条件 模…

【一起学习数据结构与算法】优先级队列(堆)

目录一、什么是优先级队列&#xff1f;二、堆 (heap&#xff0c;基于二叉树)2.1 什么是堆&#xff1f;2.2 堆的分类2.3 结构与存储三、堆的操作3.1 堆创建3.2 插入元素3.3 弹出元素四、用堆模拟实现优先级队列五、堆的一个重要应用-堆排序六、经典的TOPK问题6.1 排序6.2 堆一、…

如何用两个晚上教女生学会Python

文章目录安装、需求引导和开发模型命令行计算器用温度指导穿衣VS Code 和女孩子的衣柜用遍历来挑选衣物交互课后作业事情的起因是这样的&#xff0c;知乎上有个妹纸加我&#xff0c;说要相亲。尽管我欣喜若狂&#xff0c;但恰巧在外出差&#xff0c;根本走不开。妹纸于是说要不…

自动化和半自动矢量化提取地物矢量轮廓

假期愉快&#xff08;这个假期加班了没&#xff1f;图片&#xff09;&#xff01;今天小助手来分享关于自动化和半自动化的矢量提取&#xff0c;使用的软件都是我们常用的软件。一是使用Global Mapper对遥感影像或矢量底图进行自动提取&#xff0c;二是基于天地图矢量底图使用A…

阶段性总结 | C语言

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;技术之外的往事 更多知识尽在此专栏中&#xff01; &#x1f389;&#x1f389;&#x1f389;欢迎点赞、收藏、关注 &#x1f389;&#x1f389;&#x1f389;回顾过去 各位CSND的小伙伴们大家好&#xf…

C · 进阶 | 慎看!深剖文件操作,怕你停不下

啊我摔倒了..有没有人扶我起来学习.... 目录前言一、 什么是文件1.1 程序文件1.2 数据文件1.3 文件名二、文件的打开和关闭2.1 文件指针2.2 文件的打开和关闭三、文件的顺序读写3.0 有必要解释一下*3.1 fputc3.2 fgetc3.3 fprintf3.4 fscanf3.4.1来个小总结&#xff08;这里忽略…

双非本23秋招之路-从考研跑路到某安全大厂(无实习、项目)

文章目录双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、项目&#xff09;一、自我介绍二、简历准备三、刷题四、八股文五、项目方面六、关于实习七、面试方面八、秋招路程九、简历投递十、面经分享双非本23秋招之路-从考研跑路到某安全大厂&#xff08;无实习、…

springboot+jsp新闻发布投稿系统

本文采用JSP技术构建的一个管理系统&#xff0c;实现了一个新闻发布系统。新闻发布系统的主要实现功能包括&#xff1a;管理员&#xff1a;首页、个人中心、用户管理 、新闻分类管理 、新闻信息管理、新闻投稿管理、论坛管理、我的收藏管理、投诉建议管理、系统管理。前台首页&…

Python编程 print输出函数

作者简介&#xff1a;一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.输入与输出 1.print&#xff08;&#xff09;输出函数 2.sep 3.en…

【MySQL数据库和JDBC编程】第三章-第一节:MySQL的增删查改基础篇

文章目录一&#xff1a;INSET新增二&#xff1a;SELECT查询&#xff08;1&#xff09;全列查询&#xff08;2&#xff09;指定列查询&#xff08;3&#xff09;查询字段为表达式&#xff08;4&#xff09;起别名&#xff08;5&#xff09;去重&#xff08;DISTINCT&#xff09;…

微信小程序request:fail报错(包括不执行fail回调问题)

微信小程序request:fail报错&#xff08;包括不执行fail回调的问题&#xff09;1. 不执行fail回调的问题2. request:fail报错原因2.1 小程序未配置域名导致的错误2.2 微信小程序使用的服务器环境不支持TLS1.22.3 使用的SSL证书不信任2.4 SSL证书证书链缺乏2.5 域名未备案&#…

使用Spring框架进行Web项目开发(初级)

目录 前言 1. 为什么常规的Spring框架不适合Web项目呢&#xff1f; 2. 如何在Spring框架中创建容器&#xff1f; 3. Spring框架开发Web项目的步骤 3.1 创建maven项目 3.2 添加相应的依赖 3.3 在webapp目录下的web.xml中注册监听器 3.4 在webapp文件夹下的web.xml中配置…

【信息科学技术与创新】自然语言处理 NLP 计算机与智能 课程总结思考

深入了解 NLP 及课程总结反思 摘要 自然语言处理的历史发展自然语言处理的方法与相关应用关于数据智能科学技术导论这门课程的总结反思 Navigator深入了解 NLP 及课程总结反思一、自然语言处理的历史发展二、自然语言处理的方法与相关应用三、关于数据智能科学技术导论这门课…