Spring MVC 請(qǐng)求參數(shù)綁定實(shí)現(xiàn)方式
Spring MVC 是一個(gè)用于構(gòu)建 Web 應(yīng)用程序的框架,它提供了一種方便的方式來(lái)處理 HTTP 請(qǐng)求和響應(yīng)。在 Spring MVC 中,請(qǐng)求參數(shù)綁定是將 HTTP 請(qǐng)求中的參數(shù)映射到控制器方法的參數(shù)上的過(guò)程。Spring MVC 提供了多種方式來(lái)實(shí)現(xiàn)請(qǐng)求參數(shù)綁定。請(qǐng)求參數(shù)綁定:說(shuō)?了SpringMVC如何接收請(qǐng)求參數(shù)http協(xié)議(超?本傳輸協(xié)議)原?servlet接收?個(gè)整型參數(shù):
String ageStr = request.getParameter("age");
Integer age = Integer.parseInt(ageStr);SpringMVC框架對(duì)Servlet的封裝,簡(jiǎn)化了servlet的很多操作SpringMVC在接收整型參數(shù)的時(shí)候,直接在Handler?法中聲明形參即可
@RequestMapping("xxx")
public String handle(Integer age) {
System.out.println(age);
}參數(shù)綁定:取出參數(shù)值綁定到handler?法的形參上
默認(rèn)?持 Servlet API 作為?法參數(shù)
當(dāng)需要使?HttpServletRequest、HttpServletResponse、HttpSession等原?servlet對(duì)象時(shí),直接在handler?法中形參聲明使?即可。
/**
*
* SpringMVC 對(duì)原?servlet api的?持 url:/demo/handle02?id=1
*
* 如果要在SpringMVC中使?servlet原?對(duì)象,?如
HttpServletRequest\HttpServletResponse\HttpSession,直接在Handler?法形參中聲
明使?即可
*
*/
@RequestMapping("/handle02")
public ModelAndView handle02(HttpServletRequest request,HttpServletResponse response,HttpSession session) {
String id = request.getParameter("id");
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}綁定簡(jiǎn)單類型參數(shù)
在 Spring MVC 中,您可以通過(guò)將控制器方法的參數(shù)與 HTTP 請(qǐng)求中的參數(shù)名匹配來(lái)進(jìn)行簡(jiǎn)單參數(shù)的請(qǐng)求參數(shù)綁定。簡(jiǎn)單數(shù)據(jù)類型:?種基本數(shù)據(jù)類型及其包裝類型參數(shù)類型推薦使?包裝數(shù)據(jù)類型,因?yàn)榛A(chǔ)數(shù)據(jù)類型不可以為null。整型:Integer、int字符串:String單精度:Float、float雙精度:Double、double布爾型:Boolean、boolean說(shuō)明:對(duì)于布爾類型的參數(shù),請(qǐng)求的參數(shù)值為true或false?;蛘?或0注意:綁定簡(jiǎn)單數(shù)據(jù)類型參數(shù),只需要直接聲明形參即可(形參參數(shù)名和傳遞的參數(shù)名要保持?致,建議 使?包裝類型,當(dāng)形參參數(shù)名和傳遞參數(shù)名不?致時(shí)可以使?@RequestParam注解進(jìn)??動(dòng)映射)
/*
* SpringMVC 接收簡(jiǎn)單數(shù)據(jù)類型參數(shù) url:/demo/handle03?id=1
*
* 注意:接收簡(jiǎn)單數(shù)據(jù)類型參數(shù),直接在handler?法的形參中聲明即可,框架會(huì)取出參數(shù)值
然后綁定到對(duì)應(yīng)參數(shù)上
* 要求:傳遞的參數(shù)名和聲明的形參名稱保持?致
*/
@RequestMapping("/handle03")
public ModelAndView handle03(@RequestParam("ids") Integer id,Boolean flag) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}綁定Pojo類型參數(shù)
自動(dòng)請(qǐng)求參數(shù)綁定:Spring MVC 還支持自動(dòng)將請(qǐng)求參數(shù)綁定到對(duì)象上。例如,您可以創(chuàng)建一個(gè) POJO(Plain Old Java Object)類,將其屬性與請(qǐng)求參數(shù)名相匹配,Spring MVC 將自動(dòng)將請(qǐng)求參數(shù)綁定到這個(gè)對(duì)象上。
/*
* SpringMVC接收pojo類型參數(shù) url:/demo/handle04?id=1&username=zhangsan
*
* 接收pojo類型參數(shù),直接形參聲明即可,類型就是Pojo的類型,形參名?所謂
* 但是要求傳遞的參數(shù)名必須和Pojo的屬性名保持?致
*/
@RequestMapping("/handle04")
public ModelAndView handle04(User user) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}綁定Pojo包裝對(duì)象參數(shù)
包裝類型 QueryVo
public class QueryVo {
private String mail;
private String phone;
// 嵌套了另外的Pojo對(duì)象
private User user;
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}Handler?法
/*
* SpringMVC接收pojo包裝類型參數(shù) url:/demo/handle05?
user.id=1&user.username=zhangsan
* 不管包裝Pojo與否,它?先是?個(gè)pojo,那么就可以按照上述pojo的要求來(lái)
* 1、綁定時(shí)候直接形參聲明即可
* 2、傳參參數(shù)名和pojo屬性保持?致,如果不能夠定位數(shù)據(jù)項(xiàng),那么通過(guò)屬性名 + "." 的
?式進(jìn)?步鎖定數(shù)據(jù)
*
*/
@RequestMapping("/handle05")
public ModelAndView handle05(QueryVo queryVo) {
Date date = new Date();
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}綁定?期類型參數(shù)(需要配置?定義類型轉(zhuǎn)換器) 前端jsp

后臺(tái)Handler?法
/**
* 綁定?期類型參數(shù)
* 定義?個(gè)SpringMVC的類型轉(zhuǎn)換器 接?,擴(kuò)展實(shí)現(xiàn)接?接?,注冊(cè)你的實(shí)現(xiàn)
* @param birthday
* @return
*/
@RequestMapping("/handle06")
public ModelAndView handle06(Date birthday) {
Date date = new Date();ModelAndView modelAndView = new
ModelAndView();
modelAndView.addObject("date",date);
modelAndView.setViewName("success");
return modelAndView;
}?定義類型轉(zhuǎn)換器
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author 應(yīng)癲
* ?定義類型轉(zhuǎn)換器
* S:source,源類型
* T:target:?標(biāo)類型
*/
public class DateConverter implements Converter<String, Date> {
@Override
public Date convert(String source) {
// 完成字符串向?期的轉(zhuǎn)換
SimpleDateFormat simpleDateFormat = new
SimpleDateFormat("yyyy-MM-dd");
try {
Date parse = simpleDateFormat.parse(source);
return parse;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}注冊(cè)?定義類型轉(zhuǎn)換器
<!--
?動(dòng)注冊(cè)最合適的處理器映射器,處理器適配器(調(diào)?handler?法)
-->
<mvc:annotation-driven conversionservice="conversionServiceBean"/>
<!--注冊(cè)?定義類型轉(zhuǎn)換器-->
<bean id="conversionServiceBean"
class="org.springframework.format.support.FormattingConversionServiceF
actoryBean">
<property name="converters">
<set>
<bean class="com.zjq.converter.DateConverter">
</bean>
</set>
</property>
</bean>路徑變量參數(shù)
除了請(qǐng)求參數(shù)綁定,Spring MVC 還支持路徑變量的綁定。路徑變量是在 URL 中包含的變量,可以通過(guò) @PathVariable 注解來(lái)綁定到控制器方法的參數(shù)上。
@Controller
@RequestMapping("/example")
public class ExampleController {
@RequestMapping("/process/{id}")
public String processRequest(@PathVariable("id") Long id) {
// 使用路徑變量 id 進(jìn)行處理
}
}在上述示例中,@PathVariable 注解用于將路徑變量 “id” 綁定到控制器方法的參數(shù) “id” 上。
到此這篇關(guān)于Spring MVC 請(qǐng)求參數(shù)綁定的文章就介紹到這了,更多相關(guān)Spring MVC 請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springmvc接口接收參數(shù)與請(qǐng)求參數(shù)格式的整理
- SpringMVC解析post請(qǐng)求參數(shù)詳解
- 使用SpringMVC 重寫、擴(kuò)展HttpServletRequest請(qǐng)求參數(shù)
- 詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問(wèn)題
- Spring MVC請(qǐng)求參數(shù)與響應(yīng)結(jié)果全局加密和解密詳解
- 快速解決SpringMVC @RequestBody 用map接收請(qǐng)求參數(shù)的問(wèn)題
- 學(xué)習(xí)SpringMVC——如何獲取請(qǐng)求參數(shù)詳解
- 詳解SpringMVC——接收請(qǐng)求參數(shù)和頁(yè)面?zhèn)鲄?/a>
相關(guān)文章
Spring Security 表單登錄功能的實(shí)現(xiàn)方法
這篇文章主要介紹了Spring Security 表單登錄,本文將構(gòu)建在之前簡(jiǎn)單的 Spring MVC示例 之上,因?yàn)檫@是設(shè)置Web應(yīng)用程序和登錄機(jī)制的必不可少的。需要的朋友可以參考下2019-06-06
springboot配置mybatis和事務(wù)管理方式
這篇文章主要介紹了springboot配置mybatis和事務(wù)管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04
解析Java的Jackson庫(kù)中對(duì)象的序列化與數(shù)據(jù)泛型綁定
這篇文章主要介紹了解析Java的Jackson庫(kù)中對(duì)象的序列化與數(shù)據(jù)泛型綁定,Jackson通常被用來(lái)實(shí)現(xiàn)Java對(duì)象和JSON數(shù)據(jù)的相互轉(zhuǎn)換功能,需要的朋友可以參考下2016-01-01
Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩過(guò)的坑
IDEA旗艦版可以直接創(chuàng)建Spring MVC項(xiàng)目,但創(chuàng)建后的項(xiàng)目并不是直接就可以運(yùn)行,還需要進(jìn)行一些配置。這篇文章主要介紹了Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項(xiàng)目踩坑記 ,需要的朋友可以參考下2020-03-03
eclipse中沒(méi)有SERVER的解決辦法(超詳細(xì))
使用eclipse進(jìn)行tomcat配置時(shí),經(jīng)常會(huì)發(fā)現(xiàn)一個(gè)重要的問(wèn)題就是打開eclipse之后沒(méi)有了server選項(xiàng),所以本給大家詳細(xì)介紹了eclipse中沒(méi)有SERVER的解決辦法,文中有詳細(xì)的圖文講解,需要的朋友可以參考下2023-12-12
Springboot實(shí)現(xiàn)頁(yè)面間跳轉(zhuǎn)功能
這篇文章主要介紹了Springboot實(shí)現(xiàn)頁(yè)面間跳轉(zhuǎn)功能,本文給大家分享兩種方式,方法一和方法二是不沖突的,但是通常情況下如果用方法二addViewControllers,需要把方法一所寫的Controller類給注釋掉,需要的朋友可以參考下2023-10-10
JSP 獲取spring容器中bean的兩種方法總結(jié)
這篇文章主要介紹了JSP 獲取spring容器中bean的方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-05-05

