SpringMVC_使用POJO作为参数

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道 本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。 阅读详情

SpringMVCTest.java

package com.wxh.springmvc.handlers;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.wxh.springmvc.entities.User;

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {

	private static final String SUCCESS = "success";
	
	/**
	 * Spring MVC会按照请求参数名和POJO属性名进行自动匹配
	 * 自动为该对象填充属性值,支持级联属性。
	 * 如:dept.deptId、dept.address.tel等 
	 */
	
	@RequestMapping("/testPojo")
	public String testPojo(User user){
		System.out.println("testPojo : "+ user);		
		return SUCCESS;
	}
	
	
	
	
	/**
	 * 了解:
	 * @CookieValue:映射一个Cookie 值,属性同@RequestParam
	 */
	@RequestMapping("/testCookieValue")
	public String testCookieValue(@CookieValue("JSESSIONID") String sessionId){
		System.out.println("testCookieValue: sessionId: " + sessionId);
		return SUCCESS;
	}
	
	/**
	 * 了解:
	 * 映射请求头信息 
	 * 用法同@RequestParam
	 * @return
	 */
	
	@RequestMapping("/testRequestHeader")
	public String testRequestHeader(@RequestHeader(value="Accept-Language") String al){
		System.out.println("testRequestHeader, Accept-Language: " + al);
		return SUCCESS;
	}
	
	/**
	 * 
	 * @RequestParam 来映射请求参数
	 * value 值即请求参数的参数名
	 * required 该参数是否必须,默认为true
	 * defaultValue 请求参数的默认值
	 */	
	@RequestMapping("/testRequestParam")
	public String testRequestParam(@RequestParam(value="username") String un,
			@RequestParam(value="age",required=false,defaultValue="0") int age){
		System.out.println("testRequestParam,username "+un+",age: "+age);		
		return SUCCESS;
	}
	
	/**
	 * Rest 风格的URL
	 * 以CRUD为例:
	 * 新增: /order POST  
	 * 修改:/order/1 PUT      update?id=1
	 * 获取:/order/1 GET      get?id=1
	 * 删除:/order/1 DELETE   delete?id=1
	 * 
	 * 如何发送 PUT 请求和DELETE 请求呢?
	 * 1.需要配置HiddenHttpMethodFilter
	 * 2.需要发送POST请求
	 * 3.需要在发送POST 请求时携带一个name="_method" de 隐藏域,值为DELETE 或 PUT
	 * 
	 * 在SpringMVC中的目标方法中如何得到id呢?
	 * 使用@PathVariable 注解
	 * 
	 * @param id
	 * @return
	 */
	
	
	@ResponseBody()//加上此注解解决405的问题
	@RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)
	public String testRestPut(@PathVariable Integer id){
		System.out.println("testRest PUT: "+id);
		return SUCCESS;
	}	
	
	@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
	@ResponseBody()//加上此注解解决405的问题
	public String testRestDelete(@PathVariable Integer id){
		System.out.println("testRest Delete: "+id);
		return SUCCESS;
	}
	
	@RequestMapping(value="/testRest",method=RequestMethod.POST)
	public String testRest(){
		System.out.println("testRest POST ");
		return SUCCESS;
	}
	
	@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
	public String testRest(@PathVariable Integer id){
		System.out.println("testRest GET: "+id);
		return SUCCESS;
	}
	
	/**
	 * @PathVariable 可以来映射URL中的占位符到目标方法的参数中。
	 * @param id
	 * @return
	 */
	@RequestMapping("/testPathVariable/{id}")
	public String testPathVariable(@PathVariable("id") Integer id){
		System.out.println("testPathVariable: "+ id);
		return SUCCESS;
	}
	
	
	@RequestMapping("/testAntPath/*/abc")
	public String testAndPath(){
		System.out.println("testAntPath");
		return SUCCESS;
	}
	
	/**
	 * 了解:可以使用params和 headers来更加精确的映射请求,params 和 headers支持简单的表达式
	 * @return
	 */	
	@RequestMapping(value="testParamsAndHeaders",
			params={"username","age!=10"}, headers={"Accept-Language=en-US,zh;q=0.8"})
	public String testParamsAndHeaders(){
		System.out.println("testParamsAndHeaders");
		return SUCCESS;
	}
	
	
	/**
	 * 常用:使用method 属性来指定请求方式  
	 * @return
	 */
	
	@RequestMapping(value="/testMethod",method=RequestMethod.POST)
	public String testMethod(){
		System.err.println("testMethod");
		return SUCCESS;
	}
	
	/**
	 * 1.@RequestMapping 除了修饰方法,还可来修饰类
	 * 2.
	 * 1).类定义处:提供初步的请求映射信息,相对于web应用的根目录
	 * 2).方法处:提供进一步的细分映射信息。
	 * 相对于类定义处的url。若类定义处未标注@RequestMapping。则方法处标记的url相对于web应用的根目录。
	 * @return
	 */
	
	@RequestMapping("/testRequestMapping")
	public String testRequestMapping(){
		System.out.println("testRequestMapping");
		return SUCCESS;
	}
	
}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<form action="springmvc/testPojo" method="post">
		username:<input type="text" name="username">
		<br>
		password:<input type="password" name="password">
		<br>
		email:<input type="text" name="email">
		<br>
		age:<input type="text" name="age">
		<br>		
		city:<input type="text" name="address.city">
		<br>
		province:<input type="text" name="address.province">
		<br>
		<input type="submit" name="Submit">
	</form>
	<br><br>
	
	
	<a href="springmvc/testCookieValue">Test CookieValue</a>
	<br><br>
	
	<a href="springmvc/testRequestHeader">Test RequestHeader</a>
	<br><br>
	
	<a href="springmvc/testRequestParam?username=wxh&age=11">Test RequestParam</a>
	<br><br>
	
	<!--put请求-->
	<form action="springmvc/testRest/1" method="post">
		<input type="hidden" name="_method" value="PUT">
		<input type="submit" value="TestRest PUT">
	</form>
	<br><br>
	
	<!--delete请求-->
	<form action="springmvc/testRest/1" method="post">
		<input type="hidden" name="_method" value="DELETE">
		<input type="submit" value="TestRest DELETE">
	</form>
	<br><br>
	
	<!-- post请求 -->
	<form action="springmvc/testRest" method="post">
		<input type="submit" value="TestRest POST">
	</form>
	<br><br>
	<!-- get请求 -->
	<a href="springmvc/testRest/1">Test Rest Get</a>
	<br><br>	
	
	<a href="springmvc/testPathVariable/1">Test PathVariable</a>
	<br><br>	
	
	<a href="springmvc/testAntPath/aa/abc">Test AntPath</a>
	<br><br>
	
	<a href="springmvc/testParamsAndHeaders?username=wxh&age=10">Test TestParamsAndHeaders</a>
	<br><br>

	<!--post请求-->
	<form action="springmvc/testMethod" method="post">
		<input type="submit" value="submit">
	</form>

	<!-- get请求 -->
	<br><br>
	<a href="springmvc/testMethod">Test Method</a>
	
	<br><br>
	<a href="springmvc/testRequestMapping">Test RequestMapping</a>
	
	<br><br>
	<a href="helloworld">Hello world</a>

</body>
</html>

User.java

package com.wxh.springmvc.entities;

public class User {
	private String username;
	private String password;
	
	private String email;
	private String age;
	
	private Address address;
	
	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 String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + ", email=" + email + ", age=" + age
				+ ", address=" + address + "]";
	}
	
}

Address.java

package com.wxh.springmvc.entities;

public class Address {
	
	private String province;
	private String city;
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	
	@Override
	public String toString() {
		return "Address [province=" + province + ", city=" + city + "]";
	}	
	
}


OPTEE常见13类问题与解答 OPTEE常见13类问题并解答 阅读详情

相关推荐

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6735

Servlet API 详解

在我们的 doGet / doPost 方法中, 就执行到了我们自己的代码. 我们自己的代码会根据请求中的一些信息, 来给 HttpServletResponse 对象设置一些属性. 例如状态码, header, body 等。 我们的 doGet / doPost 执行完毕后, Tomcat 就会自动把 HttpServletResponse 这个我们刚设置好的对象转换成一个符合 HTTP 协议的字符串, 通过 Socket 把这个响应发送出去...

m0_60494863的博客 5492

(一)DaVinci Developer AutoSAR工具 如何新建SWC、Component、RTE工程,超级详细步骤,赚到

​ 1,创建SWC,第一步需要创建一个App组件类型,首先点击Object Brower菜单,然后左键Application Component Types 选项,然后右键New Application Component Type,组件类型的作用是来后续实例一个Compoent 2、 Properties 选项卡中Nane中输入Type的名字,注意根据规范命名规则已CtAp开头,其他默认就好 ​

weixin_42602687的博客 3574

【Servlet】——Servlet API 详解

【Servlet】——Servlet API 详解

m0_74352571的博客 3055

GD32F470 DSP库移植避坑指南:从CMSIS版本冲突到AC6工程配置

本文详细解析了在GD32F470平台上移植CMSIS-DSP库的完整流程与关键避坑点。针对CMSIS版本冲突、AC6编译器下的浮点ABI配置、DSP库源文件添加等核心难题,提供了经过验证的解决方案,帮助开发者高效完成移植,确保硬件FPU正常工作并优化性能。

data3的博客 530

【ESP32-IDF笔记】20-配置以太网网络(W5500)

基于ESP32IDF和官方的ethernet驱动,配置W5500以太网驱动芯片,实现ESP32的有线网络

别看了,就这些信息 3471

Servlet基础之API

Servlet API 是你的 Java Web 程序与 Servlet 容器(例如,Tomcat)之间的『约定』。

xiaotu的博客 965

Duplicate Cleaner Pro 5.16 保姆级教程:如何用哈希值精准清理重复文件(附音频/视频模式详解)

本文详细介绍了Duplicate Cleaner Pro 5.16如何利用哈希值技术精准清理重复文件,特别针对音频、视频和图片等多媒体文件提供了专业解决方案。通过哈希算法比对和多媒体特征识别,帮助用户高效管理存储空间,提升文件整理效率。

weixin_27032989的博客 564

【JavaWeb】Servlet API详解

当写Servlet代码的时候,首先就是要创建类,然后继承这个HttpServlet这个类,重写里面的方法。上面的代码中或多或少已经使用到了这个类,这个类就是服务器给客户端返回响应用的。Servlet程序销毁前会使用一次destroy方法。Servlet程序的生命周期和它上面的方法息息相关。该类是通过Tomcat解析构造后表示的HTTP请求。Servlet程序启动的时候使用一次init方法。使用Postman构造浏览器请求。Postman构造的前端请求。使用ajax构造浏览器请求。通过上面的方法,我们只是。

p_fly的博客 3113

霍尔式流量计背后的技术和算法

例如,在一项实验中,当流量低于最小操作范围(0.250 L/min)时,误差比其他流量大,但仍然在95%的精度范围内可接受。例如,在Honeywell电子学的测试中,使用30英寸水柱的压力计和热电偶测量气体特性,记录并计算实际和理论质量流量,以确定修正系数。霍尔式流量计的校准系数是通过一系列精确的测量和计算步骤确定的,以确保其测量结果的准确性和可靠性。霍尔式流量计的校准系数是通过严格的环境条件、精确的测量步骤和实验数据确定的。其中,Qs是标尺介质的流量,K是修正系数,Qm是用户介质的流量。

百态·数智思维 | 聚焦大数据、量化与未来AI 1233

差分逻辑电平——LVDS、CML、LVPECL、HCSL互连

首先了解差分逻辑电平结构,也包括单端逻辑电平常见的逻辑电平_常用的逻辑电平-优快云博客注:ECL >> PECL >> LVPECL演变而来;QDR(Quad Data Rate):四倍数据倍率本文章只涉及差分逻辑电平:LVDS 、LVPECL、CML (高速)(最常用)在任何给定的系统设计中,必须设计驱动器侧和接收器侧之间的时钟逻辑转换。通过在它们之间增加衰减电阻和偏置电路来将一个差分时钟转换为其他类型的差分逻辑,来衰减摆幅电平并重新偏置共模输入接收器。

weixin_45365488的博客 4万+

Servlet API详解

Servlet API详解

如风暖阳的博客 1441

CANOE-介绍 @014-基于CAPL的Someip测试(CANOE 15.0/16.0/17.0)【草稿】发送事件、方法

摘要:本文介绍了使用CANoe 16.0及更高版本配置SOME/IP测试环境的方法,包括硬件连接、工程配置和CAPL代码实现。SOME/IP是一种面向服务的车载通信协议,支持服务发现、事件推送和方法调用。文章详细说明了网络拓扑配置、数据库文件加载等步骤,并提供了CAPL代码示例,展示如何初始化多个应用端点(15个不同端口)和服务实例(73个服务),通过SomeIpOpenLocalApplicationEndpoint和SomeIpCreateProvidedServiceInstance函数实现。配置过程

沿流不止 424

SpringMVC教程之如何使用POJO作为参数

一、前言 前面我们学习了@RequestParam注解,可以获得请求的参数,但是如果前台传来的是一个表单,表单中有很多参数,那么这个时候使用@RequestParam注解一个一个去映射的话,方法中就会有N多个注解在里面,显然这种方式获取参数是不可取的。这个时候我们可以使用一个Java对象来获得请求参数。 Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性...

Java小蚂蚁 634

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

springmvc五:使用pojo作为参数

将pojo中的每一个属性,从request参数中尝试取出来,并封装即可。 1. jsp页面中使用pojo中的属性作为input的name属性 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <% String path = request.getContextPat...

m0_37564426的博客 560

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

springmvc 请求 POJO类型参数

POJO类型参数 就是成员类创建的对象, //方法传递POJO类型参数,URL地址中的参数作为POJO的属性直接传入对象 //http://localhost/requestParam3?name=Jock&age=39 @RequestMapping("/requestParam3") public String requestParam3(User user){ System.out.println(user); return "page

酆都城博客 238

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【SpringMvc学习及总结09】请求参数为pojo时,SpringMvc会自动封装

文章目录1.请求参数是个pojo,且属性都是基本类型/String类型2.请求参数是pojo,且属性为引用类型3.中文乱码问题 1.请求参数是个pojo,且属性都是基本类型/String类型 如果我们的请求参数是一个自定义类型pojo,SpringMvc会获取请求参数,自动为该pojo的属性赋值。 前提要求:请求参数的名称和对象的属性名称必须一致。 <form action="book" m...

你今天真好看呀 839

SpringMVC 使用 POJO 对象绑定请求参数值

在实际开发中如果参数太多就不能使用@RequestParam去一个一个的映射了,需要定义一个实体参数对象(POJO)来映射请求参数。 Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。 例如 UserInfo.class类 package com.user; import lombok.Getter; import lombok...

Hern(宋兆恒) 799

12. SpringMVC_使用POJO作为参数

使用 POJO 对象绑定请求参数值 • Spring MVC 会按请求参数名和 POJO 属性名进行自动匹 配,自动为该对象填充属性值。支持级联属性。 如:dept.deptId、dept.address.tel 等 enty  java code public class Address { private String provinc

hellowindowns的博客 350

SpringMVC使用 POJO 对象绑定请求参数值

使用 POJO 对象绑定请求参数值 1.下面以普通实体类作为例子 • Spring MVC 会按请求参数名和 POJO 属性名进行自动匹 配,自动为该对象填充属性值。支持级联属性。 如:dept.deptId、dept.address.tel 等 ...

qq_42337368的博客 551

SpringMVC---使用POJO绑定请求参数值

一:使用POJO绑定请求参数值 SpringMVC会按照请求参数名跟POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性(Address.street等) 二:代码实现 1.创建实体类User和Address. package com.dhx.pojo; public class Address { private String city; private String ...

qq_39093474的博客 301

SpringMVC系列(四)使用 POJO 对象绑定请求参数

在实际开发中如果参数太多就不能使用@RequestParam去一个一个的映射了,需要定义一个实体参数对象(POJO)来映射请求参数。Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。如:address.province、address.city等。1.定义需要的请求参数的实体 User.java [Java]纯文本查看复制代码 ...

xiaoyaGrace的博客 315

SpringMVC——POJO对象绑定请求参数

使用POJO对象绑定请求参数值Spring MVC 会按请求参数名和POJO属性名进行自动匹配,自动为该对象填充属性,支持级联属性 。如:dept.deptId、dept.address.tel实例:user.javapublic class User { private String username; private String password; private St

空城的博客 554

springMVC中 接受前端传来的参数 目标方法参数为pojo类型参数时会将此对象自动放入request作用域中?

首先 SpringMVC如何确定目标方法POJO类型参数? SpringMVC 确定目标方法 POJO 类型入参的过程 1. 确定一个 key: 1). 若目标方法的 POJO 类型的参数木有使用 @ModelAttribute 作为修饰, 则 key 为 POJO 类名第一个字母的小写 2). 若使用了 @ModelAttribute 来修饰, 则 key 为 @ModelAttribute ...

qq_41615446的博客 866

SpringMVC_RequestParam注解,RequestHeader注解,CookieValue注解,使用POJO作为参数

qq_44772414的博客 2万+

SpringMVC-使用POJO作为参数&使用Servlet原生API作为参数

SpringMVC RequestParam 注解 请求值 新建一个testRequestParam方法 /** * @RequestParam 来映射请求参数. * value 值即请求参数的参数名 * required 该参数是否必须. 默认为 true * defaultValue 请求参数的默认值 */ @RequestMapping(value=...

Aqours的博客 268
上一篇: SpringMVC_CookieValue 注解
下一篇: SpringMVC_使用Servlet原生API作为参数
hoho_12
博客等级 码龄13年 3225粉丝 624原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值