欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Spring MVC獲取請(qǐng)求數(shù)據(jù)詳解操作

 更新時(shí)間:2021年11月05日 10:09:35   作者:兮動(dòng)人  
Spring MVC 是 Spring 提供的一個(gè)基于 MVC 設(shè)計(jì)模式的輕量級(jí) Web 開發(fā)框架,本質(zhì)上相當(dāng)于 Servlet,Spring MVC 角色劃分清晰,分工明細(xì)。由于 Spring MVC 本身就是 Spring 框架的一部分,可以說和 Spring 框架是無縫集成

1. 獲得請(qǐng)求參數(shù)

  1. 客戶端請(qǐng)求參數(shù)的格式是:name=value&name=value… …
  2. 服務(wù)器端要獲得請(qǐng)求的參數(shù),有時(shí)還需要進(jìn)行數(shù)據(jù)的封裝,SpringMVC可以接收如下類型的參數(shù):
  • 基本類型參數(shù)
  • POJO類型參數(shù)
  • 數(shù)組類型參數(shù)
  • 集合類型參數(shù)

2. 獲得基本類型參數(shù)

  • Controller中的業(yè)務(wù)方法的參數(shù)名稱要與請(qǐng)求參數(shù)的name一致,參數(shù)值會(huì)自動(dòng)映射匹配。

在這里插入圖片描述

  • 訪問:

http://localhost:8080/xdr630_spring_mvc_war_exploded/user/quick11?username=xdr&age=23

  • 控制臺(tái)打印輸出:

在這里插入圖片描述

3. 獲得POJO類型參數(shù)

Controller中的業(yè)務(wù)方法的POJO參數(shù)的屬性名與請(qǐng)求參數(shù)的name一致,參數(shù)值會(huì)自動(dòng)映射匹配。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

4. 獲得數(shù)組類型參數(shù)

Controller中的業(yè)務(wù)方法數(shù)組名稱與請(qǐng)求參數(shù)的name一致,參數(shù)值會(huì)自動(dòng)映射匹配。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

5. 獲得集合類型參數(shù)

  • 獲得集合參數(shù)時(shí),要將集合參數(shù)包裝到一個(gè)POJO中才可以。
  • 把集合包裝到 POJO 對(duì)象當(dāng)中
  • 創(chuàng)建 VO (valueobject),封裝視圖的對(duì)象
public class VO {
    private List<User> userList;

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "VO{" +
                "userList=" + userList +
                '}';
    }
}
  • 創(chuàng)建jsp表單
<form action="${pageContext.request.contextPath}/user/quick14" method="post">
        <%--表明是第幾個(gè)User對(duì)象的username age--%>
        <input type="text" name="userList[0].username"><br>
        <input type="text" name="userList[0].age"><br>
        <input type="text" name="userList[1].username"><br>
        <input type="text" name="userList[1].age"><br>
        <input type="submit" value="提交">
</form>

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • 當(dāng)使用ajax提交時(shí),可以指定contentTypejson形式,那么在方法參數(shù)位置使用@RequestBody可以直接接收集合數(shù)據(jù)而無需使用POJO進(jìn)行包裝。
  • 創(chuàng)建 ajax.jsp
<script src="${pageContext.request.contextPath}/js/jquery-3.3.1.js"></script>
<script>
	var userList = new Array();
	userList.push({username:"zhangsan",age:18});
	userList.push({username:"lisi",age:28});
	
	$.ajax({
	   type:"POST",
	   url:"${pageContext.request.contextPath}/user/quick15",
	   data:JSON.stringify(userList),
	   contentType:"application/json;charset=utf-8"
	});
</script>
  • 加入配置文件
<!--開放對(duì)資源的訪問權(quán)限-->
<mvc:resources mapping="/js/**" location="/js/"/>

  • 把原始的數(shù)據(jù)交給 Tomcat 找到資源
<mvc:default-servlet-handler/>

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • 注意:通過谷歌開發(fā)者工具抓包發(fā)現(xiàn),沒有加載到j(luò)query文件,原因是SpringMVC的前端控制器DispatcherServlet的url-pattern配置的是/,代表對(duì)所有的資源都進(jìn)行過濾操作,可以通過以下兩種方式指定放行靜態(tài)資源:
  • spring-mvc.xml配置文件中指定放行的資源
<mvc:resources mapping="/js/**" location="/js/"/> 
或
<mvc:default-servlet-handler/>

6. 請(qǐng)求數(shù)據(jù)亂碼問題

當(dāng)post請(qǐng)求時(shí),數(shù)據(jù)會(huì)出現(xiàn)亂碼,可以設(shè)置一個(gè)過濾器來進(jìn)行編碼的過濾。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

<!--配置全局過濾的filter-->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

再次運(yùn)行:

在這里插入圖片描述

7. 參數(shù)綁定注解 @requestParam

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • 當(dāng)給的參數(shù)名與請(qǐng)求的參數(shù)名不一致時(shí)就為 null

在這里插入圖片描述

在這里插入圖片描述

  • 這個(gè)時(shí)候就需要使用 @RequestParameter
  • 當(dāng)請(qǐng)求的參數(shù)名稱與Controller的業(yè)務(wù)方法參數(shù)名稱不一致時(shí),就需要通過@RequestParam注解顯示的綁定。
  • 將請(qǐng)求的 name 參數(shù)映射到 username 參數(shù)上

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

注解@RequestParam還有如下參數(shù)可以使用:

  • value:與請(qǐng)求參數(shù)名稱
  • required:此在指定的請(qǐng)求參數(shù)是否必須包括,默認(rèn)是true,提交時(shí)如果沒有此參數(shù)則報(bào)錯(cuò)

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

  • defaultValue:當(dāng)沒有指定請(qǐng)求參數(shù)時(shí),則使用指定的默認(rèn)值賦值

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

8. 獲得Restful風(fēng)格的參數(shù)

Restful是一種軟件架構(gòu)風(fēng)格、設(shè)計(jì)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原則和約束條件。主要用于客戶端和服務(wù)器交互類的軟件,基于這個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡潔,更有層次,更易于實(shí)現(xiàn)緩存機(jī)制等。

Restful風(fēng)格的請(qǐng)求是使用“url+請(qǐng)求方式”表示一次請(qǐng)求目的的,HTTP 協(xié)議里面四個(gè)表示操作方式的動(dòng)詞如下:

  •  GET:用于獲取資源
  • POST:用于新建資源
  • PUT:用于更新資源
  • DELETE:用于刪除資源

例如:

在這里插入圖片描述

上述url地址/user/1中的1就是要獲得的請(qǐng)求參數(shù),在SpringMVC中可以使用占位符進(jìn)行參數(shù)綁定。地址/user/1可以寫成/user/{id},占位符{id}對(duì)應(yīng)的就是1的值。在業(yè)務(wù)方法中我們可以使用@PathVariable注解進(jìn)行占位符的匹配獲取工作。

在這里插入圖片描述

訪問:

在這里插入圖片描述

在這里插入圖片描述

9. 自定義類型轉(zhuǎn)換器

  • SpringMVC 默認(rèn)已經(jīng)提供了一些常用的類型轉(zhuǎn)換器,例如客戶端提交的字符串轉(zhuǎn)換成int型進(jìn)行參數(shù)設(shè)置。
  • 但是不是所有的數(shù)據(jù)類型都提供了轉(zhuǎn)換器,沒有提供的就需要自定義轉(zhuǎn)換器,例如:日期類型的數(shù)據(jù)就需要自定義轉(zhuǎn)換器。
  • 時(shí)間格式不匹配

在這里插入圖片描述

在這里插入圖片描述

  • 自定義類型轉(zhuǎn)換器的開發(fā)步驟:

1.定義轉(zhuǎn)換器類實(shí)現(xiàn)Converter接口

在這里插入圖片描述

public class DateConverter implements Converter<String,Date> {

    @Override
    public Date convert(String dataStr) {
        //將日期的字符串轉(zhuǎn)成日期對(duì)象 返回
        Date date = null;
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM:dd");
        try {
            date = format.parse(dataStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date ;
    }
}

2.在配置文件中聲明轉(zhuǎn)換器

<!--聲明轉(zhuǎn)換器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="com.xdr630.coverter.DateConverter"></bean>
        </list>
    </property>
</bean>

3.在<annotation-driven>中引用轉(zhuǎn)換器

<!--mvc注解驅(qū)動(dòng)-->
<mvc:annotation-driven conversion-service="conversionService"/>

再次訪問:

在這里插入圖片描述

控制臺(tái)查看:

在這里插入圖片描述

10. 獲得Servlet相關(guān)API

SpringMVC支持使用原始ServletAPI對(duì)象作為控制器方法的參數(shù)進(jìn)行注入,常用的對(duì)象如下:

  • HttpServletRequest
  • HttpServletResponse
  • HttpSession

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

11. 獲得請(qǐng)求頭

11.1 @RequestHeader

使用@RequestHeader可以獲得請(qǐng)求頭信息,相當(dāng)于web階段學(xué)習(xí)的request.getHeader(name)
@RequestHeader注解的屬性如下:

  • value:請(qǐng)求頭的名稱
  • required:是否必須攜帶此請(qǐng)求頭

在這里插入圖片描述

在這里插入圖片描述

控制臺(tái):

在這里插入圖片描述

11.2 @CookieValue

使用@CookieValue可以獲得指定Cookie的值

@CookieValue注解的屬性如下:

  • value:指定cookie的名稱
  • required:是否必須攜帶此cookie

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

控制臺(tái):

在這里插入圖片描述

12. 文件上傳

12.1 文件上傳客戶端三要素

  • 表單項(xiàng)type=“file”
  • 表單的提交方式是post
  • 表單的enctype屬性是多部分表單形式,及enctype=“multipart/form-data”

在這里插入圖片描述

在這里插入圖片描述

12.2 文件上傳原理

  • 當(dāng)form表單修改為多部分表單時(shí),request.getParameter() 將失效。
  • enctype=“application/x-www-form-urlencoded”時(shí),form表單的正文內(nèi)容格式是:key=value&key=value&key=value
  • 當(dāng)form表單的enctype取值為Mutilpart/form-data時(shí),請(qǐng)求正文內(nèi)容就變成多部分形式:

在這里插入圖片描述

12.3 單文件上傳步驟

1.導(dǎo)入fileupload和io坐標(biāo)

<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.3.1</version>
</dependency>

<dependency>
	<groupId>commons-io</groupId>
	<artifactId>commons-io</artifactId>
	<version>2.4</version>
</dependency>

2.配置文件上傳解析器

<!--配置文件上傳解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--上傳文件總大小-->
    <property name="maxUploadSize" value="5242800"/>
    <!--上傳單個(gè)文件的大小-->
    <property name="maxUploadSizePerFile" value="5242800"/>
    <!--上傳文件的編碼類型-->
    <property name="defaultEncoding" value="UTF-8"/>
</bean>

3.編寫文件上傳代碼

在這里插入圖片描述

測(cè)試:

在這里插入圖片描述

控制臺(tái):

在這里插入圖片描述

把文件進(jìn)行保存

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

控制臺(tái):

在這里插入圖片描述

查看保存的路徑

在這里插入圖片描述

12.4 多文件上傳實(shí)現(xiàn)

多文件上傳,只需要將頁面修改為多個(gè)文件上傳項(xiàng),將方法參數(shù)MultipartFile類型修改為MultipartFile[]即可

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

13. 知識(shí)要點(diǎn)

MVC實(shí)現(xiàn)數(shù)據(jù)請(qǐng)求方式

  • 基本類型參數(shù)
  • POJO類型參數(shù)
  • 數(shù)組類型參數(shù)
  • 集合類型參數(shù)

MVC獲取數(shù)據(jù)細(xì)節(jié)

  • 中文亂碼問題
  • @RequestParam 和 @PathVariable
  • 自定義類型轉(zhuǎn)換器
  • 獲得Servlet相關(guān)API
  • @RequestHeader 和 @CookieValue
  • 文件上傳

到此這篇關(guān)于Java Spring MVC獲取請(qǐng)求數(shù)據(jù)詳解操作的文章就介紹到這了,更多相關(guān)Java Spring MVC 獲取請(qǐng)求數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析java 歸并排序算法

    淺析java 歸并排序算法

    這篇文章主要簡單介紹了java 歸并排序算法的工作原理及代碼,需要的朋友可以參考下
    2015-02-02
  • java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用

    java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用

    本文主要介紹了java中json和對(duì)象之間相互轉(zhuǎn)換的運(yùn)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • mybatis項(xiàng)目兼容mybatis-plus問題

    mybatis項(xiàng)目兼容mybatis-plus問題

    這篇文章主要介紹了mybatis項(xiàng)目兼容mybatis-plus問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • IntelliJ IDEA 的使用界面圖文教程

    IntelliJ IDEA 的使用界面圖文教程

    這篇文章主要介紹了IntelliJ IDEA 的使用界面圖文教程,需要的朋友可以參考下
    2018-10-10
  • 解決Springboot啟動(dòng)報(bào)錯(cuò):類文件具有錯(cuò)誤的版本61.0,應(yīng)為?52.0

    解決Springboot啟動(dòng)報(bào)錯(cuò):類文件具有錯(cuò)誤的版本61.0,應(yīng)為?52.0

    這篇文章主要給大家介紹了關(guān)于解決Springboot啟動(dòng)報(bào)錯(cuò):類文件具有錯(cuò)誤的版本?61.0,應(yīng)為?52.0的相關(guān)資料,這是查閱了網(wǎng)上的很多資料才解決的,分享給大家,需要的朋友可以參考下
    2023-01-01
  • Spring和Mybatis整合的原理詳解

    Spring和Mybatis整合的原理詳解

    這篇文章主要介紹了Spring和Mybatis整合的原理詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • mybatis Mapper的xml文件中resultType值的使用說明

    mybatis Mapper的xml文件中resultType值的使用說明

    這篇文章主要介紹了mybatis Mapper的xml文件中resultType值的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 最新評(píng)論