时间:2021-05-20
参数绑定过程
在springMVC中,从前端(页面:jsp…)发送请求到后端(controller…),会包含一些数据,数据是如何到达Controller,这个过程就是参数绑定过程
1、默认支持的类型
SpringMVC有支持的默认的参数类型,在方法上给出默认的参数类型的声明就可以直接使用
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);}使用@RequestParam注解就可以解决页面Input的name值和controller方法形参名不一致的问题
注意:基本的数据类型和包装类型(Integer,Long…)以及String类型参数绑定都是适用于以上基本类型参数绑定,基本类型和包装类型的区别:基本类型传递参数不能为null或者“”,否则会出现数据转化的异常,包装类型不会出现这种问题,建议使用时使用包装。
3、自定义类型
自定义类型的类(User)
public class User { private Long id; private String name; private String address;}//getter setter toStringJSP页面
<%@ 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:///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 align="center" 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;}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; }2、返回String类型 (1)返回逻辑视图名
返回String,可以表示是逻辑视图名
真正视图(jsp路径)=“前缀”+逻辑视图名+“后缀”
前缀和后缀可以在spring-mvc中设置视图解析器组件时指定
(2)redirect重定向
redirect特点:
点击提交之后,页面跳转到redirect指定的页面,URL会发生改变
(3)forward页面转发
forward特点:
点击提交之后,页面跳转到forward指定的页面,URL不会发生改变
问题:forward和redirect的区别?
Forward和Redirect代表了两种请求转发方式:直接转发和间接转发。
举个通俗的例子:
二者区别:
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参数绑定和返回值内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
01、函数参数和返回值的作用函数根据有没有参数以及有没有返回值,可以相互结合,共有四种:无参数无返回值无参数有返回值有参数无返回值有参数有返回值定义函数时候,是
1.调用方法一Unity调方法传参,有返回值//Unity代码[DllImport("__Internal")]//给iOS传string参数,有返回值,返回值
在老版本的Ruby中,赋值语句的返回值是设置该属性的方法的返回值。在Ruby1.8中,赋值语句的值总是参数的值而方法的返回值将被丢掉。classTestdefv
子类重新实现父类的方法称重写;重写时可以修改访问权限修饰符和返回值,方法名和参数类型及个数都不可以修改;仅当返回值为类类型时,重写的方法才可以修改返回值类型,且
前言:前面我们介绍了简单的介绍了函数和函数的参数,今天我们来说一下Python中函数的返回值。函数的返回值:函数运算的结果,需要进一步的操作时,给一个返回值re