В чем разница между специальными символами @RequestParam
и @PathVariable
при их обработке?
+
был принят @RequestParam
как пространство.
В случае @PathVariable
, +
был принят как +
.
java
spring
spring-mvc
user1857181
источник
источник
@PathVariable
можно использовать в любом RequestMethod@PathParam
работает только в том случае, если в шаблоне uri есть заполнитель)@PathParam
это аннотация javax.ws.rs. docs.oracle.com/javaee/7/api/javax/ws/rs/PathParam.html@RequestParam аннотация, используемая для доступа к значениям параметров запроса из запроса. Посмотрите на следующий URL запроса:
В приведенном выше URL-запросе к значениям param1 и param2 можно получить доступ, как показано ниже:
Ниже приведен список параметров, поддерживаемых аннотацией @RequestParam:
@PathVariable
@ PathVariable указывает шаблон, который используется в URI для входящего запроса. Давайте посмотрим на URL запроса ниже:
Приведенный выше URL-запрос может быть записан в вашем Spring MVC, как показано ниже:
Аннотация @ PathVariable имеет только одно значение атрибута для привязки шаблона URI запроса. Разрешается использовать множественную аннотацию @ PathVariable в одном методе. Но убедитесь, что не более одного метода имеют один и тот же шаблон.
Также есть еще одна интересная аннотация: @MatrixVariable
И метод контроллера для этого
Но вы должны включить:
источник
userName
типа param или нет? Я склоняюсь к тому, чтобы сделать его переменным, но это тоже может быть параметром.@PathParam
и@RequestParam
объявить без использования@RequestMapping
@RequestParam используется для параметра запроса (статические значения), например: http: // localhost: 8080 / analysis / pow? Base = 2 & ext = 4
@PathVariable используется для динамических значений, таких как: http: // localhost: 8080 / analysis / sqrt / 8
источник
1)
@RequestParam
используется для извлечения параметров запросаwhile
@PathVariable
используется для извлечения данных прямо из URI:2)
@RequestParam
более полезен в традиционном веб-приложении, где данные в основном передаются в параметрах запроса,@PathVariable
и больше подходит для веб-служб RESTful, где URL-адрес содержит значения.3)
@RequestParam
аннотация может указывать значения по умолчанию, если параметр запроса отсутствует или является пустым с помощьюdefaultValue
атрибута, при условии, что обязательный атрибутfalse
:источник
источник
Обе аннотации ведут себя точно так же.
Только 2 специальных символа '!' и '@' принимаются аннотациями @PathVariable и @RequestParam.
Чтобы проверить и подтвердить поведение, я создал приложение весенней загрузки, которое содержит только 1 контроллер.
Нажав на следующие запросы, я получил тот же ответ:
! @ был получен как ответ в обоих запросах
источник
может случиться так, что тип midia application / x-www-form-urlencoded преобразует пространство в + , а получатель будет декодировать данные путем преобразования + в пробел. проверьте URL для получения дополнительной информации. http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
источник