滨州网站建设phpiwordpress主题 微信
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:07
当前位置: 首页 > news >正文
滨州网站建设phpi,wordpress主题 微信,电子商务网站建设的基本要素,网站开发培训学校瑞吉外卖-Day01课程内容软件开发整体介绍瑞吉外卖项目介绍开发环境搭建后台登录功能开发后台退出功能开发1. 软件开发整体介绍作为一名软件开发工程师,我们需要了解在软件开发过程中的开发流程#xff0c; 以及软件开发过程中涉及到的岗位角色#xff0c;角色的分工、职责 以及软件开发过程中涉及到的岗位角色角色的分工、职责 并了解软件开发中涉及到的三种软件环境。那么这一小节我们将从 软件开发流程、角色分工、软件环境 三个方面来整体上介绍一下软件开发。1.1 软件开发流程1). 第1阶段: 需求分析完成产品原型、需求规格说明书的编写。 产品原型一般是通过网页(html)的形式展示当前的页面展示什么样的数据, 页面的布局是什么样子的点击某个菜单打开什么页面点击某个按钮出现什么效果都可以通过产品原型看到。 需求规格说明书 一般来说就是使用 Word 文档来描述当前项目有哪些功能每一项功能的需求及业务流程是什么样的都会在文档中描述。2). 第2阶段: 设计设计的内容包含 产品设计、UI界面设计、概要设计、详细设计、数据库设计。在设计阶段会出具相关的UI界面、及相关的设计文档。比如数据库设计需要设计当前项目中涉及到哪些数据库每一个数据库里面包含哪些表这些表结构之间的关系是什么样的表结构中包含哪些字段字段类型都会在文档中描述清楚。3). 第3阶段: 编码编写项目代码、并完成单元测试。作为软件开发工程师我们主要的工作就是在该阶段 对分配给我们的模块功能进行编码实现。编码实现完毕后进行单元测试单元测试通过后再进入到下一阶段。4). 第4阶段: 测试在该阶段中主要由测试人员, 对部署在测试环境的项目进行功能测试, 并出具测试报告。5). 第5阶段: 上线运维在项目上线之前 会由运维人员准备服务器上的软件环境安装、配置 配置完毕后 再将我们开发好的项目部署在服务器上运行。我们作为软件开发工程师 我们主要的任务是在编码阶段 但是在一些小的项目组当中 也会涉及到数据库的设计、测试等方面的工作。1.2 角色分工学习了软件开发的流程之后 我们还有必要了解一下在整个软件开发过程中涉及到的岗位角色以及各个角色的职责分工。岗位/角色职责/分工项目经理对整个项目负责任务分配、把控进度产品经理进行需求调研输出需求调研文档、产品原型等UI设计师根据产品原型输出界面效果图架构师项目整体架构设计、技术选型等开发工程师功能代码实现测试工程师编写测试用例输出测试报告运维工程师软件环境搭建、项目上线上述我们讲解的角色分工, 是在一个项目组中比较标准的角色分工, 但是在实际的项目中, 有一些项目组由于人员配置紧张, 可能并没有专门的架构师或测试人员, 这个时候可能需要有项目经理或者程序员兼任。1.3 软件环境在我们日常的软件开发中会涉及到软件开发中的三套环境 那么这三套环境分别是: 开发环境、测试环境、生产环境。 接下来我们分别介绍一下这三套环境的作用和特点。1). 开发环境(development)我们作为软件开发人员在开发阶段使用的环境就是开发环境一般外部用户无法访问。比如我们在开发中使用的MySQL数据库和其他的一些常用软件我们可以安装在本地 也可以安装在一台专门的服务器中 这些应用软件仅仅在软件开发过程中使用 项目测试、上线时我们不会使用这套环境了这个环境就是开发环境。2). 测试环境(testing)当软件开发工程师将项目的功能模块开发完毕并且单元测试通过后就需要将项目部署到测试服务器上让测试人员对项目进行测试。那这台测试服务器就是专门给测试人员使用的环境 也就是测试环境用于项目测试一般外部用户无法访问。3). 生产环境(production)当项目开发完毕并且由测试人员测试通过之后就可以上线项目将项目部署到线上环境并正式对外提供服务这个线上环境也称之为生产环境。 拓展知识: 准生产环境: 对于有的公司来说项目功能开发好, 并测试通过以后并不是直接就上生产环境。为了保证我们开发的项目在上线之后能够完全满足要求就需要把项目部署在真实的环境中, 测试一下是否完全符合要求啊这时候就诞生了准生产环境你可以把他当做生产环境的克隆体准生产环境的服务器配置, 安装的应用软件(JDK、Tomcat、数据库、中间件 …) 的版本都一样这种环境也称为 仿真环境。 ps.由于项目的性质和类型不同有的项目可能不需要这个环境2 瑞吉外卖项目介绍在开发瑞吉外卖这个项目之前我们需要全方位的来介绍一下当前我们学习的这个项目。接下来我们将从以下的五个方面 来介绍瑞吉外卖这个项目。2.1 项目介绍本项目瑞吉外卖是专门为餐饮企业餐厅、饭店定制的一款软件产品包括 系统管理后台 和 移动端应用 两部分。其中系统管理后台主要提供给餐饮企业内部员工使用可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护。移动端应用主要提供给消费者使用可以在线浏览菜品、添加购物车、下单等。本项目共分为3期进行开发阶段功能实现第一期主要实现基本需求其中移动端应用通过H5实现用户可以通过手机浏览器访问第二期主要针对移动端应用进行改进使用微信小程序实现用户使用起来更加方便第三期主要针对系统进行优化升级提高系统的访问性能2.2 产品原型产品原型就是一款产品成型之前由产品经理绘制的一个简单的框架就是将页面的排版布局展现出来使产品的初步构思有一个可视化的展示。通过原型展示可以更加直观的了解项目的需求和提供的功能。注意事项 产品原型主要用于展示项目的功能并不是最终的页面效果。在课程资料的产品原型文件夹下,提供了两份产品原型。1). 管理端餐饮企业内部员工使用。 主要功能有: 模块描述登录/退出内部员工必须登录后,才可以访问系统管理后台员工管理管理员可以在系统后台对员工信息进行管理包含查询、新增、编辑、禁用等功能分类管理主要对当前餐厅经营的 菜品分类 或 套餐分类 进行管理维护 包含查询、新增、修改、删除等功能菜品管理主要维护各个分类下的菜品信息包含查询、新增、修改、删除、启售、停售等功能套餐管理主要维护当前餐厅中的套餐信息包含查询、新增、修改、删除、启售、停售等功能订单明细主要维护用户在移动端下的订单信息包含查询、取消、派送、完成以及订单报表下载等功能2). 用户端移动端应用主要提供给消费者使用。主要功能有:模块描述登录/退出在移动端, 用户也需要登录后使用APP进行点餐点餐-菜单在点餐界面需要展示出菜品分类/套餐分类, 并根据当前选择的分类加载其中的菜品信息, 供用户查询选择点餐-购物车用户选中的菜品就会加入用户的购物车, 主要包含 查询购物车、加入购物车、删除购物车、清空购物车等功能订单支付用户选完菜品/套餐后, 可以对购物车菜品进行结算支付, 这时就需要进行订单的支付个人信息在个人中心页面中会展示当前用户的基本信息, 用户可以管理收货地址, 也可以查询历史订单数据1.3 技术选型关于本项目的技术选型, 我们将会从 用户层、网关层、应用层、数据层 这几个方面进行介绍而对于我们服务端开发工程师来说在项目开发过程中我们主要关注应用层及数据层技术的应用。1). 用户层本项目中在构建系统管理后台的前端页面我们会用到H5、Vue.js、ElementUI等技术。而在构建移动端应用时我们会使用到微信小程序。2). 网关层Nginx是一个服务器主要用来作为Http服务器部署静态资源访问性能高。在Nginx中还有两个比较重要的作用 反向代理和负载均衡 在进行项目部署时要实现Tomcat的负载均衡就可以通过Nginx来实现。3). 应用层SpringBoot 快速构建Spring项目, 采用 约定优于配置 的思想, 简化Spring项目的配置开发。Spring: 统一管理项目中的各种资源(bean), 在web开发的各层中都会用到。SpringMVCSpringMVC是spring框架的一个模块springmvc和spring无需通过中间整合层进行整合可以无缝集成。SpringSession: 主要解决在集群环境下的Session共享问题。lombok能以简单的注解形式来简化java代码提高开发人员的开发效率。例如开发中经常需要写的javabean都需要花时间去添加相应的getter/setter也许还要去写构造器、equals等方法。Swagger 可以自动的帮助开发人员生成接口文档并对接口进行测试。4). 数据层MySQL 关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。MybatisPlus 本项目持久层将会使用MybatisPlus来简化开发, 基本的单表增删改查直接调用框架提供的方法即可。Redis 基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存(降低数据库访问压力, 提供访问效率), 在后面的性能优化中会使用。5). 工具git: 版本控制工具, 在团队协作中, 使用该工具对项目中的代码进行管理。maven: 项目构建工具。junit单元测试工具开发人员功能实现完毕后需要通过junit对功能进行单元测试。1.4 功能架构1). 移动端前台功能手机号登录 , 微信登录 , 收件人地址管理 , 用户历史订单查询 , 菜品规格查询 , 购物车功能 , 下单 , 分类及菜品浏览。2). 系统管理后台功能员工登录/退出 , 员工信息管理 , 分类管理 , 菜品管理 , 套餐管理 , 菜品口味管理 , 订单管理 。1.5 角色在瑞吉外卖这个项目中存在以下三种用户这三种用户对应三个角色 后台系统管理员、后台系统普通员工、C端(移动端)用户。角色权限操作后台系统管理员登录后台管理系统拥有后台系统中的所有操作权限后台系统普通员工登录后台管理系统对菜品、套餐、订单等进行管理 (不包含员工管理)C端用户登录移动端应用可以浏览菜品、添加购物车、设置地址、在线下单等3. 开发环境搭建3.1 数据库环境搭建3.1.1 创建数据库可以通过以下两种方式中的任意一种, 来创建项目的数据库:1).图形界面注意: 本项目数据库的字符串, 选择 utf8mb42).命令行3.1.2 数据库表导入项目的数据库创建好了之后, 可以直接将 资料/数据模型/db_reggie.sql 直接导入到数据库中, 也可以通过两种方式实现:1).图形界面刷新 2).命令行注意: 通过命令导入表结构时注意sql文件不要放在中文目录中3.1.3 数据库表介绍数据库表导入之后, 接下来介绍一下本项目中所涉及到的表结构: 序号表名说明1employee员工表2category菜品和套餐分类表3dish菜品表4setmeal套餐表5setmeal_dish套餐菜品关系表6dish_flavor菜品口味关系表7user用户表C端8address_book地址簿表9shopping_cart购物车表10orders订单表11order_detail订单明细表上述的表结构, 我们目前先简单的结合页面原型了解一下, 大概有那些表, 每张表结构中存储什么样的数据, 有一个印象。对于具体的表结构, 以及表结构中的字段, 在讲解具体的功能开发时, 我们再详细介绍。employee 员工表主要存储员工的个人信息category 菜品和套餐分类表dish 菜品表setmeal 套餐表dish_flavor 菜品口味关系表address_book 地址簿表shopping_cart 购物车表order_detail 订单明细表3.2 Maven项目搭建3.2.1 创建maven项目1). 在idea中创建maven project, 项目名称 reggie_take_out 2). 检查项目编码3). 检查maven配置4). 检查JDK版本3.2.2 搭建基础环境1).在pom.xml中导入依赖?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.4.5/versionrelativePath/ !– lookup parent from repository –/parentgroupIdcom.itheima/groupIdartifactIdreggie_take_out/artifactIdversion1.0-SNAPSHOT/versionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdscopecompile/scope/dependencydependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.4.2/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.76/version/dependencydependencygroupIdcommons-lang/groupIdartifactIdcommons-lang/artifactIdversion2.6/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.23/version/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.4.5/version/plugin/plugins/build /project2).在工程的resources目录下创建application.yml文件,并引入配置server:port: 8080 spring:application:#应用的名称可选name: reggie_take_outdatasource:druid:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/reggie?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf-8zeroDateTimeBehaviorconvertToNulluseSSLfalseallowPublicKeyRetrievaltrueusername: rootpassword: 123456 mybatis-plus:configuration:# address_book(表名) —– AddressBook(实体类名)# user_name(表名)—— userName(实体类名)#在映射实体或者属性时将数据库中表名和字段名中的下划线去掉按照驼峰命名法映射map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:id-type: ASSIGN_ID3). 并编写启动类Slf4j SpringBootApplication public class ReggieApplication {public static void main(String[] args) {SpringApplication.run(ReggieApplication.class, args);log.info(项目启动成功…);} }Slf4j : 是lombok中提供的注解, 用来通过slf4j记录日志。当搭建完上述的基础环境之后, 就可以通过引导类, 启动该项目。注这里面我们用公共包的方式创建包把这里面的com复制过来3.2.3 前端静态资源导入我们作为服务端开发工程师 我们课程学习的重心应该放在后端的业务代码上 前端的页面我们只需要导入课程资料中的前端资源 前端页面的代码我们只需要能看懂即可。1). 导入静态资源前端资源存放位置为 资料/前端资源 : 将上述两个目录中的静态资源文件, 导入到项目的resources目录下: 2). 创建配置类WebMvcConfig设置静态资源映射用于在Springboot项目中, 默认静态资源的存放目录为 : classpath:/resources/, classpath:/static/, classpath:/public/ ; 而在我们的项目中静态资源存放在 backend, front 目录中, 那么这个时候要想访问到静态资源, 就需要设置静态资源映射。Slf4j Configuration //表示他是一个配置类 public class WebMvcConfig extends WebMvcConfigurationSupport {/*** 设置静态资源映射* param registry/Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info(开始进行静态资源映射…);registry.addResourceHandler(/backend/).addResourceLocations(classpath:/backend/);registry.addResourceHandler(/front/).addResourceLocations(classpath:/front/);}}classpath:指的是在resources文件下面3). 访问测试http://localhost:8080/backend/index.html4. 后台系统登录功能4.1 需求分析1). 页面原型展示2). 登录页面成品展示登录页面存放目录 /resources/backend/page/login/login.htmlhttp://localhost:8080/backend/page/login/login.html3). 查看登录请求通过浏览器调试工具F12可以发现点击登录按钮时页面会发送请求账号admin密码123456F12 点击登录按钮时页面会发送请求 并提交参数 username和password, 请求参数为json格式数据 {username:admin,password:123456}。请求地址为http://localhost:8080/employee/login此时报404是因为我们的后台系统还没有响应此请求的处理器所以我们需要创建相关类来处理登录请求 4). 数据模型(employee表)5). 前端页面分析当点击 登录 按钮, 会触发Vue中定义的 handleLogin 方法:到达handleLogin方法之后 先找到表单 然后调用validate进行表单检验 主要检验我们的用户名和密码是否为空如果检验通过后 我们就把loading改成true 【this.loading true】 当把loading改成true 时 下图就一直属于登录中 这个时候 重点在于如果检验通过之后 就会调用loginApi 这个方法关联在login.js里面 我们鼠标放在loginApi上 按住Ctrl左健 就可以跳转到如下页面function loginApi(data) {return \(axios({url: /employee/login,method: post,data}) }function logoutApi(){return \)axios({url: /employee/logout,method: post,}) } 通过axios向我们的后端服务来发送请求 请求为/employee/login 是一个post, 并且把数据 data带过来 这个数据就是我们的loginForm loginForm里面话的就是我们的用户名和密码 这个时候我们的请求就发出去了 请求发出去之后 如果我们的服务端接收到请求 就要在服务端进行相对应的处理 处理完之后 在给前端页面 一个响应的结果 而这个就是通过res来进行接收 let res await loginApi(this.loginForm) 接收好后 我们在进行判断 如果 String(res.code) 1 如果等于1 就表示登录成功 当登录成功之后 将数据转换成JSON 然后保存在浏览器中存储在客户端的 localStorage 中通过k-v的方式转成JSDNlocalStorage.setItem(userInfo,JSON.stringify(res.data)) 然后在做页面跳转 跳转的页面为/backend/index.html【 window.location.href /backend/index.html】 跳转到如下页面如果登录失败 也就是说String(res.code) 1 会提供一个错误信息 this.\(message.error(res.msg) 然后把loading 改成 【falseloading false】 这个时候我们的前端页面又会变成登录按钮 如下图所示 这个时候 我们就可以在重新登录 methods: {async handleLogin() {this.\)refs.loginForm.validate(async (valid) {if (valid) {this.loading truelet res await loginApi(this.loginForm)if (String(res.code) 1) {localStorage.setItem(userInfo,JSON.stringify(res.data))window.location.href /backend/index.html} else {this.$message.error(res.msg)this.loading false}}})}}在上述的前端代码中, 大家可以看到, 发送登录的异步请求之后, 获取到响应结果, 在响应结果中至少包含三个属性: code、data、msg 。从响应返回结果里面获取到的值 在响应结果中至少包含三个属性: code、data、msg 。 也就是说 要求我们服务端处理完之后 数据里面应该要有code、data、msg 并且是JSON的形式 这样前端页面才能获取到由前端代码我们也可以看到在用户登录成功之后服务端会返回用户信息而前端是将这些用户信息存储在客户端的 localStorage 中了。localStorage.setItem(userInfo,JSON.stringify(res.data))4.2 代码开发4.2.1 基础准备工作在进行登录功能的代码实现之前 首先在我们的工程下创建包结构这一步 我们通过公共包创建的方式已经完成了 1). 创建实体类Employee该实体类主要用于和员工表 employee 进行映射。 该实体类 也可以直接从资料( 资料/实体类 )中拷贝工程中。所属包: com.itheima.reggie.entitypackage com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime;/
- 员工实体类 *
- / Data public class Employee implements Serializable {private static final long serialVersionUID 1L;private Long id;private String username;private String name;private String password;private String phone;private String sex;private String idNumber; //驼峰命名法 — 映射的字段名为 id_numberprivate Integer status;private LocalDateTime createTime;private LocalDateTime updateTime;TableField(fill FieldFill.INSERT)private Long createUser;TableField(fill FieldFill.INSERT_UPDATE)private Long updateUser;} 注意实体类和表的名称不同 要开启驼峰命名法实体类 private String idNumber; //驼峰命名法 — 映射的字段名为 id_number private LocalDateTime createTime; private LocalDateTime updateTime;数据库中的表这个时候要开启驼峰命名2). 定义Mapper接口在MybatisPlus中, 自定义的Mapper接口, 需要继承自 BaseMapper。所属包: com.itheima.reggie.mapperMapper public interface EmployeeMapper extends BaseMapperEmployee {}3).Service接口本项目的Service接口, 在定义时需要继承自MybatisPlus提供的Service层接口 IService, 这样就可以直接调用 父接口的方法直接执行业务操作, 简化业务层代码实现。所属包: com.itheima.reggie.servicepublic interface EmployeeService extends IServiceEmployee { }4). Service实现类所属包: com.itheima.reggie.service.implService public class EmployeeServiceImpl extends ServiceImplEmployeeMapper, Employee implements EmployeeService {}5). Controller基础代码所属包: com.itheima.reggie.controllerSlf4j RestController RequestMapping(/employee) public class EmployeeController {Autowiredprivate EmployeeService employeeService;}6). 导入通用结果类R此类是一个通用结果类服务端响应的所有结果最终都会包装成此种类型返回给前端页面。后面我们要写很多的controller controller也有很多方法 这些方法全都是响应我们客户端页面发过来的一些请求 然后controller处理完成之后 要给页面一个结果 而这个结果封装的话都统一把所有的返回结果全都封装成一个R对象 所属包: com.itheima.reggie.commonpackage com.itheima.reggie.common;import lombok.Data; import java.util.HashMap; import java.util.Map;/** 通用返回结果服务端响应的数据最终都会封装成此对象* param T*/ Data public class RT {private Integer code; //编码1成功0和其它数字为失败private String msg; //错误信息private T data; //数据private Map map new HashMap(); //动态数据public static T RT success(T object) {RT r new RT();r.data object;r.code 1;return r;}public static T RT error(String msg) {R r new R();r.msg msg;r.code 0;return r;}public RT add(String key, Object value) {this.map.put(key, value);return this;}} A. 如果业务执行结果为成功, 构建R对象时, 只需要调用 success 方法; 如果需要返回数据传递 object 参数, 如果无需返回, 可以直接传递null。B. 如果业务执行结果为失败, 构建R对象时, 只需要调用error 方法, 传递错误提示信息即可。4.2.2 登录逻辑分析处理逻辑如下①. 将页面提交的密码password进行md5加密处理, 得到加密后的字符串②. 根据页面提交的用户名username查询数据库中员工数据信息③. 如果没有查询到, 则返回登录失败结果④. 密码比对如果不一致, 则返回登录失败结果⑤. 查看员工状态如果为已禁用状态则返回员工已禁用结果⑥. 登录成功将员工id存入Session, 并返回登录成功结果4.2.3 代码实现技术点说明: A. 由于需求分析时, 我们看到前端发起的请求为post请求, 所以服务端需要使用注解 PostMappingB. 由于前端传递的请求参数为json格式的数据, 这里使用Employee对象接收, 但是将json格式数据封装到实体类中, 在形参前需要加注解RequestBody /员工登录/public REmployee login(HttpServletRequest request, RequestBody Employee employee){return null;}package com.itheima.reggie.controller;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.itheima.reggie.common.R; import com.itheima.reggie.entity.Employee; import com.itheima.reggie.service.EmployeeService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;Slf4j RestController RequestMapping(/employee) public class EmployeeController {Autowiredprivate EmployeeService employeeService;/员工登录/public REmployee login(HttpServletRequest request, RequestBody Employee employee){//1、将页面提交的密码password进行md5加密处理//密码封装到employee里面去了 所以我们直接通过 employee.getPassword() 就可以获取到密码;String password employee.getPassword();//用工具类进行md5加密 加密完 passwordpassword DigestUtils.md5DigestAsHex(password.getBytes());//2、根据页面提交的用户名username查询数据库LambdaQueryWrapperEmployee queryWrapper new LambdaQueryWrapper();queryWrapper.eq(Employee::getUsername,employee.getUsername());Employee emp employeeService.getOne(queryWrapper);//3、如果没有查询到则返回登录失败结果if(emp null){return R.error(登录失败);}//4、密码比对如果不一致则返回登录失败结果if(!emp.getPassword().equals(password)){return R.error(登录失败);}//5、查看员工状态如果为已禁用状态则返回员工已禁用结果if(emp.getStatus() 0){return R.error(账号已禁用);}//6、登录成功将员工id存入Session并返回登录成功结果request.getSession().setAttribute(employee,emp.getId());return R.success(emp);}} 4.3 功能测试代码实现完毕后, 启动项目, 访问url: http://localhost:8080/backend/page/login/login.html , 进行登录测试。在测试过程中 可以通过debug断点调试的方式来跟踪程序的执行过程并且可以查看程序运行时各个对象的具体赋值情况。而且需要注意, 在测试过程中需要将所有的情况都覆盖到。1). 问题说明当我们在进行debug端点调试时, 前端可能会出现如下问题: 前端页面的控制台报出错误-超时;2). 解决方案前端进行异步请求时, 默认超时10000ms , 可以将该值调大一些。4.3 功能测试代码实现完毕后, 启动项目, 访问url: http://localhost:8080/backend/page/login/login.html , 进行登录测试。在测试过程中 可以通过debug断点调试的方式来跟踪程序的执行过程并且可以查看程序运行时各个对象的具体赋值情况。而且需要注意, 在测试过程中需要将所有的情况都覆盖到。
- 上一篇: 滨州建设厅网站石家庄网站编辑
- 下一篇: 滨州网站建设滨州网站的下拉列表怎么做
相关文章
-
滨州建设厅网站石家庄网站编辑
滨州建设厅网站石家庄网站编辑
- 技术栈
- 2026年03月21日
-
滨州的网站开发深圳建筑业网
滨州的网站开发深圳建筑业网
- 技术栈
- 2026年03月21日
-
滨江网站建设公司想找做海报的超清图片去哪个网站找
滨江网站建设公司想找做海报的超清图片去哪个网站找
- 技术栈
- 2026年03月21日
-
滨州网站建设滨州网站的下拉列表怎么做
滨州网站建设滨州网站的下拉列表怎么做
- 技术栈
- 2026年03月21日
-
滨州网站建设电话在深圳市做一个网站多少钱
滨州网站建设电话在深圳市做一个网站多少钱
- 技术栈
- 2026年03月21日
-
滨州网站建设铭盛信息兰州东方商易文化传播有限责任公司
滨州网站建设铭盛信息兰州东方商易文化传播有限责任公司
- 技术栈
- 2026年03月21日






