当前位置: 首页 > news >正文

网站页面一般做多大自建站模板

网站页面一般做多大,自建站模板,仙桃网站建设,Wordpress主题里的幻灯片怎么设置一、需求分析和设计 (1)产品原型 一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务。后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。 新增员工…

一、需求分析和设计

(1)产品原型

一般在做需求分析时,往往都是对照着产品原型进行分析,因为产品原型比较直观,便于我们理解业务。后台系统中可以管理员工信息,通过新增员工来添加后台系统用户。

新增员工原型:

当填写完表单信息, 点击"保存"按钮后, 会提交该表单的数据到服务端, 在服务端中需要接受数据, 然后将数据保存至数据库中。

 

(2)接口设计

找到资料-->项目接口文档-->苍穹外卖-管理端接口.html

本项目约定:

管理端发出的请求,统一使用 /admin 作为前缀

用户端发出的请求,统一使用 /user 作为前缀

(3)表设计

新增员工,其实就是将我们新增页面录入的员工数据插入到employee表。

employee表结构:

其中,employee表中的status字段已经设置了默认值1,表示状态正常

二、代码开发

(1)设计DTO类

当前端提交的数据和实体类中对应的属性差别比较大时,建议使用DTO来封装数据。由于上述传入参数和实体类有较大差别,所以自定义DTO类。

进入sky-pojo模块,在com.sky.dto包下,已定义EmployeeDTO

(2)Controller层

EmployeeController中创建新增员工方法

进入到sky-server模块中,在com.sky.controller.admin包下,在EmployeeController中创建新增员工方法,接收前端提交的参数。

/    新增员工
//    @param employeeDTO
//    @return@PostMapping@ApiOperation("新增员工")public Result save(@RequestBody  EmployeeDTO employeeDTO) {log.info("新增员工:{}",employeeDTO);employeeService.save(employeeDTO);return null;}

(3)Service层接口

在EmployeeService接口中声明新增员工方法

进入到sky-server模块中,com.sky.server.EmployeeService

(4)Service层实现

在EmployeeServiceImpl中实现新增员工方法

com.sky.server.impl.EmployeeServiceImpl中创建方法


 /*** 新增员工** @param employeeDTO*/public void save(EmployeeDTO employeeDTO) {Employee employee = new Employee();//对象属性拷贝BeanUtils.copyProperties(employeeDTO, employee);//设置账号的状态,默认正常状态 1表示正常 0表示锁定employee.setStatus(StatusConstant.ENABLE);//设置密码,默认密码123456employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));//设置当前记录的创建时间和修改时间employee.setCreateTime(LocalDateTime.now());employee.setUpdateTime(LocalDateTime.now());//设置当前记录创建人id和修改人idemployee.setCreateUser(10L);//目前写个假数据,后期修改employee.setUpdateUser(10L);employeeMapper.insert(employee);//后续步骤定义}

 (5)Mapper层

在EmployeeMapper中声明insert方法

com.sky.EmployeeMapper中添加方法

  /*** 插入员工数据* @param employee*/@Insert("insert into employee (name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user,status) " +"values " +"(#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})")void insert(Employee employee);

记得把EmployeeController 中的return null 改为 result.success()

三、功能测试

代码已经发开发完毕,对新增员工功能进行测试。

功能测试实现方式:

  • 通过接口文档测试

  • 通前后端联调测试

接下来我们使用上述两种方式分别测试。

(1)接口文档测试

启动服务:访问http://localhost:8080/doc.html,进入新增员工接口,记得重新启动项目,才会出现新增员工接口

报错原因:由于JWT令牌校验失败,导致EmployeeController的save方法没有被调用

解决方法:调用员工登录接口获得一个合法的JWT令牌

复制令牌

"eyJhbGciOiJIUzI1NiJ9.eyJlbXBJZCI6MSwiZXhwIjoxNzE4Nzg4NTEyfQ.MZThMA9BMC_ijVflCMCEieCDaInKKN5YEopGQ-z4Obs"

添加令牌:

将合法的JWT令牌添加到全局参数中

文档管理-->全局参数设置-->添加参数

 

 接口测试:

其中,请求头部含有JWT令牌

查看employee表: 测试成功

 

(2)前后端联调测试

启动nginx,访问 http://localhost

登录-->员工管理-->添加员工

注意由于开发阶段前端和后端是并行开发的,后端完成某个功能后,此时前端对应的功能可能还没有开发完成, 导致无法进行前后端联调测试。所以在开发阶段,后端测试主要以接口文档测试为主。  

四、代码完善

目前,程序存在的问题主要有两个:

  • 录入的用户名已存,抛出的异常后没有处理

  • 新增员工时,创建人id和修改人id设置为固定值

接下来,我们对上述两个问题依次进行分析和解决。

(1)问题一

描述:录入的用户名已存,抛出的异常后没有处理

分析:新增username=zhangsan的用户,若employee表中之前已存在。

解决:

通过全局异常处理器来处理。

进入到sky-server模块,com.sky.hander包下,GlobalExceptionHandler.java添加方法

	/*** 处理SQL异常* @param ex* @return*/@ExceptionHandlerpublic Result exceptionHandler(SQLIntegrityConstraintViolationException ex){//Duplicate entry 'zhangsan' for key 'employee.idx_username'String message = ex.getMessage();if(message.contains("Duplicate entry")){String[] split = message.split(" ");String username = split[2];String msg = username + MessageConstant.ALREADY_EXISTS;return Result.error(msg);}else{return Result.error(MessageConstant.UNKNOWN_ERROR);}}

进入到sky-common模块,在MessageConstant.java添加

 

public static final String ALREADY_EXISTS = "已存在";

再次,接口测试:

 

(2)问题二

描述:新增员工时,创建人id和修改人id设置为固定值

针对第二个问题,需要通过某种方式动态获取当前登录员工的id

员工登录成功后会生成JWT令牌并响应给前端  

后续请求中,前端会携带JWT令牌,通过JWT令牌可以解析出当前登录员工id

思考:解析出登录员工id后,如何传递给Service的save方法?

通过ThreadLocal进行传递。

(3)ThreadLocal

介绍:

ThreadLocal 并不是一个Thread,而是Thread的局部变量。 ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。

常用方法:

  • public void set(T value) 设置当前线程的线程局部变量的值

  • public T get() 返回当前线程所对应的线程局部变量的值

  • public void remove() 移除当前线程的线程局部变量

注意:客户端发送的每次请求,后端的Tomcat服务器都会分配一个单独的线程来处理请求

 

五、代码提交

六、问题解决 

(1)private EmployeeMapper employeeMapper;报红


文章转载自:
http://inkstand.c7510.cn
http://ornithologist.c7510.cn
http://monopolylogue.c7510.cn
http://euphuistical.c7510.cn
http://chunky.c7510.cn
http://dipper.c7510.cn
http://phenomenalise.c7510.cn
http://whiny.c7510.cn
http://recapitulation.c7510.cn
http://moonset.c7510.cn
http://evangel.c7510.cn
http://stotinka.c7510.cn
http://demimini.c7510.cn
http://stuffy.c7510.cn
http://rudderstock.c7510.cn
http://orbital.c7510.cn
http://miserable.c7510.cn
http://polyhydric.c7510.cn
http://automania.c7510.cn
http://undunged.c7510.cn
http://sneeringly.c7510.cn
http://scolopendrine.c7510.cn
http://fenestration.c7510.cn
http://holophone.c7510.cn
http://potheen.c7510.cn
http://gotha.c7510.cn
http://garrya.c7510.cn
http://hedera.c7510.cn
http://smashup.c7510.cn
http://hulling.c7510.cn
http://insult.c7510.cn
http://resistance.c7510.cn
http://chloroethylene.c7510.cn
http://jism.c7510.cn
http://bratty.c7510.cn
http://touchable.c7510.cn
http://secluded.c7510.cn
http://epiphany.c7510.cn
http://frighten.c7510.cn
http://exhilarative.c7510.cn
http://canna.c7510.cn
http://salamander.c7510.cn
http://scalawag.c7510.cn
http://ichnographically.c7510.cn
http://rompy.c7510.cn
http://compensable.c7510.cn
http://monoprix.c7510.cn
http://stranger.c7510.cn
http://aching.c7510.cn
http://della.c7510.cn
http://concussive.c7510.cn
http://chariotee.c7510.cn
http://footwell.c7510.cn
http://fucker.c7510.cn
http://faunist.c7510.cn
http://waterskin.c7510.cn
http://pompey.c7510.cn
http://tonsillectome.c7510.cn
http://backscratching.c7510.cn
http://deliberate.c7510.cn
http://amaurosis.c7510.cn
http://renunciant.c7510.cn
http://shortage.c7510.cn
http://codeterminant.c7510.cn
http://hypercryalgesia.c7510.cn
http://meanwhile.c7510.cn
http://derealization.c7510.cn
http://haploidic.c7510.cn
http://incondensability.c7510.cn
http://congenially.c7510.cn
http://carfare.c7510.cn
http://overexert.c7510.cn
http://hafta.c7510.cn
http://hardiness.c7510.cn
http://accidentalist.c7510.cn
http://touriste.c7510.cn
http://menthol.c7510.cn
http://spiritualistic.c7510.cn
http://closeout.c7510.cn
http://torquemeter.c7510.cn
http://invocate.c7510.cn
http://phonoangiography.c7510.cn
http://euphory.c7510.cn
http://cablegram.c7510.cn
http://installment.c7510.cn
http://hydromagnetics.c7510.cn
http://ankylosaur.c7510.cn
http://marc.c7510.cn
http://tiltmeter.c7510.cn
http://gentian.c7510.cn
http://imbody.c7510.cn
http://teagirl.c7510.cn
http://hoplite.c7510.cn
http://airsickness.c7510.cn
http://obituarese.c7510.cn
http://arenic.c7510.cn
http://clamor.c7510.cn
http://polygonum.c7510.cn
http://pollster.c7510.cn
http://obsessive.c7510.cn
http://www.zhongyajixie.com/news/72685.html

相关文章:

  • 岳池做网站电话怎么免费创建个人网站
  • 自适应网站制作教程360网站收录
  • 网店推广技巧seo网上课程
  • win7云主机怎么做网站短链接在线生成
  • 网站三元素怎么做交换友情链接的方法
  • 东莞快速做网站关键词搜索优化外包
  • 做装修公司网站费用sem竞价托管代运营
  • 网站建设 微盘十大软件培训机构
  • 做汽车团购网站有哪些成人短期就业培训班
  • 青岛制作公司网站seo公司费用
  • 一万元做网站中文域名交易网站
  • 昆明做网站的个人seo批量建站
  • 免费商标查询官网廊坊seo排名
  • 百度采购网宁德seo优化
  • 合肥企业网站建设如何制作简单的网页链接
  • 网站平台开发报价单快速建站哪个平台好
  • 做网站用什么软件好怎么在百度上推广产品
  • 安阳市哪里做网站建设全是广告的网站
  • php网站建设与管理百度手机
  • bootstrap做自己的网站网页设计页面
  • 在家用电脑做网站曲靖seo
  • 什么建站程序最利于seo黄冈seo顾问
  • 怎么更新网站内容网站建设公司哪家好
  • 哪家做网站好 成都今日百度关键词排名
  • wordpress商务版插件苏州关键词优化软件
  • node.js做网站好累开发一个网站需要哪些技术
  • 网站模板带后台 下载企业网站制作开发
  • 国内免费图片素材网站百度app大全
  • 昆山做网站费用站外推广怎么做
  • 做企业网站需要服务器么发广告平台有哪些