电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:37日期:2023-07-23 13:10:25
一:參數綁定

參數綁定過程

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

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

1、默認支持的類型

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

HttpServletRequest request:通過request對象來獲取請求的信息 HttpServletResponse response:通過response來處理響應信息 HttpSession session:通過session對象來存放緩存信息 Model model:Model是一個接口,modelMap是一個接口實現,將model信息填充到request中

public String index(HttpServletRequest request, HttpServletResponse response, HttpSession session, Model model) { //返回的modelAndView //指定返回的頁面

2、基本數據類型

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

JSP頁面:

<html><head> <title>測試基本數據類型</title></head><body><!-- 測試基本的數據類型綁定:form表單向后端提交數據 --><form action='/index/basedataType' method='post'> <input type='text' name='username'> <input type='submit' value='提交'></form></body></html>

controller層:

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

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

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

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

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

3、自定義類型

自定義類型的類(User)

public class User { private Long id; private String name; private String address;}//getter setter toString

JSP頁面

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

controller層

@Controller@RequestMapping('/user')public class UserController { @RequestMapping('/index') public String index() { return 'user'; } @RequestMapping('/adduser') //接收自定義類型的數據 public String addUser(User user){ System.out.println('用戶信息:'+user); return 'success'; }}

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

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

4、集合類型

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

JSP頁面

<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%><%@ taglib uri='http://java.sun.com/jsp/jstl/core' prefix='c' %><%@ taglib uri='http://java.sun.com/jsp/jstl/fmt' prefix='fmt'%><!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'><html><head> <title>用戶列表</title></head><body><table border='1'> <thead> <tr> <td>用戶id</td> <td>用戶名</td> <td>地址</td> </tr> </thead> <tbody> <c:forEach items='${users}' var='user'> <tr> <td>${user.id}</td> <td>${user.name}</td> <td>${user.address}</td> </tr> </c:forEach> </tbody></table></body></html>

controller層

@RequestMapping('/userlist')//集合類型數據的傳遞public ModelAndView userList() { ModelAndView modelAndView = new ModelAndView(); //指定邏輯視圖名 modelAndView.setViewName('userlist'); //偽數據集合 ArrayList<User> users = new ArrayList <>(); User user1 = new User(); user1.setId(1L); user1.setName('張三'); user1.setAddress('陜西西安'); users.add(user1); User user2 = new User(); user2.setId(2L); user2.setName('李四'); user2.setAddress('陜西西安'); users.add(user2); User user3 = new User(); user3.setId(3L); user3.setName('王五'); user3.setAddress('陜西西安'); users.add(user3); //填充數據 modelAndView.addObject('users', users); return modelAndView;}

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

二:返回值

1、返回ModelAndView類型

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

@RequestMapping('/userlist') //集合類型數據的傳遞 public ModelAndView userList() { //偽數據集合 ArrayList <User> users = new ArrayList <>(); ModelAndView modelAndView = new ModelAndView(); //指定邏輯視圖名 modelAndView.setViewName('userlist'); //返回數據 modelAndView.addObject('users', users); modelAndView.addObject('class', '超大充電寶'); return modelAndView; }

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類型

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

(1)使用request頁面轉向

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

(2)通過response頁面重定向

response.sendRedirect('/user/userlist');

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

response.getWriter().write('hello...');

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

標簽: Spring
相關文章:
主站蜘蛛池模板: 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 昆山新莱洁净应用材料股份有限公司-卫生级蝶阀,无菌取样阀,不锈钢隔膜阀,换向阀,离心泵 | 植筋胶-粘钢胶-碳纤维布-碳纤维板-环氧砂浆-加固材料生产厂家-上海巧力建筑科技有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司 | 2025黄道吉日查询、吉时查询、老黄历查询平台- 黄道吉日查询网 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 企业管理培训,企业培训公开课,企业内训课程,企业培训师 - 名课堂企业管理培训网 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 物流公司电话|附近物流公司电话上门取货| 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 深圳市八百通智能技术有限公司官方网站| 液氮罐_液氮容器_自增压液氮罐-北京君方科仪科技发展有限公司 | 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 连栋温室大棚建造厂家-智能玻璃温室-薄膜温室_青州市亿诚农业科技 | 首页 - 张店继勇软件开发工作室 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 自动钻孔机-全自动数控钻孔机生产厂家-多米(广东)智能装备有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 学习虾-免费的学习资料下载平台| 法兰螺母 - 不锈钢螺母制造厂家 - 万千紧固件--螺母街 | 锂电混合机-新能源混合机-正极材料混料机-高镍,三元材料混料机-负极,包覆混合机-贝尔专业混合混料搅拌机械系统设备厂家 | 首页 - 军军小站|张军博客| 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 熔体泵_熔体出料泵_高温熔体泵-郑州海科熔体泵有限公司 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 |