国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器

這篇具有很好參考價值的文章主要介紹了Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

?

一、使用Servlet原生對象獲取參數

1.1?控制器方法

1.2?測試結果

二、自定義參數類型轉換器

2.1?編寫類型轉換器類

2.2?注冊類型轉換器對象?

2.3?測試結果?

三、編碼過濾器

3.1?JSP表單

3.2?控制器方法

3.3?配置過濾器

3.4 測試結果?

往期專欄&文章相關導讀?

1. Maven系列專欄文章

2. Mybatis系列專欄文章

3. Spring系列專欄文章?

4. Spring MVC系列專欄文章


一、使用Servlet原生對象獲取參數

????????SpringMVC也支持使用Servlet原生對象,在方法參數中定義HttpServletRequest 、HttpServletResponse 、 HttpSession 等類型的參數即可直接在方法中使用。

1.1?控制器方法

// 使用Servlet原生對象
    @RequestMapping("c1/param8")
    public void servletParam(HttpSession session,HttpServletRequest request, HttpServletResponse response){
        // 原生對象獲取參數
        System.out.println(request.getParameter("name"));
        System.out.println(response.getCharacterEncoding());
        System.out.println(session.getId());
    }

????????這個就是一個很經典的利用request內置對象獲取參數了。請求之后在控制臺打印參數和編碼方式還有對應的sessionId。

訪問路徑:http://localhost:8080/c1/param8?name=LYL

1.2?測試結果

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

????????OK,可以看得出來是已經成功把參數值和編碼方式和sessionId給查詢出來了

????????一般情況下,在SpringMVC中都有對Servlet原生對象的方法的替代,推薦使SpringMVC的方式代替Servlet原生對象。

二、自定義參數類型轉換器

前端傳來的參數全部為字符串類型,SpringMVC使用自帶的轉換器將字符串參數轉為需要的類型。如:

// 獲取簡單類型參數
@RequestMapping("/c1/param1")
public void simpleParam(String username,int age){
    System.out.println(username+" "+age);
}

但在某些情況下,無法將字符串轉為需要的類型,如:

// 自定義轉換日期格式字符串
@RequestMapping("c1/param9")
public void dataParam(Date birthday){
??? System.out.println(birthday);
}
此時我們測試一下看看是什么結果:

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

控制臺輸出:?

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

報錯原因:

[WARNING]Resolved[org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2025-01-01'; nested exception is java.lang.IllegalArgumentException]
?具體意思就是:[org.springframework.web.method.annotation.MethodArgumentTypeMismatchException:未能將類型為“java.lang.String”的值轉換為所需類型“java.util.Date”;嵌套異常為org.springfframework.core.covert.ConversionFailedException:無法將值“2025-01-01”從類型[java.lang.SString]轉換為類型[java.util.Date];嵌套異常為java.lang.IllegalArgumentException]

2.1?編寫類型轉換器類

????????由于日期數據有很多種格式,SpringMVC沒辦法把所有格式的字符串轉換成日期類型。比如參數格式為 birthday=2025-01-01 時,SpringMVC就無法解析參數。此時需要自定義參數類型轉換器。 首先得定義類型轉換器類,實現Converter接口。寫法如下:??

package com.example.converter;

import org.springframework.core.convert.converter.Converter;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DataConverter implements Converter<String, Date> {

    /**
     * 轉換方法
     * @param s 轉換前的數據
     * @return 轉換后的數據
     */
    @Override
    public Date convert(String s) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
        Date date = null;
        try{
            date = sdf.parse(s);
        } catch (ParseException e) {
            System.out.println("轉換成日期格式出錯了!");
            e.printStackTrace();
        }
        return date;
    }
}

2.2?注冊類型轉換器對象?

<!-- 配置轉換器工廠 -->
    <bean id="dateConverter" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!-- 轉換器集合 -->
        <property name="converters">
            <set>
                <!-- 自定義轉換器 -->
                <bean class="com.example.converter.DataConverter"></bean>
            </set>
        </property>
    </bean>
    <!-- 使用轉換器工廠 -->
    <mvc:annotation-driven conversion-service="dateConverter"></mvc:annotation-driven>

OK,加了上面這些我們再運行測試一遍看看控制能否成功接收?

2.3?測試結果?

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

?可以看到報的是404錯誤,沒有找到這個頁面,而不是400了

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

OK,控制臺也成功打印出來了。?

三、編碼過濾器

在傳遞參數時,tomcat8以上能處理get請求的中文亂碼,但不能處理post請求的中文亂碼

3.1?JSP表單

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>專屬頁面</title>
</head>
<body>
  <form action="/c1/param3" method="post">
    <table>
      <tr>
        <th>id:</th>
        <td><input name="id"/></td>
      </tr>
      <tr>
        <th>姓名:</th>
        <td><input name="name"/></td>
      </tr>
      <tr>
        <th>性別:</th>
        <td><input name="sex"/></td>
      </tr>
      <tr>
        <th>住址:</th>
        <td><input name="address.info"/></td>
      </tr>
      <tr>
        <th>郵編:</th>
        <td><input name="address.postcode"/></td>
      </tr>
      <tr align="center">
        <td><input type="submit"/></td>
      </tr>
    </table>
  </form>
</body>
</html>

這里是一個表單提交的頁面

3.2?控制器方法

控制器方法我就沿用了之前的,如下:?

    @RequestMapping("c1/param3")
    public void objParam2(Student student){
        System.out.println(student);
    }

3.3?配置過濾器

????????SpringMVC提供了處理中文亂碼的過濾器,在web.xml中配置該過濾器即可解決中文亂碼問題:添加如下配置:

<!-- SpringMVC中提供的字符編碼過濾器,放在所有過濾器的最上方 -->
  <filter>
    <filter-name>encFilter</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>encFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

3.4 測試結果?

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

????????提交上述信息,看看控制臺打印有沒有亂碼,如果沒有亂碼,則說明字符編碼過濾器配置成功。?

Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器?

????????OK,說明確實是可以了,并且表單提交的name屬性和Student屬性對應的話,也是可以直接賦值給對應的參數的。

往期專欄&文章相關導讀?

?????大家如果對于本期內容有什么不了解的話也可以去看看往期的內容,下面列出了博主往期精心制作的Maven,Mybatis等專欄系列文章,走過路過不要錯過哎!如果對您有所幫助的話就點點贊,收藏一下啪。其中Spring專欄有些正在更,所以無法查看,但是當博主全部更完之后就可以看啦。

1. Maven系列專欄文章

Maven系列專欄 Maven工程開發(fā)
Maven聚合開發(fā)【實例詳解---5555字】

2. Mybatis系列專欄文章

Mybatis系列專欄 MyBatis入門配置
Mybatis入門案例【超詳細】
MyBatis配置文件 —— 相關標簽詳解
Mybatis模糊查詢——三種定義參數方法和聚合查詢、主鍵回填
Mybatis動態(tài)SQL查詢 --(附實戰(zhàn)案例--8888個字--88質量分)
Mybatis分頁查詢——四種傳參方式
Mybatis一級緩存和二級緩存(帶測試方法)
Mybatis分解式查詢
Mybatis關聯查詢【附實戰(zhàn)案例】
MyBatis注解開發(fā)---實現增刪查改和動態(tài)SQL
MyBatis注解開發(fā)---實現自定義映射關系和關聯查詢

3. Spring系列專欄文章?

Spring系列專欄 Spring IOC 入門簡介【自定義容器實例】
IOC使用Spring實現附實例詳解
Spring IOC之對象的創(chuàng)建方式、策略及銷毀時機和生命周期且獲取方式
Spring DI簡介及依賴注入方式和依賴注入類型
Spring IOC相關注解運用——上篇
Spring IOC相關注解運用——下篇
Spring AOP簡介及相關案例
注解、原生Spring、SchemaBased三種方式實現AOP【附詳細案例】
Spring事務簡介及相關案例
Spring 事務管理方案和事務管理器及事務控制的API
Spring 事務的相關配置、傳播行為、隔離級別及注解配置聲明式事務

4. Spring MVC系列專欄文章

SpringMVC系列專欄 Spring MVC簡介附入門案例
Spring MVC各種參數獲取及獲取方式自定義類型轉換器和編碼過濾器
Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器
Spring MVC處理響應附案例詳解
Spring MVC相關注解運用 —— 上篇

Spring MVC相關注解運用 —— 中篇文章來源地址http://www.zghlxwxcb.cn/news/detail-496426.html

Spring MVC相關注解運用 —— 下篇
Spring MVC多種情況下的文件上傳
Spring MVC異步上傳、跨服務器上傳和文件下載
Spring MVC異常處理【單個控制異常處理器、全局異常處理器、自定義異常處理器】
Spring MVC攔截器和跨域請求
SSM整合案例【C站講解最詳細流程的案例】

到了這里,關于Spring MVC獲取參數和自定義參數類型轉換器及編碼過濾器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • SpringBoot復習:(59)自定義類型轉換器

    一、自定義類型轉換器: 二、將自定義類型轉換器注冊到Spring boot 三、請求測試:

    2024年02月10日
    瀏覽(26)
  • Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協商

    Spring boot之WEB 開發(fā)-靜態(tài)資源訪問--自定義轉換器--處理JSON--內容協商

    在線文檔: https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.developing-web-applications 1. 只要靜態(tài)資源放在類路徑下: /static 、/public 、/resources 、/META-INF/resources可以被直接訪問- 對應文件WebProperties.java 2. 常見靜態(tài)資源:JS、CSS 、圖片(.jpg .png .gif .bmp .svg)、字體

    2024年02月09日
    瀏覽(37)
  • Spring MVC: 請求參數的獲取

    Spring MVC: 請求參數的獲取

    在 Spring MVC 介紹中,談到前端控制器 DispatcherServlet 接收客戶端請求,依據處理器映射 HandlerMapping 配置調用相應的處理器 Controller 。那么,處理器 Controller 具體是如何實現獲取請求參數的呢?

    2024年02月10日
    瀏覽(22)
  • Spring MVC -- 獲取參數(普通對象+JSON對象+URL地址參數+文件+Cookie/Session/Header)

    Spring MVC -- 獲取參數(普通對象+JSON對象+URL地址參數+文件+Cookie/Session/Header)

    目錄 1.獲取參數 1.1獲取單個參數 1.2獲取多個參數 傳參注意事項: 2.獲取對象 ?3.后端參數重命名@RequestParam 4.獲取JSON對象@RequestBody 5.從 URL 地址中獲取參數 @PathVariable 6.上傳文件 @RequestPart 7.獲取Cookie/Session/Header 7.1 獲取 Request 和 Response 對象 7.2 獲取Cookie (1)Servlet 獲取 Cooki

    2024年02月16日
    瀏覽(25)
  • 電源轉換器類型

    1根據轉換的形式分類,可分為: AC-AC(交流-交流)轉換器:如交流電源變壓器、變頻器等。 AC-DC(交流-直流)轉換器:整流器。 DC-DC(直流-直流)轉換器。 DC-AC(直流-交流)轉換器:逆變器。 2 根據轉換的方法分類,可分為: 線性電源:使用工作在線性區(qū)的功率器件調整

    2024年02月08日
    瀏覽(25)
  • spring 自定義類型轉換-ConverterRegistry

    一個應用工程里面,一遍會涉及到很多的模型轉換,如DTO模型轉DO模型,DO模型轉DTO, 或者Request轉DTO模型,總的來說,維護起來還是相對比較復雜。每涉及一個轉換都需要重新寫對應類的get或者set方法,并且這些方法散落在不同的模塊里面,非常不方便管理。 下面介紹 轉換器

    2024年02月11日
    瀏覽(13)
  • EasyExcel自定義字段對象轉換器支持轉換實體和集合實體

    EasyExcel自定義字段對象轉換器支持轉換實體和集合實體

    1. 實現ObjectConverter 2. 使用 3. 測試 3.1 導出excel 手動添加一些數據 導出 寫入 excel 轉換成功 3.2 導入excel 將上面生成的 excel 文件導入 讀取 excel 數據并轉換成功

    2024年02月11日
    瀏覽(27)
  • 如何使用SpringBoot 自定義轉換器

    如何使用SpringBoot 自定義轉換器

    ??前言 本篇博文是關于SpringBoot 自定義轉換器的使用,希望你能夠喜歡?? ??個人主頁:晨犀主頁 ??個人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動力???? ??歡迎大家:這里是CSDN,我總結知識的地方,歡迎來到我的博客,感謝大家的觀

    2024年02月12日
    瀏覽(23)
  • 6. 結構體和自定義類型

    結構體:將相關的數據放置在一起 可以通過點操作符( . )訪問內部元素 可以作為函數的輸入參數或返回類型 一個簡單的代碼示例: 編譯運行結果: 可以引入成員函數,更好地表示函數與數據的相關性 示例代碼:

    2024年01月24日
    瀏覽(20)
  • Postman內置動態(tài)參數和自定義的動態(tài)參數以及斷言方式

    Postman內置動態(tài)參數和自定義的動態(tài)參數以及斷言方式

    解決方案:使用 動態(tài)參數:內置動態(tài)參數/自定義動態(tài)參數, 解決上述問題 ?? {{$timestamp}} ?生成當前時間的時間戳。 ???{{$randomInt}} ?生成0-1000之間的隨機數 ???{{$guid}} ??????????生成速記GUID字符串 ?? 3.1.postman接口中設置自定義動態(tài)參數? 3.2.接口中引用自定義的動態(tài)

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包