提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringMVC之参数获取
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
在 SpringMVC 框架中,获取请求参数是常见的操作之一。无论是处理表单提交、查询字符串还是路径变量,SpringMVC 都提供了方便的机制来获取这些参数。在这篇博客中,我们将深入探讨 SpringMVC 中获取请求参数的各种方式。
通过阅读这篇博客,你将了解如何通过注解和手动解析的方式获取请求参数。无论你是 SpringMVC 的新手还是有经验的开发者,这篇博客都将为你提供有用的信息和实际的示例,帮助你更好地理解和应用 SpringMVC 中参数获取的相关知识。让我们开始探索 SpringMVC 的参数获取世界吧!
提示:以下是本篇文章正文内容,下面案例可供参考
SpringMVC支持参数注入的方式用于获取请求数据,即将请求参数直接封装到方法的参数当中。用法如下:
// 获取简单类型参数
@RequestMapping("/c1/param1")
// 当请求参数中有username和age时,会自动赋给simpleParam函数
public void simpleParam(String username, int age) {
System.out.println(username);
System.out.println(age);
}
当你访问/c1/param1时,SpringMVC会将请求参数中的username和age封装到控制器方法的参数中,从而实现简单数据类型的封装。
在SpringMVC中,你可以将请求参数封装为单个对象。用法如下:
1.编写实体类:创建一个包含请求参数对应属性的实体类。
public class Student {
private int id;
private String name;
private String sex;
// 省略getter/setter/tostring
}
2.编写控制器方法:在控制器方法中,定义一个与实体类对应的参数。
// 获取对象类型参数
@RequestMapping("/c1/param2")
public void objParam(Student student){
System.out.println(student);
}
3.访问该方法:请求参数名和方法参数的属性名相同,即可完成自动封装。
如:http://localhost:8080/c1/param2?id=1&name=bz&sex=female
1.编写实体类:创建一个包含请求参数对应属性的实体类。
public class Address {
private String info; //地址信息
private String postcode; //邮编
// 省略getter/setter/tostring
}
public class Student {
private int id;
private String name;
private String sex;
private Address address; // 地址对象
// 省略getter/setter/tostring
}
2.编写控制器方法:在控制器方法中,定义一个与实体类对应的参数。
// 获取关联对象类型参数
@RequestMapping("/c1/param3")
public void objParam2(Student student){
System.out.println(student);
}
3.访问该方法:请求参数名和方法参数的属性名相同,即可完成自动封装。
如:http://localhost:8080/c1/param3?id=1&name=bz&sex=female&address.info=beijing&address.postcode=030000
编写控制器方法,绑定简单数据类型List参数,参数前必须添加@RequestParam注解
// 绑定简单数据类型List参数,参数前必须添加@RequestParam注解
@RequestMapping("/c1/param4")
public void listParam(@RequestParam List<String> users){
System.out.println(users);
}
也可以绑定数组类型:
@RequestMapping("/c1/param5")
public void listParam2(@RequestParam String[] users){
System.out.println(users[0]);
System.out.println(users[1]);
}
2.访问该方法:请求参数名和方法参数的属性名相同,即可完成自动封装。
如:http://localhost:8080/c1/param4?users=bj&users=sxt
1.编写实体类:创建一个包含请求参数对应属性的实体类。
public class Student {
private int id;
private String name;
private String sex;
private List<Address> address; // 地址集合
// 省略getter/setter/tostring
}
2.编写控制器方法:在控制器方法中,定义一个与实体类对应的参数。
// 对象中包含集合属性
@RequestMapping("/c1/param6")
public void listParam3(Student student){
System.out.println(student);
}
3.访问该方法:请求参数名和方法参数的属性名相同,即可完成自动封装。
如:http://localhost:8080/c1/param6id=1&name=bz&sex=female&address[0].info=bj&address[0].postcode=100010&address[1].info=sh&address[1].postcode=100011
1.编写实体类:创建一个包含请求参数对应属性的实体类。
public class Student {
private int id;
private String name;
private String sex;
private Map<String,Address> address; // 地址集合
// 省略getter/setter/tostring
}
2.编写控制器方法:在控制器方法中,定义一个与实体类对应的参数。
// 对象中包含Map属性
@RequestMapping("/c1/param7")
public void mapParam(Student student){
System.out.println(student);
}
3.访问该方法:请求参数名和方法参数的属性名相同,即可完成自动封装。
如:
http://localhost:8080/c1/param7?id=1&name=bz&sex=female&address[‘one’].info=bj&address[‘one’].postcode=100010&address[‘two’].info=sh&address[‘two’].postcode=100011
SpringMVC也支持使用Servlet原生对象,在方法参数中定义HttpServletRequest、HttpServletResponse、HttpSession等类型的参数即可直接在方法中使用。
// 使用Servlet原生对象
@RequestMapping("/c1/param8")
public void servletParam(HttpServletRequest request, HttpServletResponse response, HttpSession session){
// 原生对象获取参数
System.out.println(request.getParameter("name"));
System.out.println(response.getCharacterEncoding());
System.out.println(session.getId());
}
提示:这里对文章进行总结:
通过学习这篇博客,你应该对 SpringMVC 中获取请求参数的方法有了更深入的理解。希望这对你在开发 SpringMVC 应用程序时有所帮助。如果你有任何问题或需要进一步了解,请随时在评论中提问。