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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

javascript

SpringMVC‘s Ediary更新中

發(fā)布時(shí)間:2023/12/20 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC‘s Ediary更新中 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • HelloWorld
  • @RequestMapping注解
    • @RequestMapping注解的位置
    • @RequestMapping注解的value屬性
    • @RequestMapping的method屬性
    • @RequestMapping的params屬性
    • @RequestMapping的headers屬性
    • mvc支持ant風(fēng)格路徑
    • 路徑中占位符
    • 通過(guò)控制器方法的形參獲取請(qǐng)求參數(shù)
    • @RequestHeader處理請(qǐng)求頭信息和控制器方法形參的映射關(guān)系
    • @CookieValue處理cookie數(shù)據(jù)和控制器方法形參的映射關(guān)系
    • 通過(guò)Model共享數(shù)據(jù)
    • 通過(guò)Map共享數(shù)據(jù)
    • 通過(guò)ModelMap共享數(shù)據(jù)
  • MVC視圖
    • ThymeleafView
    • 轉(zhuǎn)發(fā)視圖
    • 重定向視圖
    • 視圖控制器
    • 開(kāi)放靜態(tài)資源訪問(wèn)
  • RESTFul
  • RESTFul案例
    • 刪除功能
    • 添加功能
    • 實(shí)現(xiàn)修改、回顯功能
    • 回顧
  • HttpMessageConverter
    • @RequestBody
    • RequestEntity
    • 通過(guò)HttpServletResponse響應(yīng)瀏覽器數(shù)據(jù)
    • @ResponseBody
    • SpringMVC處理json
    • springMVC處理ajax
  • 文件上傳和下載
    • 文件下載
    • 文件上傳
  • 攔截器
    • 三抽象方法
    • 攔截器配置
    • 多攔截器的執(zhí)行順序
  • 異常處理器
    • 基于配置的異常處理
    • 基于注解的異常處理


HelloWorld


<dependencies> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.1</version> </dependency> <!-- 日志 --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <!-- ServletAPI --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- Spring5和Thymeleaf整合包 --> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> <version>3.0.12.RELEASE</version> </dependency> </dependencies>

創(chuàng)建webapp目錄
在里面添加xml配置文件
file->project structure
項(xiàng)目路徑和描述都能找到
xml的路徑記得改成src下的main下的webapp下

自動(dòng)創(chuàng)建了

配置web.xml


創(chuàng)建springMVC配置文件就不會(huì)報(bào)錯(cuò)了


創(chuàng)建控制器

表示已被ioc容器管理了

配置mvc的配置文件

<!-- 配置Thymeleaf視圖解析器 --><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><!-- 視圖解析器的優(yōu)先級(jí)--><property name="characterEncoding" value="UTF-8"/><!-- 模板--><property name="templateEngine"><!-- 下面內(nèi)部bean是給上面的屬性的賦值--><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><!-- 解析視圖策略--><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 視圖前綴 --><property name="prefix" value="/WEB-INF/templates/"/><!-- 視圖后綴 --><!-- 視圖名稱(chēng)加上前綴后綴能跳轉(zhuǎn)指定頁(yè)面--><property name="suffix" value=".html"/><!-- 模板模型--><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8"/></bean></property></bean></property></bean>

創(chuàng)建首頁(yè)

配置tomcat

運(yùn)行

和方法名沒(méi)關(guān)系只和請(qǐng)求路徑和requestmapping有關(guān)

訪問(wèn)指定頁(yè)面




部署運(yùn)行


總結(jié):

地址欄有變成web-inf下的target.html呢?所以是用轉(zhuǎn)發(fā)的方式

瀏覽器發(fā)送請(qǐng)求,若請(qǐng)求地址符合前端控制器的url-pattern,該請(qǐng)求就會(huì)被前端控制器
DispatcherServlet處理。前端控制器會(huì)讀取SpringMVC的核心配置文件,通過(guò)掃描組件找到控制器,
將請(qǐng)求地址和控制器中@RequestMapping注解的value屬性值進(jìn)行匹配,若匹配成功,該注解所標(biāo)識(shí)的
控制器方法就是處理請(qǐng)求的方法。處理請(qǐng)求的方法需要返回一個(gè)字符串類(lèi)型的視圖名稱(chēng),該視圖名稱(chēng)會(huì)
被視圖解析器解析,加上前綴和后綴組成視圖的路徑,通過(guò)Thymeleaf對(duì)視圖進(jìn)行渲染,最終轉(zhuǎn)發(fā)到視
圖所對(duì)應(yīng)頁(yè)面


@RequestMapping注解

創(chuàng)建新module,配置pom.xml
創(chuàng)建webapp,如果沒(méi)有藍(lán)點(diǎn)的得配一下


@RequestMapping注解的位置





配置tomcat運(yùn)行

注解標(biāo)識(shí)的位置







@RequestMapping注解的value屬性



運(yùn)行

@RequestMapping的method屬性

Get請(qǐng)求和Post請(qǐng)求
Get:每次提交請(qǐng)求參數(shù)會(huì)拼接在請(qǐng)求地址部分,用?拼接,名=值&。。。
就是表單的name=value
Post請(qǐng)求參數(shù)放請(qǐng)求體中(安全)(數(shù)據(jù)無(wú)限),格式也是name=value&…,Get無(wú)請(qǐng)求體(不安全)(數(shù)據(jù)有限)。
文件上傳不能GET

如果RequestMapping的method屬性不設(shè)置,點(diǎn)擊鏈接和提交發(fā)現(xiàn)請(qǐng)求方式是啥都能匹配


運(yùn)行發(fā)現(xiàn)POST方式不好使了

改一下,都好使了

GET查詢、POST新增、PUT修改、DELETE刪除(相同請(qǐng)求地址前提表示不同請(qǐng)求功能)
測(cè)試form能不能發(fā)put和delete請(qǐng)求

請(qǐng)求和請(qǐng)求映射的方式匹配不了就報(bào)405

@RequestMapping的params屬性




@RequestMapping的headers屬性

mvc支持ant風(fēng)格路徑





模糊匹配

路徑中占位符


獲取請(qǐng)求參數(shù)


通過(guò)控制器方法的形參獲取請(qǐng)求參數(shù)



獲取到了





多請(qǐng)求參數(shù)中出現(xiàn)多個(gè)同名的請(qǐng)求參數(shù),可以再控制器方法的形參位置設(shè)置字符串類(lèi)型或字符串?dāng)?shù)組接收請(qǐng)求參數(shù)。若使用字符串類(lèi)型形參最終結(jié)果是每個(gè)值使用逗號(hào)拼接

注解處理請(qǐng)求參數(shù)和控制器方法的形參映射關(guān)系



沒(méi)傳可能400

設(shè)置為可以不傳輸,和不傳、傳空字符串時(shí)的默認(rèn)值

@RequestHeader處理請(qǐng)求頭信息和控制器方法形參的映射關(guān)系


運(yùn)行

required為true表示請(qǐng)求頭信息必須存在,defaultValue是沒(méi)有信息的默認(rèn)值

@CookieValue處理cookie數(shù)據(jù)和控制器方法形參的映射關(guān)系


第一次getSession時(shí)cookie是存在響應(yīng)報(bào)文中的,因?yàn)闄z查請(qǐng)求報(bào)文發(fā)現(xiàn)沒(méi)有cookie沒(méi)有就是第一次,然后創(chuàng)建httpsession對(duì)象,然后將session放到服務(wù)器維護(hù)的map集合中,創(chuàng)建一個(gè)cookie,它的鍵是固定的JSESSIONID,值是隨機(jī)序列,和uuid很像。再把cookie響應(yīng)到瀏覽器。第二次以后是存在于請(qǐng)求報(bào)文中。


也有required和defaultValue屬性。

通過(guò)實(shí)體類(lèi)型的形參獲取請(qǐng)求參數(shù)


創(chuàng)建User


請(qǐng)求參數(shù)和實(shí)體類(lèi)屬性名一致就行


亂碼問(wèn)題
在Tomcat里面servlet.xml設(shè)置,GET請(qǐng)求不會(huì)亂碼




域?qū)ο笾泄蚕頂?shù)據(jù)
原生servletAPI




通過(guò)Model共享數(shù)據(jù)


通過(guò)Map共享數(shù)據(jù)


通過(guò)ModelMap共享數(shù)據(jù)



通過(guò)servletAPI向session域中


通過(guò)servletAPI向application域?qū)ο蠊蚕頂?shù)據(jù)


MVC視圖

ThymeleafView

轉(zhuǎn)發(fā)視圖


重定向視圖


視圖控制器


404了
mvc配置文件中用了view-controller之后控制器中所有請(qǐng)求映射全部失效

請(qǐng)求映射重新實(shí)現(xiàn)效果

開(kāi)放靜態(tài)資源訪問(wèn)

同樣需要配置注解驅(qū)動(dòng)

創(chuàng)建項(xiàng)目



配置tomcat


RESTFul

RESTFul模擬操作用戶資源








HiddenHttpMethodFilter處理PUT和DELETE請(qǐng)求



注冊(cè)過(guò)濾器

設(shè)置編碼前提條件是在此之前你不能獲取任何的請(qǐng)求參數(shù),獲取之后編碼就沒(méi)有效果
先設(shè)置處理編碼的過(guò)濾器再配置處理請(qǐng)求方式的過(guò)濾器
換一下過(guò)濾器順序

RESTFul案例


依賴(lài)配置、web.xml最后創(chuàng)建springMVC配置文件






RESTFul案例:

刪除功能

處理超鏈接路徑
超鏈接發(fā)送不了DELETE請(qǐng)求,但是可以去控制一個(gè)表單的提交,表單里method=post,還要有請(qǐng)求參數(shù)_method


解析成id了
還有一種方式

表示請(qǐng)求地址的地方加上單引號(hào)解析成路徑再拼接。
只能發(fā)送GET請(qǐng)求
要想發(fā)送DELETE得借助過(guò)濾器HiddenHttpFilter
過(guò)濾器要求請(qǐng)求方式必須是POST,請(qǐng)求參數(shù)是_method請(qǐng)求參數(shù)

web-inf下的內(nèi)容必須通過(guò)轉(zhuǎn)發(fā)訪問(wèn)




action沒(méi)寫(xiě)的話會(huì)提交到當(dāng)前頁(yè)面


打包里面沒(méi)有static


springMVC不處理靜態(tài)資源的,defaultServlet才是

首先靜態(tài)資源在訪問(wèn)的時(shí)候會(huì)被springMVC處理,也就是前端控制器處理,找不到請(qǐng)求映射,就交給默認(rèn)servlet處理,如果找到了就訪問(wèn),否則404;
如果是默認(rèn)servlet找不到就不會(huì)在控制臺(tái)顯示No mapping

添加功能

因?yàn)椴恍枰幚砥渌麡I(yè)務(wù)邏輯和處理數(shù)據(jù)
所以直接



運(yùn)行

實(shí)現(xiàn)修改、回顯功能



復(fù)制add成update




拿著th:field的值和value進(jìn)行比較,一致就自動(dòng)添加checked=checked,單選框的回顯



先回顯,回顯完確定請(qǐng)求方式,請(qǐng)求方式是PUT所以要特殊處理。

回顧

列表頁(yè)面請(qǐng)求方式是GET,查詢所有信息。
刪除用的是Vue.js,用超鏈接控制表單的提交,給超鏈接綁定點(diǎn)擊事件,通過(guò)vue處理點(diǎn)擊事件,form表單才是最終提交方式,不是超鏈接。

DispatchServlet和web容器Tomcat中默認(rèn)servlet是重復(fù)的,都是處理所有請(qǐng)求,沖突了就近原則。處理請(qǐng)求:是每次把請(qǐng)求地址去控制器中找相對(duì)應(yīng)的請(qǐng)求映射,控制器中沒(méi)有訪問(wèn)靜態(tài)資源的請(qǐng)求映射,

就是dispatchservlet處理不了就交給default,

如果沒(méi)配置注解驅(qū)動(dòng)則所有請(qǐng)求都被default處理。

HttpMessageConverter

@RequestBody

新建module


有請(qǐng)求體的請(qǐng)求必須是POST請(qǐng)求






不管GET還是POST傳輸數(shù)據(jù)的位置不一樣,格式都一樣n=v&n=v

RequestEntity

表示完整請(qǐng)求報(bào)文信息


運(yùn)行

來(lái)源頁(yè)面

哪個(gè)頁(yè)面發(fā)的請(qǐng)求。

通過(guò)HttpServletResponse響應(yīng)瀏覽器數(shù)據(jù)

轉(zhuǎn)發(fā)重定向能響應(yīng)瀏覽器整個(gè)頁(yè)面
Response.getWriter響應(yīng)瀏覽器數(shù)據(jù)
mvc中用



@ResponseBody



運(yùn)行


運(yùn)行

加了注解就變響應(yīng)體了。

SpringMVC處理json




引入json依賴(lài),數(shù)據(jù)交互用的

<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.1</version> </dependency>


User轉(zhuǎn)成json對(duì)象還是數(shù)組?
是對(duì)象,最外層是大括號(hào)是對(duì)象,方括號(hào)是數(shù)組。
其他java對(duì)象轉(zhuǎn)json格式字符串(瀏覽器只能字符串)其他步驟咱之前做過(guò)了
json
數(shù)據(jù)交換多
xml
配置文件多

springMVC處理ajax








沒(méi)跳轉(zhuǎn),ajax就是不發(fā)生跳轉(zhuǎn)的情況下與頁(yè)面進(jìn)行交互。

文件上傳和下載

文件下載

ResponseEntity實(shí)現(xiàn)下載功能




測(cè)試文件上傳下載




能改的也就下載的文件和文件名

文件上傳

文件上傳解析器





解決文件重名問(wèn)題

運(yùn)行

攔截器

創(chuàng)建項(xiàng)目

三抽象方法

攔截器配置

mvc配置文件注冊(cè)



放行



運(yùn)行

多攔截器的執(zhí)行順序

攔截器各個(gè)方法執(zhí)行順序



pre是按配置攔截器順序,post和after是反序

異常處理器

基于配置的異常處理







運(yùn)行

基于注解的異常處理



創(chuàng)建WebInit
新建module

用來(lái)代替web.xml

過(guò)濾器

添加過(guò)濾器








總結(jié)

以上是生活随笔為你收集整理的SpringMVC‘s Ediary更新中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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