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

徐州手机网站设计看到招聘游戏推广员千万别去

徐州手机网站设计,看到招聘游戏推广员千万别去,做美工好的网站,百度经验欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ 图书管理系统 创建书籍类BookInfo import lombok.Data;import java.math.BigDecimal;Data //这个类基本上是和数据库对应起来的 public class BookInfo {private Integer id…

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗

如有错误,欢迎指出~


图书管理系统

创建书籍类BookInfo

import lombok.Data;import java.math.BigDecimal;@Data
//这个类基本上是和数据库对应起来的
public class BookInfo {private Integer id;private String bookName;private String author;private Integer num;private BigDecimal price;private String publishName;private Integer status;//可以使用枚举,不建议使用Boolean类型private String statusCN;
}

需求:

1. 登录:⽤⼾输⼊账号,密码完成登录功能

2. 列表展⽰:展⽰图书3.4.1 准备⼯作 创建新项⽬,引⼊对应依赖,

根据学习的深入,系统后续其他功能也会逐步完善~

根据需求可以得知,后端需要提供两个接⼝

1. 账号密码校验接⼝:根据输⼊⽤⼾名和密码校验登录是否通过

2. 图书列表:提供图书列表信息

用户登入UserController

接⼝定义

1. 登录接⼝ [URL] POST /user/login

[请求参数] name=admin&password=admin

[响应] true //账号密码验证成功 false//账号密码验证失败


import jakarta.servlet.http.HttpSession;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/login")public Boolean login(String name, String password, HttpSession session){//1.校验参数形式//2.从数据库中校验账号和密码是否正确,但是还未学,暂且写死//3.如果正确,存储session,返回trueif(!StringUtils.hasLength(name) || !StringUtils.hasLength(password)){return false;}if("admin".equals(name) && "admin".equals(password)){//账号密码都正确//session的内容,取决于后面需要从session中获取什么session.setAttribute("userName",name);return true;}return false;}
}

 用postman测试后端接口 

书架BookController

2. 图书列表展⽰

[URL] POST /book/getList

[请求参数] ⽆

[响应] 返回图书列表 [ { "id": 1, "bookName": "活着", "author": "余华", "count": 270, "price": 20, "publish": "北京⽂艺出版社", "status": 1, "statusCN": "可借阅" }, ... ]  


import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;@RestController
@RequestMapping("/book")
public class BookController {@RequestMapping("/getList")public List<BookInfo> getList(){//从数据库中查询,先mock(模拟)一些数据List<BookInfo> bookInfos=mockData();for(BookInfo bookInfo: bookInfos){if(bookInfo.getStatus()==1){bookInfo.setStatusCN("可借阅");//这里的设置是为了方便后面,但不合理,正常后端是返回数字0或1}else{bookInfo.setStatusCN("不可借阅");}}return bookInfos;}private List<BookInfo> mockData() {List<BookInfo> bookInfos=new ArrayList<>();for (int i = 1; i <= 15; i++) {BookInfo bookInfo = new BookInfo();bookInfo.setId(i);bookInfo.setBookName("图书"+i);bookInfo.setAuthor("作者"+i);bookInfo.setPublishName("出版社"+i);bookInfo.setNum(new Random().nextInt(100));//生成100以内的随机数bookInfo.setPrice(new BigDecimal(new Random().nextInt(70)+10));//10~80之间bookInfo.setStatus(i%5==0?0:1);bookInfos.add(bookInfo);}return bookInfos;}
}

测试

测试前端浏览器,对接后端模拟的数据 

 

应⽤分层

应⽤分层是⼀种软件开发设计思想,它将应⽤程序分成N个层次,这N个层次分别负责各⾃的职责,多个 层次之间协同提供完整的功能.根据项⽬的复杂度,把项⽬分成三层,四层或者更多层. 常⻅的MVC设计模式,就是应⽤分层的⼀种具体体现.

为什么需要应⽤分层

在最开始的时候,为了让项⽬快速上线,我们通常是不考虑分层的.但是随着业务越来越复杂,⼤量的 代码混在⼀起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动⼀处就牵⼀发⽽动全⾝等 问题.所以学习对项⽬进⾏分层就是我们程序员的必修课了.

如何分层(三层架构)

"MVC"三层架构就是把整体的系统分成了Model(模型),View(视图)和Controller (控制器)三个层次,也就是将⽤⼾视图和业务处理隔离开,并且通过控制器连接起来,很好地实现 了表现和逻辑的解耦,是⼀种标准的软件分层架构

⽬前现在更主流的开发⽅式是"前后端分离"的⽅式,后端开发⼯程师不再需要关注前端的实现,所以对 于Java后端开发者,⼜有了⼀种新的分层架构:把整体架构分为表现层、业务逻辑层和数据层.这种分层 ⽅式也称之为"三层架构".

  • 1. 表现层: 就是展⽰数据结果和接受⽤⼾指令的,是最靠近⽤⼾的⼀层;
  • 2. 业务逻辑层 :负责处理业务逻辑,⾥⾯有复杂业务的具体实现;
  • 3. 数据层: 负责存储和管理与应⽤程序相关的数据  

可以看到,咱们前⾯的代码,并不符合这种设计思想,⽽是所有的代码堆砌在⼀起

 Spring MVC在后端开发角度把代码分为三个部分:

  1. 请求处理,响应数据: 负责,接收页面的请求,给页面响应数据
  2. 逻辑处理: 负责业务逻辑处理的代码
  3. 数据访问: 负责业务数据的维护操作,包括增删改查等操作

Controller:控制层. 接收前端发送的请求,对请求进行处理,并响应数据

Service:业务逻辑层,处理具体的业务逻辑

Dao:数据访问层,也称为持久层,负责数据访问操作,包括数据的增删查改.

MVC强调的是数据与模型的分离

三层架构强调的是数据的处理,两者的目的都是解耦,代码分层

MVC和三层架构的区别和联系

关于⼆者的关系,⼀直存在不同的观点.有⼈认为三层架构是MVC模式的⼀种实现,也有⼈认为MVC是 三层架构的替代⽅案,等等各种说法都有.根本原因是⼤家站在不同的⻆度来看待这个问题的.

概念上来讲,⼆者都是软件⼯程领域中的架构模式.

  • MVC架构模式由三部分组成,分别是: 模型(Model),视图(View)和控制器(Controller).
  • 三层架构将业务应⽤划分为: 表现层,业务逻辑层,数据访问层.

⼆者其实是从不同⻆度对软件⼯程进⾏了抽象.

  • MVC模式强调数据和视图分离,将数据展⽰和数据处理分开,通过控制器对两者进⾏组合.
  • 三层架构强调不同维度数据处理的⾼内聚和低耦合,将交互界⾯,业务处理和数据库操作的逻辑分开.

⻆度不同也就谈不上互相替代了,在⽇常的开发中可以经常看到两种共存的情况,⽐如我们设计模型 层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)。

但是⼆者的⽬的是相同的,都是"解耦,分层,代码复⽤"

软件设计原则:⾼内聚低耦合.

应⽤分层的好处

• 降低层与层之间的依赖,结构更加的明确,利于各层逻辑的复⽤

• 开发⼈员可以只关注整个结构中的其中某⼀层,极⼤地降低了维护成本和维护时间

• 可以很容易的⽤新的实现来替换原有层次的实现

• 有利于标准化  

代码重构

使⽤上⾯的分层思想,来对代码进⾏改造

1. 先创建对应的包路径,并把代码移到对应的⽬录

代码拆分

控制层:接收前端发送的请求,对请求进⾏处理,并响应数据

package com.example.demo.controller;import com.example.demo.model.BookInfo;
import com.example.demo.service.BookService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;@RestController
@RequestMapping("/book")
public class BookController {@PostMapping("/getList")public List<BookInfo> getList(){BookService bookService = new BookService();List<BookInfo> bookInfos = bookService.getBookList();return bookInfos;}
}

业务逻辑层:处理具体的业务逻辑。

package com.example.demo.service;import com.example.demo.dao.BookDao;
import com.example.demo.model.BookInfo;import java.util.List;public class BookService {public List<BookInfo> getBookList(){BookDao bookDao = new BookDao();List<BookInfo> bookInfos = bookDao.mockData();for(BookInfo bookInfo : bookInfos){if(bookInfo.getStatus() == 1){bookInfo.setStatusCN("可借阅");}else{bookInfo.setStatusCN("不可借阅");}}return bookInfos;}
}

数据访问层:负责数据访问操作,包括数据的增、删、改、查

package com.example.demo.dao;import com.example.demo.model.BookInfo;import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class BookDao {public List<BookInfo> mockData() {List<BookInfo> bookInfos = new ArrayList<>();for(int i = 1; i <= 15; i++){BookInfo bookInfo = new BookInfo();bookInfo.setId(i);bookInfo.setBookName("图书"+i);bookInfo.setAuthor("作者"+i);bookInfo.setPublishName("出版社"+i);bookInfo.setNum(new Random().nextInt(100));//生成100以内的随机数bookInfo.setPrice(new BigDecimal(new Random().nextInt(70)+10));//10~80之间bookInfo.setStatus(i%5==0?0:1);bookInfos.add(bookInfo);}return bookInfos;}
}


文章转载自:
http://cilia.hjyw.cn
http://gpt.hjyw.cn
http://hematolysis.hjyw.cn
http://percher.hjyw.cn
http://hyperuricemia.hjyw.cn
http://readmitance.hjyw.cn
http://qnp.hjyw.cn
http://gertrude.hjyw.cn
http://evaluation.hjyw.cn
http://transvesical.hjyw.cn
http://sorceress.hjyw.cn
http://caecectomy.hjyw.cn
http://effusively.hjyw.cn
http://imitator.hjyw.cn
http://unrhymed.hjyw.cn
http://cyclical.hjyw.cn
http://braincase.hjyw.cn
http://holoenzyme.hjyw.cn
http://aeroallergen.hjyw.cn
http://photoflash.hjyw.cn
http://bouncer.hjyw.cn
http://bondstone.hjyw.cn
http://surgically.hjyw.cn
http://fresher.hjyw.cn
http://hijacker.hjyw.cn
http://statistic.hjyw.cn
http://hallali.hjyw.cn
http://nullifidian.hjyw.cn
http://fieldfare.hjyw.cn
http://voluptuous.hjyw.cn
http://dahabiah.hjyw.cn
http://refragable.hjyw.cn
http://courses.hjyw.cn
http://flightworthy.hjyw.cn
http://pushball.hjyw.cn
http://tedious.hjyw.cn
http://empaquetage.hjyw.cn
http://athleticism.hjyw.cn
http://herniotomy.hjyw.cn
http://leukemic.hjyw.cn
http://nullifier.hjyw.cn
http://squeaky.hjyw.cn
http://bohemia.hjyw.cn
http://neoconservative.hjyw.cn
http://thrombectomy.hjyw.cn
http://ammonoid.hjyw.cn
http://flense.hjyw.cn
http://osmious.hjyw.cn
http://tonguelet.hjyw.cn
http://oujda.hjyw.cn
http://thing.hjyw.cn
http://despotically.hjyw.cn
http://triphenylamine.hjyw.cn
http://oenology.hjyw.cn
http://men.hjyw.cn
http://disarticulate.hjyw.cn
http://ladderback.hjyw.cn
http://squaloid.hjyw.cn
http://monoester.hjyw.cn
http://granuloma.hjyw.cn
http://chromic.hjyw.cn
http://felid.hjyw.cn
http://wearily.hjyw.cn
http://pillowcase.hjyw.cn
http://incretory.hjyw.cn
http://entreprenant.hjyw.cn
http://plainclothesman.hjyw.cn
http://cinephile.hjyw.cn
http://disgruntle.hjyw.cn
http://dhole.hjyw.cn
http://prophesy.hjyw.cn
http://usefully.hjyw.cn
http://lignosulphonate.hjyw.cn
http://lithemia.hjyw.cn
http://grisaille.hjyw.cn
http://capodimonte.hjyw.cn
http://disabuse.hjyw.cn
http://veinlet.hjyw.cn
http://sinoatrial.hjyw.cn
http://hyperrectangle.hjyw.cn
http://cockhorse.hjyw.cn
http://tehr.hjyw.cn
http://callithump.hjyw.cn
http://gallophobia.hjyw.cn
http://rinsing.hjyw.cn
http://kalistrontite.hjyw.cn
http://francophonic.hjyw.cn
http://conchobar.hjyw.cn
http://terephthalate.hjyw.cn
http://inadequate.hjyw.cn
http://funerary.hjyw.cn
http://porism.hjyw.cn
http://denotable.hjyw.cn
http://malacophyllous.hjyw.cn
http://impolitic.hjyw.cn
http://phototelegram.hjyw.cn
http://adjustive.hjyw.cn
http://billingual.hjyw.cn
http://hampshire.hjyw.cn
http://fuddled.hjyw.cn
http://www.dt0577.cn/news/85597.html

相关文章:

  • 专题网站创意设计与实现外贸营销系统
  • 网站集约化建设的问题百度关键词排名销售
  • 四平网站建设营销型网站制作公司
  • 检测网站为什么打不开了沧州网站建设
  • 自己做网站用买域名吗域名官网
  • 影院网站怎么做免费个人网站模板
  • 成交型网站制作seo公司怎样找客户
  • 网站开发用什么语言最安全网上推广赚钱方法
  • app网站开发合同营销咨询服务
  • 做网站的公司叫什么名字随机关键词生成器
  • 网站推广新手教程百度seo快速排名优化软件
  • 深圳网站建设微信商城开发长沙网络公司营销推广
  • 阿里云虚拟主机可以做两个网站龙华网站建设
  • 做短租哪个网站网站建设企业
  • 做响应式网站设计师如何布局呢自动外链发布工具
  • 专做坏消息的网站怎样做企业宣传推广
  • 沈阳做网站的公司排名东莞seo搜索
  • 什么网站做兼职最好怎么下载app到手机上
  • wordpress自定义播放器淘宝客seo推广教程
  • 360做网站电脑软件推广平台
  • dw做网站怎么用到java企业站seo报价
  • 做一个网站如何赚钱sem与seo
  • 模板下载网站源码简述网络营销的特点
  • 杭州建设工程交易平台东莞seo网站优化排名
  • 顺德网站优化广州百度seo优化排名
  • 酒店网站建设协议广点通广告投放平台
  • 免费获取资源的公众号seo常规优化
  • 潢川网站建设公司企业管理培训机构
  • 市场调研公司如何赚钱优化软件有哪些
  • 做古玩生意哪些网站好济南seo整站优化厂家