Spring MVC 請求參數(shù)綁定實現(xiàn)方式
Spring MVC 是一個用于構建 Web 應用程序的框架,它提供了一種方便的方式來處理 HTTP 請求和響應。在 Spring MVC 中,請求參數(shù)綁定是將 HTTP 請求中的參數(shù)映射到控制器方法的參數(shù)上的過程。Spring MVC 提供了多種方式來實現(xiàn)請求參數(shù)綁定。請求參數(shù)綁定:說?了SpringMVC如何接收請求參數(shù)http協(xié)議(超?本傳輸協(xié)議)原?servlet接收?個整型參數(shù):
String ageStr = request.getParameter("age"); Integer age = Integer.parseInt(ageStr);
SpringMVC框架對Servlet的封裝,簡化了servlet的很多操作SpringMVC在接收整型參數(shù)的時候,直接在Handler?法中聲明形參即可
@RequestMapping("xxx") public String handle(Integer age) { System.out.println(age); }
參數(shù)綁定:取出參數(shù)值綁定到handler?法的形參上
默認?持 Servlet API 作為?法參數(shù)
當需要使?HttpServletRequest、HttpServletResponse、HttpSession等原?servlet對象時,直接在handler?法中形參聲明使?即可。
/** * * SpringMVC 對原?servlet api的?持 url:/demo/handle02?id=1 * * 如果要在SpringMVC中使?servlet原?對象,?如 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; }
綁定簡單類型參數(shù)
在 Spring MVC 中,您可以通過將控制器方法的參數(shù)與 HTTP 請求中的參數(shù)名匹配來進行簡單參數(shù)的請求參數(shù)綁定。簡單數(shù)據(jù)類型:?種基本數(shù)據(jù)類型及其包裝類型參數(shù)類型推薦使?包裝數(shù)據(jù)類型,因為基礎數(shù)據(jù)類型不可以為null。整型:Integer、int字符串:String單精度:Float、float雙精度:Double、double布爾型:Boolean、boolean說明:對于布爾類型的參數(shù),請求的參數(shù)值為true或false。或者1或0注意:綁定簡單數(shù)據(jù)類型參數(shù),只需要直接聲明形參即可(形參參數(shù)名和傳遞的參數(shù)名要保持?致,建議 使?包裝類型,當形參參數(shù)名和傳遞參數(shù)名不?致時可以使?@RequestParam注解進??動映射)
/* * SpringMVC 接收簡單數(shù)據(jù)類型參數(shù) url:/demo/handle03?id=1 * * 注意:接收簡單數(shù)據(jù)類型參數(shù),直接在handler?法的形參中聲明即可,框架會取出參數(shù)值 然后綁定到對應參數(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ù)
自動請求參數(shù)綁定:Spring MVC 還支持自動將請求參數(shù)綁定到對象上。例如,您可以創(chuàng)建一個 POJO(Plain Old Java Object)類,將其屬性與請求參數(shù)名相匹配,Spring MVC 將自動將請求參數(shù)綁定到這個對象上。
/* * 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包裝對象參數(shù)
包裝類型 QueryVo
public class QueryVo { private String mail; private String phone; // 嵌套了另外的Pojo對象 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與否,它?先是?個pojo,那么就可以按照上述pojo的要求來 * 1、綁定時候直接形參聲明即可 * 2、傳參參數(shù)名和pojo屬性保持?致,如果不能夠定位數(shù)據(jù)項,那么通過屬性名 + "." 的 ?式進?步鎖定數(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ù)(需要配置?定義類型轉換器) 前端jsp
后臺Handler?法
/** * 綁定?期類型參數(shù) * 定義?個SpringMVC的類型轉換器 接?,擴展實現(xiàn)接?接?,注冊你的實現(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; }
?定義類型轉換器
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @author 應癲 * ?定義類型轉換器 * S:source,源類型 * T:target:?標類型 */ public class DateConverter implements Converter<String, Date> { @Override public Date convert(String source) { // 完成字符串向?期的轉換 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date parse = simpleDateFormat.parse(source); return parse; } catch (ParseException e) { e.printStackTrace(); } return null; } }
注冊?定義類型轉換器
<!-- ?動注冊最合適的處理器映射器,處理器適配器(調?handler?法) --> <mvc:annotation-driven conversionservice="conversionServiceBean"/> <!--注冊?定義類型轉換器--> <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ù)
除了請求參數(shù)綁定,Spring MVC 還支持路徑變量的綁定。路徑變量是在 URL 中包含的變量,可以通過 @PathVariable
注解來綁定到控制器方法的參數(shù)上。
@Controller @RequestMapping("/example") public class ExampleController { @RequestMapping("/process/{id}") public String processRequest(@PathVariable("id") Long id) { // 使用路徑變量 id 進行處理 } }
在上述示例中,@PathVariable 注解用于將路徑變量 “id” 綁定到控制器方法的參數(shù) “id” 上。
到此這篇關于Spring MVC 請求參數(shù)綁定的文章就介紹到這了,更多相關Spring MVC 請求參數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Spring Security 表單登錄功能的實現(xiàn)方法
這篇文章主要介紹了Spring Security 表單登錄,本文將構建在之前簡單的 Spring MVC示例 之上,因為這是設置Web應用程序和登錄機制的必不可少的。需要的朋友可以參考下2019-06-06解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定
這篇文章主要介紹了解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定,Jackson通常被用來實現(xiàn)Java對象和JSON數(shù)據(jù)的相互轉換功能,需要的朋友可以參考下2016-01-01Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項目踩過的坑
IDEA旗艦版可以直接創(chuàng)建Spring MVC項目,但創(chuàng)建后的項目并不是直接就可以運行,還需要進行一些配置。這篇文章主要介紹了Intellij IDEA 旗艦版創(chuàng)建 Spring MVC 項目踩坑記 ,需要的朋友可以參考下2020-03-03