日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

java rest 图_SpringMVC视图及REST风格

發(fā)布時(shí)間:2025/3/15 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java rest 图_SpringMVC视图及REST风格 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是視圖解析器?

springMVC用于處理視圖最重要的兩個(gè)接口是ViewResolver和View。

ViewResolver的主要作用是把一個(gè)邏輯上的視圖名稱解析成一個(gè)真的的視圖,而SpringMVC中用于把View對(duì)象呈現(xiàn)給客戶端的是View對(duì)象本身,而ViewResolver只是把邏輯視圖名稱解析為對(duì)象的View對(duì)象。

View接口的主要作用是用來(lái)處理視圖,返給給客戶端。

視圖解析器的執(zhí)行流程:

請(qǐng)求方法執(zhí)行完成后,最終返回一個(gè)ModelAndView對(duì)象,對(duì)于那些返回String,View,ModelMap等類型SpingMVC最終會(huì)在內(nèi)部給他們裝配成一個(gè)ModelAndView對(duì)象,它包含了邏輯名和模型對(duì)象的視圖。StringMVC借助視圖解析器得到最終的視圖對(duì)象,最終的視圖可以是JSP,也可能是其他的文件形式的視圖。對(duì)于最終采取那一種方式渲染處理器并不關(guān)心,處理器重點(diǎn)焦距在生產(chǎn)模型數(shù)據(jù)的工作上,從來(lái)實(shí)現(xiàn)了MVC充分的解耦。

視圖:

視圖的作用是渲染模型數(shù)據(jù),將模型里面的數(shù)據(jù)以某種形式呈現(xiàn)給用戶。為了實(shí)現(xiàn)視圖模型和具體實(shí)現(xiàn)技術(shù)的解耦,Sping定義了一個(gè)View接口。視圖對(duì)象由視圖解析器負(fù)責(zé)實(shí)例化,由于視圖是無(wú)狀態(tài)的,所以它們不會(huì)有線程安全問題。

常用的視圖實(shí)現(xiàn)類:

InternalResourceView:將JSP資源封裝成一個(gè)視圖,是springmvc默認(rèn)使用的視圖解析器。

JstlView:在JSP項(xiàng)目中引入jstl包springmvc會(huì)自動(dòng)使用該解析器

MapingJackJsonView:將模型通過(guò)Jackson開源框架的ObjectMapper以Json方式輸出。

AbstractExcelView:Excel文檔視圖的抽象類,該視圖基于POI構(gòu)造Excel文檔

AbstractPdfVIew:PDF文檔視圖的抽象類,該視圖基于iText構(gòu)建Pdf文檔

BeanNameViewResolver:將邏輯視圖名解析為一個(gè)Bean,Bean的id等于邏輯視圖名。

視圖解析器的作用比較單一,將邏輯視圖解析為一個(gè)具體的視圖對(duì)象,所有的視圖解析器必須實(shí)現(xiàn)ViewResolver接口。

JSP是最常用的視圖技術(shù),可以使用InternalResourceView作為視圖解析器

項(xiàng)目中只要引入了JSTL標(biāo)簽則springmvc會(huì)自動(dòng)把視圖有InternalResourceView轉(zhuǎn)換成JstlView,JstlView是它的子類。

每一個(gè)視圖解析器都實(shí)現(xiàn)了Ordered接口并開發(fā)出一個(gè)order屬性,可以通過(guò)它設(shè)置解析器的優(yōu)先級(jí),order越小優(yōu)先級(jí)越高。Spring MVC會(huì)按視圖解析器順序的優(yōu)先級(jí)對(duì)邏輯視圖名進(jìn)行解析,直到解析成功并返回視圖對(duì)象,否則會(huì)拋出ServletException異常

自定義視圖:

@Component

public class MyView implements View {

@Override

public String getContentType() {

return "text/html";

}

@Override

public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {

response.getWriter().println("

Spring MVC Custom view

");

}

}

我們需要將這個(gè)自定義的視圖實(shí)現(xiàn)View接口然后重寫接口中的兩個(gè)方法。然后我們把這個(gè)類聲明成Bean交給spring管理。在這里我們配置一個(gè)beanName解析器。

然后寫一個(gè)請(qǐng)求,這個(gè)請(qǐng)求返回Bean的名字,默認(rèn)是首字母小寫以駝峰式展現(xiàn)。

@RequestMapping("myView")

public String myView(){

System.out.println("myView load ...");

return "myView";

}

這樣就可以完成我們的自定以視圖。

關(guān)與重定向:

如果返回字符串中帶有”redirect:“或”forward:“,SpringMvc會(huì)將其做特殊的處理。

如果我們需要直接訪問視圖可以這樣配置

REST章節(jié)

REST(Representational State Transfer):即(資源)表現(xiàn)層狀態(tài)傳遞。

資源(Resources):網(wǎng)絡(luò)上的一個(gè)實(shí)體,或者說(shuō)網(wǎng)絡(luò)上的一段信息。它可以是一段文本,一段歌曲,一張圖片等等,可以用一個(gè)URL指向它,每個(gè)資源都有一個(gè)特定的,獨(dú)一無(wú)二的URL,要訪問這個(gè)資源,直接訪問這個(gè)URI即可。

表現(xiàn)層(Representation):將資源呈現(xiàn)出來(lái)的形式。

狀態(tài)轉(zhuǎn)化(State Transfer):每發(fā)出一個(gè)請(qǐng)求,就代表客戶端和服務(wù)器一次交互。HTTP協(xié)議是一個(gè)無(wú)狀態(tài)的協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端??蛻舳讼胍僮鞣?wù)器,必須通過(guò)某些手段,讓服務(wù)器發(fā)生狀態(tài)轉(zhuǎn)化,而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。

在我們的SpringMVC之中支持HTTP四種請(qǐng)求狀態(tài),REST規(guī)定的HTTP協(xié)議中四種表示操作方式的動(dòng)詞

GET請(qǐng)求:獲取資源

POST請(qǐng)求:新建資源

PUT:更新資源

DELETE:刪除資源

我們需要在WEB.xml中配置實(shí)現(xiàn)PUT,DELETE請(qǐng)求方式,大家都知道在我們傳統(tǒng)的HTML中只有GET,POST兩種請(qǐng)求方式。

HiddenHttpMethodFilter

org.springframework.web.filter.HiddenHttpMethodFilter

HiddenHttpMethodFilter

/*

GET請(qǐng)求

GET請(qǐng)求:

test RestGet請(qǐng)求

@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)

public String testRestGet(@PathVariable Integer id){

System.out.println("GET請(qǐng)求,獲取id為:" + id + "的對(duì)象!");

return SUCCESS;

}

Post請(qǐng)求

POST請(qǐng)求:

@RequestMapping(value="/testRest",method=RequestMethod.POST)

public String testRestPost(){

System.out.println("POST請(qǐng)求,添加新的對(duì)象!");

return SUCCESS;

}

PUT和DELETE請(qǐng)求想要使用必須添加上面的過(guò)濾器,并且在Post請(qǐng)求中加上隱藏域name=”_method”,value=”PUT/DELETE”。

PUT,請(qǐng)求其實(shí)是由POST請(qǐng)求轉(zhuǎn)換而來(lái)的。

PUT請(qǐng)求:

@RequestMapping(value="/testRest",method=RequestMethod.PUT)

public String testRestPut(){

System.out.println("PUT請(qǐng)求,更新操作!");

return SUCCESS;

}

DELETE請(qǐng)求

DELETE請(qǐng)求:

@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)

public String testRestDelete(@PathVariable Integer id){

System.out.println("DELETE請(qǐng)求,刪除操作!" + id);

return SUCCESS;

}

重復(fù)一次第一章的內(nèi)容在我們springmvc攔截所有請(qǐng)求會(huì)導(dǎo)致css,js,圖片等不能引入我們可以這樣解決:

https://www.cnblogs.com/SimpleWu/category/1354870.html

總結(jié)

以上是生活随笔為你收集整理的java rest 图_SpringMVC视图及REST风格的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。