Spring_Accepting request input

2023-10-31



Spring MVC provides several ways that a client can pass data into a controller’s handler method. These include
1. Query parameters
2. Form parameters
3. Path variables

1. Query parameters

/spittles/max=100&count=30

<span style="font-size:14px;">@RequestMapping(method=RequestMethod.GET)
  public List<Spittle> spittles(
      @RequestParam(value="max", defaultValue=MAX_LONG_AS_STRING) long max,
      @RequestParam(value="count", defaultValue="20") int count) {
    return spittleRepository.findSpittles(max, count);
  }</span>

2. Path variables

/spittles/12345

<span style="font-size:14px;">@RequestMapping(value="/{spittleId}", method=RequestMethod.GET)
  public String spittle(
      @PathVariable("spittleId") long spittleId, 
      Model model) {
    model.addAttribute(spittleRepository.findOne(spittleId));
    return "spittle";
  }</span>

两者的区别:

Ideally, the resource being identified (the Spittle) would be identified by the URL path, not by query parameters. As a general rule, query parameters should not be used to identify a resource. A GET request for /spittles/12345 is better than one for /spittles/show?spittle_id=12345. The former identifies a resource to be retrieved. The latter describes an operation with a parameter—essentially RPC over HTTP.

意思是如果是面向资源的就采用Path variables的方式,如果是通过HTTP方式调用后台逻辑的就采用Query parameters方式.

3. Form submit

@RequestMapping(value = "/register", method = POST)
	public String processRegistration(@Valid <strong>Spitter</strong> spitter, Errors errors) {
		if (errors.hasErrors()) {
			return "registerForm";
		}

		spitterRepository.save(spitter);
		return "redirect:/spitter/" + spitter.getUsername();
	}

Spring框架自动将窗体提交的数据转换为Spitter对象。当然Form中的相应属性需要与对象的属性保持一致。

View source code:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
  <head>
    <title>Spittr</title>
    <link rel="stylesheet" type="text/css"
      href="<c:url value="/resources/style.css" />" >
  </head>
  <body>
    <h1>Register</h1>
    <form method="POST">
      First Name: <input type="text" name="firstName" /><br/>
      Last Name: <input type="text" name="lastName" /><br/>
      Username: <input type="text" name="username" /><br/>
      Password: <input type="password" name="password" /><br/>
      <input type="submit" value="Register" />
   </form>
  </body>
</html>

Object source code:

package spittr;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.hibernate.validator.constraints.Email;

public class Spitter {

  private Long id;
  
  @NotNull
  @Size(min=5, max=16)
  private String username;

  @NotNull
  @Size(min=5, max=25)
  private String password;
  
  @NotNull
  @Size(min=2, max=30)
  private String firstName;

  @NotNull
  @Size(min=2, max=30)
  private String lastName;
  
  @NotNull
  @Email
  private String email;

  public Spitter() {}
  
  public Spitter(String username, String password, String firstName, String lastName, String email) {
    this(null, username, password, firstName, lastName, email);
  }

  public Spitter(Long id, String username, String password, String firstName, String lastName, String email) {
    this.id = id;
    this.username = username;
    this.password = password;
    this.firstName = firstName;
    this.lastName = lastName;
    this.email = email;
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public Long getId() {
    return id;
  }

  public void setId(Long id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }
  
  public String getEmail() {
    return email;
  }
  
  public void setEmail(String email) {
    this.email = email;
  }

  @Override
  public boolean equals(Object that) {
    return EqualsBuilder.reflectionEquals(this, that, "firstName", "lastName", "username", "password", "email");
  }
  
  @Override
  public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this, "firstName", "lastName", "username", "password", "email");
  }

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring_Accepting request input 的相关文章

  • Linux_note 命令grep,sed,awk

    1 grep 过滤出指定的行 grep cinvABC 39 word 39 filename color 把匹配到的关键词用红色标识 如 xff1a grep color 39 root 39 etc passwd c xff1a 打印符
  • 群晖note station client 闪退(Mac OS Monterey)

    问题 xff1a 升级后如题 解决 xff1a 下载官方Bug 修正版 xff0c 覆盖安装 xff01 ftp Synology RackStation 出处 xff1a Note Station Client not working o
  • Note - Linux

    1 Terminal Command 1 1 ls list List files of current direction or target direction ls option file OptionExplanation aLis
  • ML-Leaks Note

    ML Leaks Model and Data IndependentMembership Inference Attacks and Defenses onMachine Learning Models xff08 机器学习模型上与模型和
  • note: please ensure that VS 2013,VS 2015, VS 2017,VS 2019 or VS 2022 was instal1ed with the Visua1 C

    编译rust代码报错 报错信息 error 1inker link exe 96 not found 61 note program not found note the msvc targets depend on the msvc li
  • [深度学习]note for Machine Learning: An Algorithmic Perspective, Second Edition(Ch04-Ch06)【日常更新】

    Machine Learning An Algorithmic Perspective Second Edition Part 2 4 多层感知器4 1 前向4 1 1 偏置 4 2 后向 xff1a 误差的反向传播4 2 1 多层感知器算
  • mantis整合svn续:把提交的所有信息自动保存为note

    在前面两篇转载的文章中 xff0c 介绍了mantis和svn的整合 http blog csdn net newjueqi article details 7785373 http blog csdn net newjueqi artic
  • 静态测试 vs 动态测试

    静态测试 静态测试又可分为代码走查 Walkthrough 代码审查 Inspection 技术评审 Review 代码走查 Walkthrough 开发组内部进行的 采用讲解 讨论和模拟运行的方式进行的查找错误的活动 代码审查 Inspe
  • [非卷积5D] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

    不使用3D建模 使用静态图片进行训练 用 非卷积 深度网络表示场景的5D连续体表示 再通过ray marching进行渲染 paper NeRF Representing Scenes as Neural Radiance Fields f
  • 把Collection转化为XML

    IList
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa
  • 1P+N

    1p n是什么意思 单极二线 就是 一个单片空气开关 和一个漏电保护模块组合在一起的开关 火线 零线一起进出组合开关 当漏电发生时漏电模块带动空气开关跳闸 火线和外网电断开 但是零线是不断开的
  • 如何考虑BLL层和DAL层的日志

    DAL层日志 DAL层与数据库交互 日志记录的目的是 1 发生异常时通过日志查找原始信息 便于快速定位原因 2 对于一些复杂的事务可以通过对日志的分析来发现错误的具体位置 BLL层日志 BLL层与UI交互 虽然UI已经对用户输入进行了一些过
  • AI三大主义:符号主义、联结主义、行为主义

    一 符号主义 symbolicism 符号主义 symbolicism 逻辑主义 Logicism 心理学派 Psychlogism 计算机学派 Computerism 其原理主要为物理符号系统 即符号操作系统 假设和有限合理性原理 早期的
  • Java springboot自定义bean加载控制顺序在flyway执行后

    在springboot中 我们经常需要在系统启动时执行一些自定义逻辑 例如将数据库中的值读取给bean使用等等 一般采用自定义bean的初始化流程方式实现 方式有许多种 但假如这个bean要被其他模块使用时保证已经被初始化过 就不能简单的采
  • Tensorflow(1)进行多维矩阵的拆分与拼接

    最近在使用tensorflow进行网络训练的时候 需要提取出别人训练好的卷积核的部分层的数据 由于tensorflow中的tensor和python中的list不同 无法直接使用加法进行拼接 后来发现一个函数可以完成tensor的拼接 函数
  • 多线程 并发编程与异步方法

    1 Parallel Programming中的PLINQ Parallel Class与Task Parallelism的特点 并发编程的内容类似于Google的Map Reduce的算法 多线程的着眼点是线程的互斥 同步等 而并行编程的
  • 程序记录(一)VGG16猫狗分类

    import torch from torchvision import datasets models transforms import os from torch utils data import DataLoader from t
  • 2013/1工作总结

    这个月抽时间看了C Primer一书 主要原因是没有基础知识直接看ATL的代码根本不可能 感想之一就是程序员也许必须学习一下C 只学习Java或者C 可能对语言的了解有限 造成对某些问题一直没有透彻的理解 当然了 最后发现还要好好学习理解编
  • ADC 读取电位器旋钮,用回差消除临界值档位跳动

    就是比如 用电位器当旋钮做风扇调速 划分出10 个速度档位 对应10 个ADC 转换结果的阈值 如果直接比较阈值 当旋钮拧到临近阈值的地方时 ADC 结果的微小跳动会导致风扇档位在两个级别之间不停左右横跳 因此想到了利用回差来消除抖动 回差

随机推荐

  • keepalived实现lvs高可用

    keepalived是什么 Keepalived 软件起初是专为LVS负载均衡软件设计的 用来管理并监控LVS集群系统中各个服务节点的状态 后来又加入了可以实现高可用的VRRP功能 因此 Keepalived除了能够管理LVS软件外 还可以
  • 异常(exception)

    异常 什么是异常 程序在运行过程中发生的意外情况 称之为异常 除数为0 数组小标越界 异常是一种信号 用于调用者传递信息 表示程序发生了意外情况 程序运行时一旦出现了异常 将会导致程序立即终止 异常之后的代码都无法继续执行 那么为了保持程序
  • 酒令

    劝酒者起身敬酒 被劝者会说 屁股一抬 喝了重来 意让劝酒者再喝一个 此时劝酒者应对 屁股一动 表示尊重 男人不喝酒 交不到好朋友 感情深一口闷 感情浅舔一舔 女士劝酒 激动的心 颤抖的手 我给领导到杯酒 领导不喝嫌我丑 女士和领导碰杯 领导
  • 鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单

    项目场景 提示 这里简述项目相关背景 例如 项目场景 示例 网站右侧导航 无法移入二级菜单 鼠标移出一级菜单 二级内容立刻消失 从而鼠标无法移入二级内容区域 类似CSDN官网右侧 鼠标hover到二维码图标后 显示左侧关注公众号和下载APP
  • C语言中几种输入方式

    当我们输入一串字符或者数字时 需要一种标志作为输入结束的标志 所以我总结了以下几种 1 输入一串字符串以回车键作为输入结束的标志 char ch while ch getchar n 例1 输入一行字符 分别统计出其中英文字母 空格 数字
  • 感应(异步)电机磁场定向控制速度环PI控制参数设计

    电机控制系列文章 感应 异步 电机磁场定向控制MATLAB Simulink建模 感应 异步 电机磁场定向控制电流环PI控制参数设计 目录 电机控制系列文章 前言 一 速度环开环传递函数 二 速度环开环传递函数零极点配置 三 速度环闭环性能
  • 【Twinkle】简历小问题

    在制作简历的时候 很多人都把心思放在如何撑满一张纸 当然 这确实很重要 但是在重内容的同时 我们容易忽略一些小问题 而这些小问题在HR的眼中其实是基本功的体现 更甚 这些小问题反倒是最扎眼的 比如字体 字号 行间距等 这些都是超脱于内容之外
  • [1199]npm常用命令

    文章目录 npm常用的安装命令 npm镜像源如何设置 npm将软件包安装到哪里 npx命令 npm文档 https docs npmjs com cli install npm常用的安装命令 npm i 就是npm install 简写 n
  • STL迭代器失效的场景总结

    一 序列式容器迭代器失效的场景 序列式容器以vector为例 分别有以下情况会失效 1 push back 使迭代器失效 在容器末尾添加一个元素 如果容器有剩余空间 capacity gt size 则直接添加新元素到容器尾部 此时 原迭代
  • 【产品经理实战项目系列教程】笔记004:产品经理应该具备的能力及如何学习;

    一 产品经理应该具备的能力 1 产品设计的能力 设计功能 业务 app 网站 小程序 后台等等 2 文档撰写 3 逻辑思维能力 需要在实战项目中不断的锻炼 激发自己的思考能力 4 业务梳理能力 难点在于梳理清楚业务与业务之间的闭环 5 沟通
  • flashFXP乱码解决

    菜单 命令 原始命令 输入 opts utf8 off 回车 或点确定 再刷新服务端的目录列表 即正常显示
  • 记一次Oracle RAC一节点重启后出现故障的处理

    因为存储的相关操作 客户需要手动重启rac节点 然而 这个重启导致了接下来的事故 由于是远程跟我沟通 我回复rac环境下可以重启一个节点 客户就自信重启了 出现的故障如下所示 grid hxdb01 srvctl start nodeapp
  • 使用VUE3.0版本搭建H5模板

    使用VUE3 0版本搭建H5模板 仓库地址 有需要的可以参考参考 https gitee com young frivolous vue3 app template tree master 为了方便每次写项目都要去搭建一个框架 今天使用vu
  • vue 实现鼠标移入移出表格,显示影藏图标, 并弹出提示内容

    效果 1 Table代码
  • NLP task2 _ 自然语言处理中N-Gram模型的Smoothing算法

    使用N Gram模型时的数据平滑算法 背景 为什么要做平滑处理 零概率问题 就是在计算实例的概率时 如果某个量x 在观察样本库 训练集 中没有出现过 会导致整个实例的概率结果是0 在文本分类的问题中 当一个词语没有在训练样本中出现 该词语调
  • 出圈

    题目描述 设有n个人围坐一圈并按顺时针方向从1到n编号 从第1个人开始进行1到m的报数 报数到第个m人 此人出圈 再从他的下一个人重新开始1到m的报数 如此进行下去直到所剩下一人为止 输入 输入多行 每行2个数 分别表示n和m 输出 计算每
  • AntDesign技术指南:构建优雅的前端界面

    引言 AntDesign是一款优秀的前端UI组件库 它提供了丰富的组件和功能 帮助我们快速构建漂亮 易用的前端界面 本篇博客将详细介绍AntDesign的使用方法和技巧 并展示完整的代码示例 无论你是初学者还是有经验的开发者 本篇博客都将为
  • ISAKMP报文解密

    使用wireshark抓包 No Time Source Destination Protocol Length Info 3 1 735352000 192 168 1 102 192 168 1 101 ISAKMP 878 IKE S
  • react中使用useEffect模拟componentDidUpdata(使 useEffect 在渲染时不执行,只在数据变更时执行)

    背景介绍 在列表搜索条件变化时 需要保存搜索条件 但是保存搜索条件这个方法不需要在组件挂载时执行 即如何使 useEffect 在渲染时不执行 只在数据变更时执行 即模拟类组件的componentDidUpdata 问题描述 如果是使用监听
  • Spring_Accepting request input

    Spring MVC provides several ways that a client can pass data into a controller s handler method These include 1 Query pa