<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
請求引數處理,不使用引數註解:
1.如果請求引數名和請求處理的形參名一致,springMvc 框架會自動將你的請求引數名對應的引數值,繫結到請求方法的形參中,方法內就可以直接使用,不用手動獲取;
2.如果你的請求沒有攜帶引數,不會報錯,只不過,請求處理方法的形參值都是null或其他值,如果請求處理方法形參是一個實體引數,原理和單個型別引數一致(只要請求引數名和實體名一致也可以自動繫結);
測試不使用 @RequestParam 註解
@RequestMapping("/testSpringMvcNoRequestParam") public String testSpringMvcNoRequestParam( String userId,String userName){ System.out.println(String.format("------ 請求引數:uid :%s ,uname:%s------",userId,userName)); return "success"; }
測試 請求不帶引數
測試 請求帶引數
@RequestParam 只能寫在請求方法的形參上;
required = false 設定引數不是必傳;
defaultValue 預設值;
測試
@RequestMapping("/testSpringMvcRequestParam") public String testSpringMvcRequestParam(@RequestParam("uid") String userId, @RequestParam(value = "uname",required = false,defaultValue = "KH96-mvc") String userName, @RequestParam String userPwd){ System.out.println(String.format("------ 請求引數:uid :%s ,uname:%s,uPwd:%s------",userId,userName,userPwd)); return "success"; }
測試結果
請求頭引數@RequestHeader:
測試
@RequestMapping("/testSpringMvcNoRequestHeader") public String testSpringMvcNoRequestHeader(@RequestHeader(value = "token",required = false,defaultValue = "KH96_mvc") String token){ System.out.println(String.format("------ 請求頭引數:token :%s ------",token)); return "success"; }
測試結果
@CookieValue:
從cookie中獲取引數,根據別名或者引數形參名,將請求頭對應引數值,繫結到請求處理方法的形參中,直接使用,用法跟@RequestParam,@RequestHeader類似,也可以指定是否必傳,預設值;
測試
@RequestMapping("/testSpringMvcCookieValue") public String testSpringMvcCookieValue(@CookieValue("JSESSIONID") String sessionId){ System.out.println(String.format("------ 請求cookie引數:JSESSIONID :%s ------",sessionId)); return "success"; }
測試結果:
請求引數處理 實體引數:
自動將請求引數自動將實體的屬性名與形參繫結,原理和單個引數型別一致;
測試
@RequestMapping("/testSpringMvcBeanParam") public String testSpringMvcBeanParam(UserVO userVO){ System.out.println(String.format("------ 請求實體引數:userVO :%s ------",userVO)); return "success"; }
測試結果
用法和javaWeb截斷學習的用法完全一致;
@RequestMapping("testSpringMvcServletAPI") public void testSpringMvcServletAIP(HttpServletRequest request, HttpServletResponse response,HttpSession session) throws IOException, ServletException { //獲取請求方式 System.out.println(String.format("------ 請求方式:%s ------",request.getMethod())); //獲取請求引數 System.out.println(String.format("------ 請求引數:%s ------",request.getParameter("userTel"))); //手動轉發 // request.getRequestDispatcher("/WEB-INF/views/success.jsp").forward(request,response); //獲取session物件 //手動新增引數 HttpSession sessionHad = request.getSession(); //sessionHad.setAttribute("userTel",request.getParameter("userTel")); //方式2;直接將HttpSession物件宣告在請求處理方法的形參中,可以自動獲取 session //重定向到 // response.sendRedirect("http://www.baidu.com"); }
ModelAndView 的資料模型放在request的作用域中,檢視模型,放在request.getRequestDispatcher(字首+檢視名字+字尾);
結論:SpringMVC框架的前端核心控制器,會自動將返回的ModelAndView物件中的資料模型,新增到request作用域中使用內部轉發方式,轉發到目標檢視;
測試
@RequestMapping("/testSpringMvcModelAndView") public ModelAndView testSpringMvcModelAndView(String userEmail){ //建立一個 ModelAndView 物件 ModelAndView mav = new ModelAndView(); //新增模型資料 mav.addObject("uemail",userEmail); //可以新增多個模型資料,內部使用ModelMap集合存放的 mav.addObject("uage",18); //設定目標檢視 mav.setViewName("ok"); //返回 ModelAndView 物件 return mav; }
測試結果
要求:使用map返回模型資料,必須將map宣告在請求處理方法的形參中,定義在方法的內部是無效的;
總結:
測試
@RequestMapping("/testSpringMvcMap") public String testSpringMvcMap(String userEmail, Map<String,Object> map){ //輸出map的目標型別 System.out.println(map.getClass().getName()); //org.springframework.validation.support.BindingAwareModelMap //新增模型資料 map.put("uemail",userEmail); //返回目標檢視名稱 return "ok"; }
測試結果
Model,可以新增模型資料;
必須將 Model 宣告在請求處理方法的形參中,定義在方法的內部是無效的,用法跟Map 一致;
測試
@RequestMapping("/testSpringMvcModel") public String testSpringMvcModel(String userEmail, Model model){ //新增模型資料 model.addAttribute("uemail",userEmail); //返回目標檢視名稱 return "ok"; }
測試結果
只需要在返回的檢視名稱前,增加一個字首:forward 即可,直接轉發到目標資源;
當前請求處理方法中的模型物件可以帶走;
@RequestMapping("/testSpringMvcForward") public String testSpringMvcForward(Map<String,Object> map){ //轉發頁面跳轉 //return "forward:/forward.jsp"; //轉發到其他請求中 //return "forward:/testSpringMvcModel?userEmail=123@qq.com"; //自定義轉發,攜帶模型資料 map.put("uaddr","nj_wd_kh96"); return "forward:/testSpringMvcModel?userEmail=123@qq.com"; }
只需要在返回的檢視名稱前,增加一個字首:redirect 即可,不做檢視解析器,直接重定向
注意,重定向,當前請求處理方法中的模型物件不能帶走
@RequestMapping("/testSpringMvcRedirect") public String testSpringMvcRedirect(){ //重定向頁面跳轉 //return "redirect:/redirect.jsp"; //重定向 可以重定向到 其他請求中 return "redirect:/testSpringMvcModel?userEmail=123@qq.com"; }
返回JSON資料;
<!-- JSON begin --> <!--jackson--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.4</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.8.4</version> </dependency> <!--jackson--> <!-- JSON end -->
<beans xmlns= xmlns:mvc="http://www.springframework.org/schema/mvc" http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <!-- 開啟MVC 的註解掃描 --> <mvc:annotation-driven></mvc:annotation-driven> </beans>
@RequestMapping("/testSpringMvcJson") @ResponseBody public UserVO testSpringMvcJson(){ //模擬獲取去使用者詳情物件 UserVO userVO = new UserVO(); userVO.setUserId("KH96_01"); userVO.setUserName("GKC"); userVO.setUserPwd("123"); return userVO; }
測試結果
到此這篇關於SpringMvc請求處理引數 和 響應資料處理的文章就介紹到這了,更多相關SpringMvc請求處理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45