国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring MVC的參數綁定和返回值問題

Spring MVC的參數綁定和返回值問題

2021-08-06 10:45超大充電寶 Java教程

這篇文章主要介紹了Spring MVC的參數綁定和返回值問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一:參數綁定

 

參數綁定過程

在springMVC中,從前端(頁面:jsp…)發送請求到后端(controller…),會包含一些數據,數據是如何到達Controller,這個過程就是參數綁定過程

Spring MVC的參數綁定和返回值問題

1、默認支持的類型

SpringMVC有支持的默認的參數類型,在方法上給出默認的參數類型的聲明就可以直接使用

  • HttpServletRequest request:通過request對象來獲取請求的信息
  • HttpServletResponse response:通過response來處理響應信息
  • HttpSession session:通過session對象來存放緩存信息
  • Model model:Model是一個接口,modelMap是一個接口實現,將model信息填充到request中
  1. public String index(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model) {
  2. //返回的modelAndView
  3. //指定返回的頁面

2、基本數據類型

基本的數據類型也支持綁定,基礎的數據類型包括byte、short、int、long 、float、double、char、boolean

JSP頁面:

  1. <html>
  2. <head>
  3. <title>測試基本數據類型</title>
  4. </head>
  5. <body>
  6. <!-- 測試基本的數據類型綁定:form表單向后端提交數據 -->
  7. <form action="/index/basedataType" method="post">
  8. <input type="text" name="username">
  9. <input type="submit" value="提交">
  10. </form>
  11. </body>
  12. </html>

controller層:

  1. @RequestMapping("/basedataType")
  2. public void baseDataType(int username) {
  3. System.out.println("基本數據類型:"+username);
  4. }
  • 注意:表單上Input中的name值和controller的參數的變量名保持一致,則能完成數據綁定,如果不一致呢?
  • 需要@RequestParam注解來完成,JSP頁面不用改變

Spring MVC的參數綁定和返回值問題

使用@RequestParam注解就可以解決頁面Input的name值和controller方法形參名不一致的問題

注意:基本的數據類型和包裝類型(Integer,Long…)以及String類型參數綁定都是適用于以上基本類型參數綁定,基本類型和包裝類型的區別:基本類型傳遞參數不能為null或者“”,否則會出現數據轉化的異常,包裝類型不會出現這種問題,建議使用時使用包裝。

Spring MVC的參數綁定和返回值問題

3、自定義類型

自定義類型的類(User)

  1. public class User {
  2. private Long id;
  3. private String name;
  4. private String address;
  5. }
  6. //getter setter toString

JSP頁面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <title>自定義類型數據提交</title>
  8. </head>
  9. <body>
  10. <form action="/user/adduser" method="post">
  11. 用戶id:<input type="text" name="id"><br/>
  12. 用戶名:<input type="text" name="name"><br/>
  13. 地址:<input type="text" name="address"><br/>
  14. <input type="submit" value="提交">
  15. </form>
  16. </body>
  17. </html>

controller層

  1. @Controller
  2. @RequestMapping("/user")
  3. public class UserController {
  4. @RequestMapping("/index")
  5. public String index() {
  6. return "user";
  7. }
  8. @RequestMapping("/adduser")
  9. //接收自定義類型的數據
  10. public String addUser(User user){
  11. System.out.println("用戶信息:"+user);
  12. return "success";
  13. }
  14. }

Spring MVC的參數綁定和返回值問題

注意:頁面輸入框的name屬性值和自定義的pojo實例的屬性名保持一致即可映射成功
如果類型存在 不一致時需要自定義一個類型轉化器,需要給定一個自定義的類,實現Converter接口,該接口需要執行轉化的類型,例如將前端的String的數據轉化為日期類型,即Converter<String,Date>

4、集合類型

集合類型:數組,List、Map等常用的集合類型都會支持
以List集合為例進行介紹

JSP頁面

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <title>用戶列表</title>
  8. </head>
  9. <body>
  10. <table align="center" border="1">
  11. <thead>
  12. <tr>
  13. <td>用戶id</td>
  14. <td>用戶名</td>
  15. <td>地址</td>
  16. </tr>
  17. </thead>
  18. <tbody>
  19. <c:forEach items="${users}" var="user">
  20. <tr>
  21. <td>${user.id}</td>
  22. <td>${user.name}</td>
  23. <td>${user.address}</td>
  24. </tr>
  25. </c:forEach>
  26. </tbody>
  27. </table>
  28. </body>
  29. </html>

controller層

  1. @RequestMapping("/userlist")
  2. //集合類型數據的傳遞
  3. public ModelAndView userList() {
  4.  
  5. ModelAndView modelAndView = new ModelAndView();
  6. //指定邏輯視圖名
  7. modelAndView.setViewName("userlist");
  8.  
  9. //偽數據集合
  10. ArrayList<User> users = new ArrayList <>();
  11. User user1 = new User();
  12. user1.setId(1L);
  13. user1.setName("張三");
  14. user1.setAddress("陜西西安");
  15. users.add(user1);
  16.  
  17. User user2 = new User();
  18. user2.setId(2L);
  19. user2.setName("李四");
  20. user2.setAddress("陜西西安");
  21. users.add(user2);
  22.  
  23. User user3 = new User();
  24. user3.setId(3L);
  25. user3.setName("王五");
  26. user3.setAddress("陜西西安");
  27. users.add(user3);
  28.  
  29. //填充數據
  30. modelAndView.addObject("users", users);
  31.  
  32. return modelAndView;
  33. }

Spring MVC的參數綁定和返回值問題

二:返回值

 

1、返回ModelAndView類型

返回結構定位ModelAndView時,將model和View分別進行設置

  1. @RequestMapping("/userlist")
  2. //集合類型數據的傳遞
  3. public ModelAndView userList() {
  4.  
  5. //偽數據集合
  6. ArrayList <User> users = new ArrayList <>();
  7.  
  8. ModelAndView modelAndView = new ModelAndView();
  9. //指定邏輯視圖名
  10. modelAndView.setViewName("userlist");
  11. //返回數據
  12. modelAndView.addObject("users", users);
  13. modelAndView.addObject("class", "超大充電寶");
  14.  
  15. return modelAndView;
  16. }

Spring MVC的參數綁定和返回值問題

Spring MVC的參數綁定和返回值問題

2、返回String類型 (1)返回邏輯視圖名

返回String,可以表示是邏輯視圖名

Spring MVC的參數綁定和返回值問題

真正視圖(jsp路徑)=“前綴”+邏輯視圖名+“后綴”
前綴和后綴可以在spring-mvc中設置視圖解析器組件時指定

Spring MVC的參數綁定和返回值問題

(2)redirect重定向

redirect特點:

  • 瀏覽器上地址URL會發生改變,
  • 修改后的request的數據無法傳遞到重定向的頁面,即重定向時request數據無法共享

Spring MVC的參數綁定和返回值問題

點擊提交之后,頁面跳轉到redirect指定的頁面,URL會發生改變

Spring MVC的參數綁定和返回值問題

(3)forward頁面轉發

forward特點:

  • 瀏覽器的地址URL不變的
  • request是可以共享的

Spring MVC的參數綁定和返回值問題

點擊提交之后,頁面跳轉到forward指定的頁面,URL不會發生改變

Spring MVC的參數綁定和返回值問題

問題:forward和redirect的區別?

Forward和Redirect代表了兩種請求轉發方式:直接轉發和間接轉發。

  • 直接轉發方式(Forward),客戶端和瀏覽器只發出一次請求,Servlet、HTML、JSP或其它信息資源,由第二個信息資源響應該請求,在請求對象request中,保存的對象對于每個信息資源是共享的。
  • 間接轉發方式(Redirect)實際是兩次HTTP請求,服務器端在響應第一次請求的時候,讓瀏覽器再向另外一個URL發出請求,從而達到轉發的目的。

舉個通俗的例子:

  • 直接轉發就相當于:“A找B借錢,B說沒有,B去找C借,借到借不到都會把消息傳遞給A”
  • 間接轉發就相當于:“A找B借錢,B說沒有,讓A去找C借”

二者區別:
redirect 重定向:

1、重定向會改變瀏覽器地址欄地址 。

2、重定向不止可以訪問服務器內的資源,還可以訪問外部連接 。

3、重定向因為是兩次請求,所以重定向不能使用request來訪問資源和共享數據,因為request的作用域是一次請求內。

forward 請求轉發:

1、不會改變瀏覽器地址欄信息 。

2、只能訪問服務器內部資源 。

3、是一次請求.所以可以使用request共享數據。

2、返回void類型

  1. @RequestMapping("/void")
  2. //接收自定義類型的數據
  3. public void result(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  4. //添加用戶成功跳轉到用戶列表
  5. request.getRequestDispatcher("/user/userlist").forward(request,response);
  6. response.sendRedirect("/user/userlist");
  7.  
  8. response.getWriter().write("hello...");
  9. }

(1)使用request頁面轉向

  1. request.getRequestDispatcher("/user/userlist").forward(request,response);

(2)通過response頁面重定向

  1. response.sendRedirect("/user/userlist");

(3)通過response指定響應結果

  1. response.getWriter().write("hello...");

到此這篇關于Spring MVC的參數綁定和返回值的文章就介紹到這了,更多相關Spring MVC參數綁定和返回值內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/Super_Powerbank/article/details/113733603

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 蜜桃成人| 91麻豆精品国产91久久久久久 | 91se在线| 亚洲国产视频一区 | 性片网站 | 亚洲欧美另类在线 | 国产乱xxxxx97国语对白 | 午夜精品视频在线观看 | 91.成人天堂一区 | 国产在线看片 | 国产精品一区久久 | 免费国产一区二区 | 精品日韩一区二区三区 | 中文成人在线 | 国产精品第52页 | av在线电影观看 | 精品一区二区三区在线观看 | 欧美成人高清视频 | 亚洲在线观看免费视频 | 亚洲va | 性爽视频 | 日韩中文字幕一区二区 | 久久艹色 | 九九九亚洲 | 日本三级中文在线电影 | 久久思久久 | 免费国产wwwwwww网站 | 亚洲一区二区三区免费视频 | 日韩精品小视频 | 久久久久99| 亚洲毛片在线观看 | 字幕网av | 欧美日韩视频一区二区 | 一级黄色片aaa | 欧美精品在线播放 | 久久久久久久国产 | av免费在线观看网站 | 欧美一区二区三区精品 | 欧美电影一区 | 欧美中文字幕一区二区三区亚洲 | 综合伊人 |