最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中springMVC獲取請(qǐng)求參數(shù)的方法

 更新時(shí)間:2023年05月04日 11:31:25   作者:算不出來(lái)沒(méi)辦法  
這篇文章主要介紹了java中springMVC獲取請(qǐng)求參數(shù)的方法,springmvc是spring框架的一個(gè)模塊,springmvc和spring無(wú)需通過(guò)中間整合層進(jìn)行整合,需要的朋友可以參考下

原生方式獲取請(qǐng)求參數(shù)

html代碼

<a th:href="@{/testServlet(username='admin',password=123456)}">測(cè)試原生Servlet獲取請(qǐng)求參數(shù)</a><br>

接收參數(shù)代碼

@RequestMapping(value = "/testServlet")
//形參位置的request表示當(dāng)前請(qǐng)求
public String testServlet(HttpServletRequest request) {
    System.out.println(request.getParameter("username"));
    System.out.println(request.getParameter("password"));
    return "test";
}

這種方式當(dāng)然可以接收到傳遞過(guò)來(lái)的參數(shù),但是方式略顯繁瑣。

控制器方法形參獲取請(qǐng)求參數(shù)

html代碼

<a th:href="@{/testParam(username='admin',password=123456)}">測(cè)試使用控制器的形參獲取請(qǐng)求參數(shù)</a><br>

接收代碼,直接將傳遞過(guò)來(lái)的參數(shù)名寫成函數(shù)形參來(lái)獲取對(duì)應(yīng)的值。

@RequestMapping(value = "/testParam")
public String testParam(String username, String password) {
    System.out.println("username = " + username + ", passwprd = " + password);
    return "test";
}

輸出內(nèi)容

 當(dāng)然通過(guò)控制器方法形參獲取請(qǐng)求參數(shù)還有幾個(gè)我們需要注意的地方。

@RequestParam注解

使用這一個(gè)注解,可以在請(qǐng)求參數(shù)和形參之間建立映射關(guān)系,大致意思就是獲取到傳遞過(guò)來(lái)的這一參數(shù)然后賦值給形參。@RequestParam注解有三個(gè)屬性:

value屬性:設(shè)置指定的請(qǐng)求參數(shù)名。

required屬性:設(shè)置是否必須傳輸此參數(shù),默認(rèn)值為true,如果設(shè)置為true但是沒(méi)有接收到這一個(gè)參數(shù),那么將會(huì)報(bào)錯(cuò)。

defaultValue屬性:設(shè)置參數(shù)的默認(rèn)值,不管required屬性值為true或false,當(dāng)value所指定的請(qǐng)求參數(shù)沒(méi)有傳輸或傳輸?shù)闹禐榭兆址畷r(shí),則使用默認(rèn)值為形參賦值。

例如我們修改傳遞過(guò)來(lái)的參數(shù),下面只傳遞了參數(shù)名為username007的用戶名,并且沒(méi)有傳遞密碼。

<a th:href="@{/testParam(username007='admin')}">測(cè)試使用控制器的形參獲取請(qǐng)求參數(shù)</a><br>

接收參數(shù)代碼 

@RequestMapping(value = "/testParam")
    public String testParam(@RequestParam(value = "username007", required = false, defaultValue = "默認(rèn)username") String username,
                            @RequestParam(value = "password007", required = false, defaultValue = "默認(rèn)password") String password) {
        System.out.println("username = " + username + ", passwprd = " + password);
        return "test";
    }

 輸出結(jié)果

 從輸出結(jié)果可以看出,由于我們傳遞了username007,@RequestParam注解講其內(nèi)容傳遞給了形參username,但是我們并沒(méi)有傳遞password007,所以使用的是默認(rèn)值。

@RequestHeader注解

使用這一個(gè)注解,可以將請(qǐng)求頭信息和控制器方法的形參創(chuàng)建映射關(guān)系,@RequestHeader注解也有三個(gè)屬性:value屬性,required屬性,defaultValue屬性,用法同@RequestParam。

首先查看請(qǐng)求標(biāo)頭的信息如下

html代碼

<a th:href="@{/testParam(username='admin',password='123456')}">測(cè)試使用控制器的形參獲取請(qǐng)求參數(shù)</a><br>

 接收參數(shù)代碼

@RequestMapping(value = "/testParam")
public String testParam(
        @RequestHeader(value = "Host", required = false, defaultValue = "默認(rèn)Host") String host,
        @RequestHeader(value = "Cookie", required = false, defaultValue = "默認(rèn)Cookie") String cookie,
        String username, String password) {
    System.out.println("username = " + username + ", passwprd = " + password);
    System.out.println("Host = " + host + ", Cookie = " + cookie);
    return "test";
}

輸出結(jié)果 

 從輸出結(jié)果我們可以看出,程序獲取到了請(qǐng)求頭的Host和Cookie信息,并且傳遞給了形參。相比于原生的ServletAPI獲取請(qǐng)求頭的信息,這種方式更加高效簡(jiǎn)便。

@CookieValue注解

使用這一個(gè)注解,可以將cookie數(shù)據(jù)和控制器方法的形參創(chuàng)建映射關(guān)系, @CookieValue注解一共有三個(gè)屬性:value屬性、required屬性、defaultValue屬性,用法同@RequestParam。

通過(guò)查看請(qǐng)求頭的信息,我們可以看到Cookie數(shù)據(jù)如下

html代碼

<a th:href="@{/testParam(username='admin',password='123456')}">測(cè)試使用控制器的形參獲取請(qǐng)求參數(shù)</a><br>

接收參數(shù)代碼

@RequestMapping(value = "/testParam")
    public String testParam(
            @CookieValue("JSESSIONID") String JSESSIONID,
            String username, String password) {
        System.out.println("username = " + username + ", passwprd = " + password);
        System.out.println("JSESSIONID = " + JSESSIONID);
        return "test";
    }

輸出結(jié)果

相當(dāng)于獲取到了Cookie中的JSESSIONID屬性下的信息。

通過(guò)POJO獲取請(qǐng)求參數(shù)

想一想,要是我們提交的是一個(gè)表單,并且表單的提交內(nèi)容十分的多,那我們豈不是要寫很多個(gè)形參,而且也不方便維護(hù),所以當(dāng)參數(shù)很多時(shí),我們可以用一個(gè)實(shí)體類來(lái)接收數(shù)據(jù)并進(jìn)行操作。當(dāng)瀏覽器傳輸?shù)恼?qǐng)求參數(shù)的參數(shù)名和實(shí)體類中的屬性名一致時(shí),請(qǐng)求參數(shù)就會(huì)為此屬性賦值。其底層原理是通過(guò)反射set方法進(jìn)行屬性注入。

如果通過(guò)POJO獲取請(qǐng)求參數(shù)出現(xiàn)了亂碼問(wèn)題,可以先在web.xml文件當(dāng)中配置過(guò)濾器設(shè)置編碼。

 web.xml文件配置過(guò)濾器代碼

<!--配置過(guò)濾器-->
<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--設(shè)置獲取時(shí)的編碼-->
    <init-param>
        <!--在springMVC源碼當(dāng)中有一個(gè)encoding屬性表示編碼方式,可以通過(guò)初始化這一參數(shù)來(lái)設(shè)置編碼方式-->
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <!--獲取響應(yīng)時(shí)的編碼-->
    <init-param>
        <param-name>forceResponseEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<!--設(shè)置過(guò)濾器作用的范圍-->
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

html代碼

<form th:action="@{/testBean}" method="get">
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="password" name="password"><br>
    性別:<input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>
    年齡:<input type="text" name="age"><br>
    地址:<input type="text" name="location"><br>
    電話:<input type="text" name="phoneNumber"><br>
    郵箱:<input type="text" name="email"><br>
    <input type="submit" value="使用實(shí)體類接收請(qǐng)求參數(shù)">
</form>

實(shí)體類代碼,就相當(dāng)于根據(jù)表單設(shè)置了對(duì)應(yīng)的屬性,然后生成了屬性的set和get方法,創(chuàng)建了對(duì)應(yīng)的構(gòu)造方法和空構(gòu)造方法。

package com.mvc.bean;
public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String location;
    private String phoneNumber;
    private String sex;
    private String email;
    public User() {
    }
    public User(Integer id, String username, String password, Integer age, String location, String phoneNumber, String sex, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.location = location;
        this.phoneNumber = phoneNumber;
        this.sex = sex;
        this.email = email;
    }
    //屬性的get和set方法這里寫出,太占篇幅了。
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", location='" + location + '\'' +
                ", phoneNumber='" + phoneNumber + '\'' +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

接收代碼

@RequestMapping(value = "/testBean")
public String testBean(User user) {
    System.out.println(user);
    return "test";
}

測(cè)試

輸出結(jié)果

 這種方式可以很方便的接收數(shù)據(jù)并且進(jìn)行相對(duì)于的數(shù)據(jù)庫(kù)操作。

到此這篇關(guān)于java中springMVC獲取請(qǐng)求參數(shù)的方法的文章就介紹到這了,更多相關(guān)springMVC獲取請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • maven 刪除下載失敗的包的方法

    maven 刪除下載失敗的包的方法

    本文介紹了當(dāng)Maven包報(bào)紅時(shí),使用刪除相關(guān)文件的方法來(lái)解決該問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • java設(shè)計(jì)模式筆記之裝飾模式

    java設(shè)計(jì)模式筆記之裝飾模式

    這篇文章主要為大家詳細(xì)介紹了java設(shè)計(jì)模式筆記之裝飾模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • mybatis如何實(shí)現(xiàn)繼承映射

    mybatis如何實(shí)現(xiàn)繼承映射

    這篇文章主要介紹了mybatis如何實(shí)現(xiàn)繼承映射的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • RabbitMQ實(shí)現(xiàn)消費(fèi)端限流的步驟

    RabbitMQ實(shí)現(xiàn)消費(fèi)端限流的步驟

    消費(fèi)者端限流的主要目的是控制消費(fèi)者每次從 RabbitMQ 中獲取的消息數(shù)量,從而實(shí)現(xiàn)消息處理的流量控制,這篇文章主要介紹了RabbitMQ如何實(shí)現(xiàn)消費(fèi)端限流,需要的朋友可以參考下
    2024-03-03
  • Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案

    今天小編就為大家分享一篇關(guān)于Eclipse中maven異常Updating Maven Project的統(tǒng)一解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    Spring Boot 2.0快速構(gòu)建服務(wù)組件全步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot 2.0快速構(gòu)建服務(wù)組件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot 2.0具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • java實(shí)現(xiàn)在線聊天系統(tǒng)

    java實(shí)現(xiàn)在線聊天系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)在線聊天系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • AntDesign封裝全局異常處理全局?jǐn)r截器

    AntDesign封裝全局異常處理全局?jǐn)r截器

    這篇文章主要為大家介紹了AntDesign封裝全局異常處理全局?jǐn)r截器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 深入解析Java的Struts框架中的控制器DispatchAction

    深入解析Java的Struts框架中的控制器DispatchAction

    這篇文章主要介紹了深入解析Java的Struts框架中的控制器DispatchAction,Struts是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Sentinel中實(shí)現(xiàn)限流的兩種方法

    Sentinel中實(shí)現(xiàn)限流的兩種方法

    本文給大家介紹了Sentinel中實(shí)現(xiàn)限流的兩種方法,限流是一種通過(guò)控制系統(tǒng)對(duì)外提供的資源、服務(wù)或接口的訪問(wèn)數(shù)量或速率,以保護(hù)系統(tǒng)免受過(guò)載的一種策略,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

绿春县| 湖南省| 普宁市| 巴塘县| 定陶县| 洪湖市| 会理县| 聂荣县| 厦门市| 新野县| 奉节县| 渭南市| 时尚| 柳林县| 汤原县| 泰安市| 蕉岭县| 四平市| 唐海县| 镇康县| 县级市| 永嘉县| 旬阳县| 桃源县| 广饶县| 页游| 延津县| 唐海县| 龙泉市| 边坝县| 烟台市| 九江市| 西青区| 瑞昌市| 上虞市| 清远市| 大渡口区| 乌拉特中旗| 呼图壁县| 若尔盖县| 红原县|