1. 程式人生 > >為什麼springmvc請求引數中的點後面的引數沒了

為什麼springmvc請求引數中的點後面的引數沒了

Springmvc框架下使用restful API時後面連結最後的點丟失情況的處理

大概原因分析如下:

  1. 在Spring MVC初始化的時候會把@RequestMapping解析生成請求url與對應頁面控制器的關聯關係 – Spring MVC @RequestMapping
  2. 當用戶傳送一個請求時來到前端控制器,前端控制器根據請求url來決定使用哪個頁面控制器(也就是@Controller類中的@RequestMapping方法)進行處理並把請求委託給HanderAdpter。– Spring MVC DispatcherServlet
  3. 在呼叫這個頁面控制器的前後會涉及到攔截器的呼叫,也就是HandlerIntercepter。
    在呼叫完成頁面控制器之後會返回ModelAndView物件。 最後通過頁面渲染器(ViewResolver)把對應的頁面模板以及資料進行渲染返回給請求。
  4. 其實在呼叫hander方法前後有2個動作就是對於HandlerMethod裡面的請求引數解析(HandlerMethodArgumentResolver)以及返回引數解析(HandlerMethodReturnValueHandler)。現在主要的是討論請求引數解析。

但是Spring MVC中,在路徑引數中如果帶”.”的話“.”後面的值將會被忽略。例如訪問http://www.wlgdo.com/hido/index.do。Spring MVC就會把“.”後面的do忽略。

網上有很多解決方案,但是都不是最合理的方案,最合理的方案是使用SpEL即可以處理該情況:如下程式碼

/**
     * 更新使用者電錶資訊
     * 
     * @author
Ligang.Wang[[email protected]] * @date 2018年1月20日下午9:07:08 * @param room * @param user * @return */
@RequestMapping(value = "owner/elect/{room}/{electfee:.+}", method = RequestMethod.GET) public Object updateOwnerEletic(@PathVariable String room, @PathVariable String electfee) { log.info("更新使用者電費:{},{}"
, room, electfee); Owner owner = ownerrService.update(new Owner(room, electfee, null)); if (owner != null) { return new Resp(RespCode.SUCCESS, owner); } return new Resp("-1", "更新失敗"); }

至此,你的所有的需求不受其他影響得解決了。

相關推薦

為什麼springmvc請求引數中的點後面引數

Springmvc框架下使用restful API時後面連結最後的點丟失情況的處理 大概原因分析如下: 在Spring MVC初始化的時候會把@RequestMapping解析生成請求url與對應

VolleyPost請求,陣列形式的引數有的手機提交不

VolleyPost請求,陣列形式的引數有的手機提交不了,試了好多次,才發現可能陣列傳的有問題,先貼錯誤程式碼: HashMap<String, Object> params = new HashMap<>(); params.put("

SpringMVC請求引數繫結(用法)

目錄 1.把請求資料封裝到JavaBean類中 (1)自定義一個JavaBean類 package com.heima.domain; import java.io.Serializ

springmvc請求引數獲取的幾種方法

1、直接把表單的引數寫在Controller相應的方法的形參中,適用於get方式提交,不適用於post方式提交。 /** * 1.直接把表單的引數寫在Controller相應的方法的形參中 * @param username

springmvc 通過異常增強返回給客戶端統一格式 springmvc請求引數異常處理

本文轉載於:http://www.cnblogs.com/nosqlcoco/p/5562107.html  在springmvc開發中,我們經常遇到這樣的問題;邏輯正常執行時返回客戶端指定格式的資料,比如json,但是遇NullPointerException空指標

SpringMVC——請求傳參和支援的Servlet原生引數

SpringMVC 會按照請求引數名和POJO屬性名進行自動匹配, 自動為該物件填充屬性值,同時還支援級聯屬性, 例如這裡面的User是一個POJO, 裡面包含的屬性包括String name;  int age;Address address; Address裡面包含的屬性比如有

springmvc請求處理器的目標引數賦值的過程

↓在invokeHandlerMethod()方法中呼叫resolveHandlerArguments()方法↓ Object[] args = resolveHandlerArguments(handlerMethodToInvoke, handler,

SpringMVC接收JSON請求引數時指定引數對映到Bean中的某個成員屬性的方法

在使用SpringMVC的時候如果前臺傳過來的請求引數與Bean成員變數都採用駝峰式規範(使用@RequestBody接收的JSON請求也一樣),則SpringMVC會自動將請求引數對映到Bean成員變數。 但如果前臺傳過來或者呼叫服務api的json使用下劃線的變數命名方

SpringMVC請求引數接收總結

前提 在日常使用SpringMVC進行開發的時候,有可能遇到前端各種型別的請求引數,這裡做一次相對全面的總結。SpringMVC中處理控制器引數的介面是HandlerMethodArgumentResolver,此介面有眾多子類,分別處理不同(註解型別)的引數

SpringMVC請求處理之對方法引數的處理

前言 講完了DispatchServlet(也可以說是SpringMVC框架)的初始化之後,我們再接著看DispatchServlet處理請求的原理,也可以說是SpringMVC處理請求的原理。今天就先來看看SpringMVC對方法引數的處理。 我們

springmvc請求接收引數的幾種方法

package com.sondon.mayi.controller; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletReq

springboot重寫SpringMVC請求引數裝載

詳細原理解析參考恆宇少年:https://segmentfault.com/a/1190000011406515 本文只做將請求引數名轉下劃線的實現,資料裝載的實現使用反射,讓程式碼更為簡練。 1.

SpringMVC學習(一)引數繫結,自定義轉換器,處理請求亂碼

一、註解對映器和介面卡 1,元件掃描器 使用元件掃描器省去在spring容器配置每個controller類的繁瑣。 <!--開啟註解掃描 --> <context:component-scan base-package="com.

SpringMVC 請求引數繫結

什麼是請求引數繫結 請求引數格式   預設是key/value格式,比如:http:xxxx?id=1&type=2 請求引數值的資料型別   都是字串型別的各種值 請求引數值要繫結的目標型別   Controller類中的方法引數,比如簡單型別、POJO型別、集合型別等。 SpringMVC內建的引

SpringMVC請求引數接收總結(一)

前提 在日常使用SpringMVC進行開發的時候,有可能遇到前端各種型別的請求引數,這裡做一次相對全面的總結。SpringMVC中處理控制器引數的介面是HandlerMethodArgumentResolver,此介面有眾多子類,分別處理不同(註解型別)的引數,下面只列舉幾個子類: RequestParam

原!tomcat啟動超時(打印幾行日誌,後面。也不報錯,處於啟動狀態,直到超時)

str tro 啟動項 dao 配置 spa 配置文件 size 結果 項目框架:spring+struts2+mybatis 今天優化代碼,改了一堆mybatis dao和xml文件,啟動項目時,就出現如標題描述的狀況:打印了幾行日誌,後面就不打印了,也不報錯,處於啟動狀

Android小知識-剖析Retrofit中的網路請求流程以及相關引數

本平臺的文章更新會有延遲,大家可以關注微信公眾號-顧林海,包括年底前會更新kotlin由淺入深系列教程,目前計劃在微信公眾號進行首發,如果大家想獲取最新教程,請關注微信公眾號,謝謝! 在使用Retrofit時,需要建立Retrofit的例項,定義一個網路請求介面併為介面中的方法添加註解,接著通過動

jQuery非同步請求ajax()之complete引數詳解

請求完成後回撥函式 (請求success 和 error之後均呼叫)。這個回撥函式得到2個引數:XMLHTTPRequest) 物件和一個描述請求狀態的字串("success", "notmodified", "nocontent","error", "timeout", "abort", 或者 "

三十九、python學習之Django框架(二):請求、URL路徑引數、查詢字串、請求體(表單,非表單)、請求

一、請求 1.flask中,利用HTTP協議想伺服器傳參的幾種途徑 1.1 提取URL的特定部分,可以在伺服器端的路由中用正則表示式擷取: 如:/weather/2018 //前端傳送請求: $.ajax({ url:'http://www.baidu.com/

C# 定義 7 種變數類別:靜態變數、例項變數、陣列元素、值引數、引用引數、輸出引數和區域性變數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!