反思一下linux跨域

文章讨论了前端在与后端交互时,尽管两者在同一服务器上,但由于通信由浏览器发起,因此需要使用IP地址来确保正确连接。这个问题涉及到网络通信的基础知识和服务器部署策略。

让前端传了127.0.0.1因为前端包和后端在同一个服务器,回来想了一下实际上都是浏览器发起,所以要用ip地址才可以

# **tlias智能学习辅助系统项目总结与自我评价** 在本次Java Web学习过程中,我完成了“tlias智能学习辅助系统”的开发与实现。该项目是一个基于SpringBoot框架的前后端分离式管理系统,涵盖了登录认证、员工管理、部门管理、文件上传等核心功能模块。通过本项目的实践,我仅巩固了所学知识,更提升了工程化思维和实际问题解决能力。以下是我对该项目的全面总结与深入自我评价。 --- ## 一、项目概述 **tlias智能学习辅助系统** 是一个面向教学场景的轻量级Web应用,主要用于模拟企业中常见的人员与组织架构管理需求。系统采用前后端分离架构: - **前端**:使用原生HTML + JavaScript(合jQuery和AJAX)实现页面展示与交互; - **后端**:基于SpringBoot搭建RESTful风格API接口,整合MyBatis操作MySQL数据库; - **安全机制**:通过JWT(JSON Web Token)实现无状态登录验证,并结合拦截器进行权限控制; - **数据交互**:前后端以JSON格式传输数据,统一返回结果封装类`Result<T>`提升可读性。 整个项目结构清晰、功能完整,具备良好的扩展性和维护性,是初学者掌握全栈开发流程的理想练手项目。 --- ## 二、项目功能实现总结 ### 1. 登录认证模块 实现了用户登录功能,前端提交用户名密码后,后端校验信息正确性并生成JWT令牌返回。后续所有受保护资源请求均需携带`Authorization: Bearer <token>`头信息,由自定义拦截器完成身份验证。 > ✅ 技术亮点: > - 使用HMAC-SHA512算法签名,保障Token安全性; > - 设置过期时间(1小时),防止长期有效带来的风险; > - 拦截器精准放行静态资源与登录接口,避免误拦。 ```java // 示例:JWT工具类生成Token public static String generateToken(String username) { return Jwts.builder() .setSubject(username) .setExpiration(new Date(System.currentTimeMillis() + 3600_000)) .signWith(SignatureAlgorithm.HS512, "tlias@123456") .compact(); } ``` ### 2. 员工管理模块(CRUD + 分页) 实现了完整的员工增删改查功能,支持按姓名模糊查询、性别筛选、入职日期范围查询,并集成PageHelper插件实现分页功能。 > ✅ 关键设计: > - 接口设计遵循RESTful规范: > - `GET /emps` 获取列表 > - `POST /emps` 新增员工 > - `PUT /emps` 修改员工 > - `DELETE /emps/{id}` 删除单个 > - `DELETE /emps?ids=1,2,3` 批量删除 > - 使用`@DateTimeFormat`处理前端传入的日期类型参数; > - 自定义`PageBean<T>`封装分页结果,便于前端渲染。 ### 3. 部门管理模块 提供部门的增删改查接口,为员工表中的`dept_id`字段提供下拉数据源支持,体现主从表关联思想。 ### 4. 文件上传功能 允许上传员工头像图片,服务端接收`MultipartFile`对象,保存至本地磁盘路径,并返回可访问URL供前端显示。 > ✅ 实践收获: > - 掌握了SpringBoot中静态资源映射配置方法; > - 学会使用UUID防止文件重名冲突; > - 理解了文件上传过程中的异常处理机制。 ### 5. 统一响应格式与全局异常处理 定义通用响应类`Result<T>`,确保所有接口返回结构一致;同时通过`@ControllerAdvice`实现全局异常捕获,避免系统错误直接暴露给前端。 ```java public class Result<T> { private Integer code; private String message; private T data; public static <T> Result<T> success(T data) { return new Result<>(200, "操作成功", data); } public static <T> Result<T> error(String msg) { return new Result<>(500, msg, null); } } ``` --- ## 三、技术架构与程序设计亮点 | 架构层次 | 技术选型 | 应用说明 | |--------|---------|----------| | 控制层 | `@RestController` | 提供REST接口,接收请求并返回JSON | | 业务层 | `@Service` + `@Transactional` | 封装业务逻辑,保证事务一致性 | | 数据访问层 | MyBatis + XML映射 | 灵活编写SQL语句,支持动态条件查询 | | 实体类 | POJO | 映射数据库表结构 | | 工具类 | JWT、Result、DateUtil等 | 提升代码复用性 | | 配置类 | WebMvcConfigurer | 注册拦截器、处理等问题 | 此外,项目采用MVC三层架构,各层职责分明,代码结构清晰,具有较强的可读性和可维护性,符合企业级开发标准。 --- ## 四、存在的足与反思 尽管项目整体完成度较高,但在开发过程中也暴露出一些问题和可以优化的空间: 1. **安全性有待加强** - 当前登录验证为模拟逻辑,未真正连接数据库验证账号密码; - 密码未加密存储(应使用BCrypt哈希算法); - JWT无法主动注销(未来可引入Redis黑名单机制)。 2. **缺乏细粒度权限控制** - 目前仅判断是否登录,未区分角色权限(如管理员 vs 普通用户); - 所有用户拥有相同操作权限,存在安全隐患。 3. **日志记录缺失** - 未记录关键操作行为(如谁删除了某员工),利于后期审计追踪; - 可引入AOP切面记录操作日志。 4. **前端界面较为简陋** - 使用原生HTML/CSS/JS,缺乏现代化UI框架支持; - 用户体验一般,响应式适较差。 5. **测试覆盖全** - 未编写单元测试用例验证Service层逻辑; - 缺乏自动化测试意识,依赖手动调试。 --- ## 五、自我评价 作为一名Java初学者,我对本次项目的完成情况总体满意,自评为**85分**。以下是我在项目中的具体表现分析: ### ✅ 优点与成长 1. **自主学习能力强** - 在短时间内掌握了SpringBoot、MyBatis、JWT等多项新技术; - 能够独立查阅官方文档、Stack Overflow、优快云等资源解决问题。 2. **编码规范良好** - 注重命名规范(如`employeeMapper`、`listEmployees()`); - 合理添加注释,提高代码可读性; - 接口设计符合RESTful风格,易于理解和调用。 3. **问题解决能力显著提升** - 成功解决多个典型问题,例如: - 如何让拦截器放行静态资源? - 如何处理LocalDate类型的JSON序列化? - AJAX请求失败如何配置Cors? 4. **具备初步工程化思维** - 主动封装工具类、统一响应格式; - 关注系统的可扩展性与可维护性; - 开始思考如何将小项目升级为企业级应用。 ### ❌ 足之处 1. 对Spring底层原理理解够深入,如IoC容器、AOP代理机制等; 2. 缺乏部署经验,尚未将项目打包上线运行; 3. 单元测试意识薄弱,未形成“先写测试再写代码”的习惯; 4. 项目文档撰写能力有待提升,未能及时输出详细设计说明书。 --- ## 六、收获与展望 ### 🌱 主要收获 - 掌握了SpringBoot快速开发的核心技能; - 理解了前后端分离的基本模式与数据交互方式; - 学会了如何设计RESTful API并保证其安全性; - 提升了调试能力和排查错误的耐心与技巧; - 初步建立起软件工程的思维方式,再只是“写代码”,而是“做系统”。 ### 🔭 未来规划 1. **进阶版 tlias-plus** - 引入Spring Security替代手写拦截器; - 添加RBAC权限模型,实现角色与菜单控制; - 使用Redis管理JWT状态,支持退出登录。 2. **前后端完全分离重构** - 前端改用Vue3 + Element Plus构建SPA; - 使用Axios调用后端API,提升用户体验; - 部署时前后端独立部署,提高性能与灵活性。 3. **加入DevOps实践** - 使用Maven打包项目为jar文件; - Docker容器化部署Linux服务器; - Jenkins实现CI/CD自动化构建。 4. **完善测试体系** - 使用JUnit5测试Service层方法; - 使用Mockito模拟依赖对象; - 编写Postman测试集合验证接口功能。 --- ## 七、结语 `tlias智能学习辅助系统`虽是一个教学项目,但它承载了我从“理论学习”走向“工程实践”的重要一步。它让我明白:编程仅仅是语法的堆砌,更是逻辑、结构、安全与用户体验的综合体现。 虽然目前还有很多足,但我相信只要保持学习的热情与持续改进的态度,终有一天我能独立开发出真正有价值的企业级系统。这条路才刚刚开始,而我已经准备好继续前行。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值