中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

哪些專門做批發(fā)的網(wǎng)站公關(guān)公司是干嘛的

哪些專門做批發(fā)的網(wǎng)站,公關(guān)公司是干嘛的,怎么用vs2010做網(wǎng)站,杭州城市建設(shè)網(wǎng)站引言:歡迎各位點擊收看本篇博客,在歷經(jīng)很多的艱辛,我也是成功由小白淺淺進入了入門行列,也是收貨到很多的知識,每次看黑馬的JavaWeb課程視頻,才使一個小菜雞見識到了Java前后端是如何進行交互訪問的&#x…

引言:歡迎各位點擊收看本篇博客,在歷經(jīng)很多的艱辛,我也是成功由小白淺淺進入了入門行列,也是收貨到很多的知識,每次看黑馬的JavaWeb課程視頻,才使一個小菜雞見識到了Java前后端是如何進行交互訪問的,話不多說,進入正題。


目錄

一.三層框架:

二.前后端交互過程:

?三.如何進行接口測試:

?四.三層架構(gòu)的設(shè)計模式:

五.正式入門三層框架:

1.首先要寫controller層:

2.service層的寫法:

3.dao層的寫法:


?

一.三層框架:

我們在進行程序開發(fā)時,應(yīng)該遵守單一職責原則,意思就是盡可能讓每個接口、類、方法的職責更單一,如果我們將整個后端代碼放在一個包一個類中,不僅僅是代碼的可閱讀性差,而且代碼冗雜,耦合度很高。

1. controller:控制層,負責接受前端發(fā)送來的請求,對請求進行處理,并相應(yīng)數(shù)據(jù)。

2. service:業(yè)務(wù)邏輯層,處理具體實現(xiàn)的業(yè)務(wù)邏輯。

3. dao:數(shù)據(jù)訪問層(持久層),負責數(shù)據(jù)訪問操作,包括數(shù)據(jù)的增刪改查。

二.前后端交互過程:

首先通過瀏覽器發(fā)起請求,經(jīng)過DispatcherServlet(稱為核心控制器或者前端控制器)將請求信息封裝到HttpServletRequest這個對象內(nèi),然后再將這個請求轉(zhuǎn)給后面的每個Controller程序,由Controller程序?qū)ζ溥M行處理(Controller程序通過調(diào)用Service程序,然后再Service程序中調(diào)用Mapper程序,最后Mapper程序處理完返回給Service然后再返回給Controller),隨后Controller程序?qū)⑻幚硗甑捻憫?yīng)信息返回給DispatcherServlet的HttpServletResponse對象中,然后DispatcherServlet再給瀏覽器響應(yīng)數(shù)據(jù)。這也就是BS架構(gòu),瀏覽器/服務(wù)器架構(gòu)模式。

?三.如何進行接口測試:

我們在寫完后端程序肯定需要進行測試來判斷代碼的準確性,但是如果我們沒有前端頁面進行測試,我們?nèi)绾芜M行接口測試呢?這個時候就需要使用Postman或者Apifox來進行接口測試。

?四.三層架構(gòu)的設(shè)計模式:

根據(jù)第一與第二點,我們初步理解了三層框架的進行順序,那么三層框架該是什么樣的創(chuàng)建形式呢?

根據(jù)上圖,我們可以看到這個是基于Springboot來開發(fā)的,在java.com.itheima包下創(chuàng)建了四個包以及運行類,而這四個包分別裝有其分別對應(yīng)的類與接口。?

我們都知道接口是Java程序?qū)︻惗x其規(guī)則,所以一般我們在開發(fā)的時候會現(xiàn)在接口內(nèi)寫入想要實現(xiàn)的方法名,然后再實現(xiàn)類中寫出實現(xiàn)方法。?

五.正式入門三層框架:

在學習三層框架,我們都知道三層框架有controller,service,dao三層,所以咱們在寫接口的過程要按照其實現(xiàn)順序依次寫入。

我們先在pom.xml導(dǎo)入依賴以及在application.properties中寫入MySQL的驅(qū)動以及配置文件的相關(guān)信息,,然后在tlias數(shù)據(jù)庫下創(chuàng)建一個Dept部門類和一個Emp員工類。

pom.xml文件導(dǎo)入依賴:1.Springboot 2.MySQL 3.Lombok 4.pagehelper(分頁插件)

application.properties配置文件寫法:

spring.application.name=tliasspring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/tliasspring.datasource.username=rootspring.datasource.password=lxs15241690479mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImplmybatis.configuration.map-underscore-to-camel-case=true

1.首先要寫controller層:

我們在寫controller層之前要知道SpringBoot對注解的使用:

1. @ResponseBody:放在開頭代表每個方法的返回值都會作為響應(yīng)數(shù)據(jù),如果是對象或者集合會先轉(zhuǎn)為json格式然后再來響應(yīng)。

2. @Controller:控制器組件

3. @RestController:主要由ResponseBody+Controller兩個注解組成,也就會有這兩個注解的作用。

4. @RequestMapping("url"):一個用來處理請求地址映射的注解,可用于映射一個請求或一個方法,可以用在類或方法上。

5. @***Mapping:這***是代表其有很多的樣式,也就是要填入請求方式,如:Get,Post,Delete等。跟@RequestMapping差不多,但是使用這個注解就要跟隨該注解前的請求方式才能夠請求。

6. @RequestParam:

?用于將指定的請求參數(shù)賦值給方法中的形參。

有三個屬性:
(1)value:請求參數(shù)名(必須配置)

(2)required:是否必需,默認為 true,即 請求中必須包含該參數(shù),如果沒有包含,將會拋出異常(可選配置)

(3)defaultValue:設(shè)置默認值,如果設(shè)置了該值,required 將自動設(shè)為 false,無論你是否配置了required,配置了什么值,都是 false(可選配置)

7.@PathVariable:

? ? @PathVariable是Rest風格衍生出的占位符,只支持一個屬性value,類型是為String,代表綁定的屬性名稱。默認不傳遞時,綁定為同名的形參。 用來便捷地提取URL中的動態(tài)參數(shù)。應(yīng)用時,在@RequestMapping請求路徑中,將需要傳遞的參數(shù)用花括號{}括起來,然后,通過@PathVariable("參數(shù)名稱")獲取URL中對應(yīng)的參數(shù)值。如果@PathVariable標明參數(shù)名稱,則參數(shù)名稱必須和URL中參數(shù)名稱一致。

8. @Autowired:自動注入,上一篇Mybatis講過,這里不細說。有需要了解請?zhí)D(zhuǎn):

Mybatis不明白?就這一篇帶你輕松入門_mapper 新建一張表在哪里配置-CSDN博客

下面將@RequestBody放在前面的目的是為了簡化寫法,因為下面的@***Mapping()內(nèi)都需要加上某url所以我們可以將/depts提前來簡化寫法,所以下面那個@GetMapping后面不是沒有接口地址而是因為簡化寫法省略。

@Slf4j
@RequestMapping("/depts")
@RestController
public class DeptController {@Autowiredprivate DeptService deptService;@GetMappingpublic Result list(){log.info("查詢?nèi)坎块T數(shù)據(jù)");List<Dept> deptList = deptService.list();return Result.success(deptList);}@DeleteMapping("/{id}")  //動態(tài)接收數(shù)據(jù)public Result delete(@PathVariable Integer id){log.info("根據(jù)id刪除部門:{}" + id);deptService.delete(id);return Result.success();}@PostMappingpublic Result add(@RequestBody Dept dept){//json格式使用實體類接受log.info("新增部門:{}" , dept);deptService.add(dept);return Result.success();}}

有時我們?yōu)榱私邮艽罅康臄?shù)據(jù)也會定義一個實體類然后使用@RequestBody注解進行接收。

然后我們在這些Controller程序的方法看見其內(nèi)部緊跟隨調(diào)用其對應(yīng)的Service方法來操作所接收的數(shù)據(jù),隨后return返回一個Result類success方法。下面的是Result類->

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {private Integer code;//響應(yīng)碼,1 代表成功; 0 代表失敗private String msg;  //響應(yīng)信息 描述字符串private Object data; //返回的數(shù)據(jù)//增刪改 成功響應(yīng)public static Result success(){return new Result(1,"success",null);}//查詢 成功響應(yīng)public static Result success(Object data){return new Result(1,"success",data);}//失敗響應(yīng)public static Result error(String msg){return new Result(0,msg,null);}
}

上面的三個注解不懂的可以看我上篇文章,里面詳細寫出了Mybatis的相關(guān)內(nèi)容。

?既然我們會調(diào)用service進行操作,所以接下來我們就進行service的操作。

2.service層的寫法:

@Service:Spring Framework 中的一種注解,它標識了這個類是一個業(yè)務(wù)邏輯層的服務(wù) Bean。這意味著當 Spring 應(yīng)用啟動時,該 Bean 會被自動創(chuàng)建并加入到 Spring 應(yīng)用上下文中。簡而言之,@Service 注解是一種用于標記服務(wù)層 Bean 的注解,是在 Spring Boot 應(yīng)用中實現(xiàn)業(yè)務(wù)邏輯復(fù)用的重要方法之一。

業(yè)務(wù)邏輯層,處理具體實現(xiàn)的業(yè)務(wù)邏輯(處理數(shù)據(jù)),我們需要再其內(nèi)部加上很多的操作方法所以先寫接口后寫類。

接口內(nèi)寫入規(guī)則:

public interface DeptService {List<Dept> list();void delete(Integer id);void add(Dept dept);
}

然后創(chuàng)建其實體類:

@Service
public class DeptServiceImpl implements DeptService {@Autowiredprivate DeptMapper deptMapper;@Overridepublic List<Dept> list() {return deptMapper.list();}@Overridepublic void delete(Integer id) {deptMapper.deleteById(id);}@Overridepublic void add(Dept dept) {dept.setCreateTime(LocalDateTime.now());dept.setUpdateTime(LocalDateTime.now());deptMapper.insert(dept);}
}

我們發(fā)現(xiàn)這層的方法體內(nèi)代碼非常的少,是不是可以直接與Mapper合并一層?

nonono,絕對不行的,這樣會破壞原本三層架構(gòu)的完整與獨立性,而且三層架構(gòu)低耦合,并且其注解的獨立使用也無法讓你變成兩層架構(gòu),其實這個只是當前的代碼不用寫很多代碼,如果咱們以后寫大程序就可以看出service層的重要,每一層都是不可缺少的。

3.dao層的寫法:

對于dao層,主要通過注解或者xml來操作數(shù)據(jù),這里需要用到Mybatis的基礎(chǔ),詳情請看下面鏈接,有我碼一萬四千多字的博客:Mybatis不明白?就這一篇帶你輕松入門_mapper 新建一張表在哪里配置-CSDN博客

@Mapper
public interface DeptMapper {@Select("select * from dept")List<Dept> list();@Delete("delete from dept where id = #{id}")void deleteById(Integer id);@Insert("insert into dept(name, create_time, update_time) value (#{name} , #{createTime} , #{updateTime})")void insert(Dept dept);
}

隨后我們點擊執(zhí)行類運行程序,然后使用Postman或者Apifox進行測試接口,同時也要注意請求方式的使用以及路徑的正確書寫,我們一般寫成localhost:8080/depts/......,剩下的就由你來完成了。


最后,我們可以看出三層框架很簡單,但是內(nèi)部用到了很多知識點,這就需要咱們多學多練多觀察,別忘了點個關(guān)注,多多支持,記得三連哈,有問題歡迎在評論區(qū)里留言。

http://www.risenshineclean.com/news/53510.html

相關(guān)文章:

  • 微網(wǎng)站矩陣怎么做企業(yè)推廣軟文范文
  • 網(wǎng)站建設(shè)方案書doc模板百度搜索推廣產(chǎn)品
  • 企業(yè)網(wǎng)站優(yōu)化平臺長沙百度
  • 網(wǎng)站建設(shè)和網(wǎng)頁設(shè)計是不是一樣搭建一個app平臺需要多少錢
  • figma軟件可以做網(wǎng)站嗎完整的網(wǎng)頁設(shè)計代碼
  • 建程網(wǎng)招工信息優(yōu)化seo可以從以下幾個方面進行
  • 青島仿站定制模板建站武漢seo公司
  • 黃埔做網(wǎng)站的公baiduseoguide
  • 企業(yè)站網(wǎng)站建設(shè)優(yōu)化設(shè)計答案六年級上冊語文
  • 網(wǎng)站開發(fā)流程管理crm系統(tǒng)網(wǎng)站
  • 北京手機網(wǎng)站設(shè)計電話公司網(wǎng)站建設(shè)開發(fā)
  • wordpress適合外貿(mào)站seo網(wǎng)絡(luò)培訓班
  • 網(wǎng)站qq聯(lián)系怎么做視頻廣告接單平臺
  • 鄭州網(wǎng)站建設(shè)饣漢獅網(wǎng)絡(luò)千鋒教育北京校區(qū)
  • 官方網(wǎng)站下載打印機驅(qū)動程序手機百度安裝下載
  • 做網(wǎng)站完整視頻重慶seo博客
  • 直播做愛網(wǎng)站國外怎么做信息流廣告代理商
  • 企業(yè)網(wǎng)站建設(shè)的目的和意義seo排名診斷
  • 企業(yè)網(wǎng)站網(wǎng)站建設(shè)電話關(guān)鍵詞優(yōu)化公司如何選擇
  • 2018年的網(wǎng)站制作百度認證怎么認證
  • 兩學一做專題教育網(wǎng)站東莞優(yōu)化seo
  • 幫他人做視頻網(wǎng)站違法嗎電子商務(wù)網(wǎng)站建設(shè)教程
  • 邢臺一天seo西安優(yōu)化排名推廣
  • 聊城網(wǎng)站建設(shè)lcbywlb2b外鏈
  • 公司網(wǎng)站可以自己做永久免費的建站系統(tǒng)有哪些
  • 動態(tài)網(wǎng)站開發(fā)代碼sem代運營公司
  • 成都網(wǎng)站建設(shè)哪家公司好網(wǎng)絡(luò)營銷策劃方案論文
  • 網(wǎng)站開發(fā)公司賺錢嗎電腦清理軟件十大排名
  • 海寧高端網(wǎng)站設(shè)計曼聯(lián)官方發(fā)文
  • 文化傳媒公司網(wǎng)站模板電商營銷推廣方法