#6 后端
背景
阿卷是一名刚入学的软件工程新生。在订购教材时,他发现正版教材价格不菲,于是萌生了收购学长学姐二手教材的想法,这样省下来的钱还能多买几杯蜜雪。 然而,想要买到合适的教材却并不容易——一方面人生地不熟,另一方面相关信息分散在各个角落,难以获取。 阿卷不禁设想:如果学校能有一个专属的二手交易平台,学长学姐可以轻松处理闲置物品,新生也能便捷地购买所需教材,这将极大地方便大家的校园生活。
!!注意:萌新可跟随任务步骤逐步学习,基础薄弱者请重点记录学习过程。
总体要求
以下题目意在帮助大家入门并将Java后端知识运用到实践中,故并非所有要求都必须达到,根据自己所学的程度尽力即可。
鼓励用Markdown文档详细记录你的学习、思考、踩坑和解决问题的过程。这份文档是帮助我们了解你思考轨迹和学习能力的重要依据。
不论项目完成到什么程度,请务必将最终服务部署到公网服务器上(可使用阿里云、腾讯云等云平台),并提供可访问的项目API链接。
详细部署流程请参考 #taskx拥有你的服务器并将项目部署上线)
请将你的项目代码及相关 Markdown 学习文档上传至 GitHub 仓库。建议将 Task1 至 Task3 的内容合并为一个完整的后端项目进行开发与管理,这样有助于代码结构清晰、便于后续维护和展示。每个阶段的实现过程、遇到的问题及解决方案,都可以通过 Markdown 文档详细记录在仓库中。最终请在仓库的 README 文件中附上项目部署说明、接口文档及访问方式,方便评审和他人查阅。
大一同学:优先完成Task0至Task2的要求,加分项有余力可做,Task3可作为附加题。大二同学:请尽全力完成所有Task,并挑战各项加分项。
Task0:搭建你的Java本地开发环境,迈出Java开发的第一步
阿卷在查阅了大量学习资料后,最终选择以Java作为开发平台的核心语言。面对全新的技术领域,他充满了好奇与期待,积极投入到Java的学习之旅中。 从环境搭建到语法入门,再到后端框架的探索,阿卷一步步积累知识,不断记录自己的思考与成长。 他相信,扎实的基础和持续的学习将为后续开发打下坚实的根基,也希望通过这个过程,真正掌握Java后端开发的核心能力。
要求
- 编写Java程序,打印”hello world“ 到控制台,要求保存代码和运行结果截图并上传至github
- 用IDEA创建一个Spring Boot项目,实现一个接口,通过浏览器访问
http://localhost:8080/hello,给浏览器返回一个字符串“hello world”,要求保存代码和运行结果截图并上传至github - 谈谈你对Java和JavaWeb的理解,它们之间有什么联系
参考资料
- Java环境配置,开发工具选择及入门 17
- JavaWeb 24(Day4 Web入门)
- SpringBoot中文文档 9
Task1:实现本地商品CRUD管理系统
阿卷决定亲自为校园二手平台搭建“信息管理”系统。他选择用 Spring Boot 作为后端框架,并结合 MySQL 数据库,来实现商品信息的高效存储与管理。 阿卷将一步步开发商品的新增、删除、修改、查询等接口,让每一条数据都能被安全、便捷地操作。通过这个过程,阿卷不仅深入体验了后端开发的实际应用,还为平台后续功能扩展打下了坚实基础。 现在,就跟着阿卷一起动手实践,完善属于自己的二手交易平台吧!
要求
-
设计数据库表 优先实现核心库表(user、product、product_order),可参考以下表结构或自行设计扩展。
点击展开示例 SQL 表
-
核心接口开发 实现以下基础增删改查接口:
- 新增商品信息
- 删除商品信息
- 更新商品信息
- 查询商品详情
- 查询商品列表
-
测试与文档
- 使用 Postman 测试所有接口,并保留接口文档方便测试。
- 代码需符合规范:类/方法命名见名知意,关键逻辑(如参数校验、数据库异常处理)添加注释。
可能涉及到的知识点
- Java 核心语法
- Web 基础协议:HTTP/HTTPS 协议
- Json
- Spring Boot
- MySQL数据库基础
- 中间件:mybatis/mybatisplus
参考资料
- JavaWeb 24(推荐直接从day4的后端内容开始看,你将逐步掌握Task1所涉及的知识点)
特殊说明
由于该部分知识繁杂,遇到不懂的地方,google和百度,甚至问ai也是不错的选择哦!也可和出题人沟通交流
加分项
- 将商品列表信息进行缓存,降低数据库压力(Spring Cache + Redis)
Task2:为你的系统添加更多功能(下单、筛选)
阿卷看着初见雏形的平台感到十分雀跃,但他知道,仅仅只有商品信息是不够的。为了让平台真正实现交易功能,还需要开发商品的接单功能。
要求
-
了解主流数据库的表关联逻辑:简述”一对多""多对多”数据关系的核心思想,并说明本系统中
用户与商品下单/商品收藏应采用哪种关系及原因。 -
开发拓展功能接口
:在Task1基础上,新增以下功能:
- 用户下单/取消下单
- 信息筛选:支持按”类型(二手物品/代取需求)、价格范围、发布时间(如”24小时内新发布”)“筛选列表。
参考资料
加分项
- 了解后端如何接入支付平台(如微信,支付宝)以实现真正的交易功能,并简要说明如何实现
Task3:实现用户权限与安全鉴权
然而阿卷很快意识到,平台的安全性和规范性至关重要。如果没有用户权限的严格控制,任何人都可以随意修改、删除他人的商品信息。
要求
-
设计用户角色
:至少划分2种角色:
- 平台管理员:可操作所有接口。
- 普通用户:仅可发布、查询、接单、取消接单自己的商品信息和需求,不能随意删除或修改他人信息。
-
开发用户与鉴权功能
:
- 登录接口:接收”用户名、密码”,验证通过后返回
JWT Token(包含必要用户信息)。 - 接口鉴权:为Task1、Task2的所有接口添加鉴权逻辑——请求时需在Header中携带Token,未携带/Token无效则返回”401未授权”;普通成员访问越权接口时,返回”403权限不足”。
- 登录接口:接收”用户名、密码”,验证通过后返回
参考资料
JavaWeb 24(Day12登录功能)
加分项
- 开发注册接口:支持普通成员自主注册(注册后默认角色为”普通成员”,需管理员手动升级为”管理员”),并对数据库存储的密码进行加密存储(使用
BCrypt算法)
TaskX:拥有你的服务器并将项目部署上线!
在互联网的世界里,一台服务器至关重要,你可以在上面存放属于你自己的所有信息,你可以将自己的网站或者资料分享给在计算机网络世界中的所有用户,在如今的互联网世界中,每一个你所登录使用的Web/App背后都有一台强大的服务器。 现在就开始去获得属于你自己的服务器,将你本地开发的项目部署到服务器上,让全世界都能访问吧!
要求
- 获取你的服务器
- 优先选择阿里云免费试用(阿里云新用户ECS试用 3),新用户可获得3个月试用期服务器;也可选择阿里云、腾讯云、华为云等平台的学生机。
- 服务器安全注意:设置复杂密码(建议包含大小写字母、数字、特殊符号)。
- 服务器基本操作
- 在服务器上学习并使用基础Linux命令操作(参考资料:Linux常用基础命令 1)
- 建议优先重点学习文件操作(如ls、cd、cp、mkdir、rm)、进程管理(如ps、top、kill)等常用命令,帮助你更高效地管理和部署项目。
- 项目部署
- 将完成的项目部署到服务器上运行。
- 确保可以通过公网访问你的接口,建议使用 Postman 或浏览器进行访问验证。
加分项
- 配置Linux服务器的防火墙,只开放必要端口(如8080端口用于后端服务访问)
- 给出项目可访问的公网链接(如果没有能力做简单前端页面可以只给出接口链接,前端用ai速成也没问题)