SpringMVC框架 |SpringMVC请求处理


一、SpringMVC获取请求带来的各种信息

1.@RequestParam

@RequestParam:获取请求参数,参数默认是必须带的。

  • value():指定要获取的参数的key。
  • required():规定这个参数是否是必须的。
  • defaultValue():设置默认值。
	@RequestMapping("/handler02")
	public String handler02(
		@RequestParam(value = "username", required = false, defaultValue = "默认值") String username) {
		System.out.println("这个变量的值为:" + username);
		return "success";
	}

使用http://localhost:8080/3.SpringMVC_request/handler02访问,控制台输出:
在这里插入图片描述

2.@RequestHeader

@RequestHeader:获取请求头中某个key的值。

  • value():指定要获取的请求头,如果请求头中没有这个值会报错。
  • required():规定这个参数是否是必须的。
  • defaultValue():设置默认值。
	@RequestMapping("/handler02")
	public String handler02(
			@RequestParam(value = "username", required = false, defaultValue = "默认值") String username,
			@RequestHeader(value="User-Agent",required = false, defaultValue = "默认值") String userAgent) {
		System.out.println("这个变量的值为:" + username);
		System.out.println("请求头中浏览器的信息为:" + userAgent);
		return "success";
	}

使用http://localhost:8080/3.SpringMVC_request/handler02访问,控制台输出:
在这里插入图片描述

3.@CookieValue

@CookieValue:获取请求中带来的某个cookie的值。

  • value():指定要获取的JSESSIONID。
  • required():规定这个参数是否是必须的。
  • defaultValue():设置默认值。
	@RequestMapping("/handler02")
	public String handler02(@RequestParam(value = "username", required = false, defaultValue = "默认值") String username,
			@RequestHeader(value = "User-Agent", required = false, defaultValue = "默认值") String userAgent,
			@CookieValue(value="JSESSIONID", required = false, defaultValue = "默认值") String jid) {
		System.out.println("这个变量的值为:" + username);
		System.out.println("请求头中浏览器的信息为:" + userAgent);
		System.out.println("cookie中的jid的值:" + jid);
		return "success";
	}

二、演示SpringMVC自动封装POJO

如果请求参数是POJO:

  • SpringMVC会将POJO中的每一个属性,从request参数中尝试获取出来,并封装即可。
  • 还可以级联封装。

1.Book类与Address类

  • Book图书对象中嵌套Address对象,这是为了测试级联。
public class Book {
	private String bookName;
	private String author;
	private Double price;
	private Integer stock;
	private Integer sales;
	private Address address;//Address
	//省略setter与getter方法
}

public class Address {
	private String province;
	private String city;
	private String street;
	//省略setter与getter方法
}

2.前端表格

  • 通过表格向Handler提交图书的各种信息。
  • 表格默认为POST请求方式。
	<form action="book" method="post">
		书名:<input type="text" name="bookName"/><br/>
		价格:<input type="text" name="price"/><br/>
		库存:<input type="text" name="stock"/><br/>
		销量:<input type="text" name="sales"/><br/>
		作者:<input type="text" name="author"/><br/>
		<hr/>
		作者省:<input type="text" name="address.province"/><br/>
		作者市:<input type="text" name="address.city"/><br/>
		作者街道:<input type="text" name="address.street"/><br/>
		<input type="submit"/>
	</form>

3.Handler控制器

  • 接收到POST请求过来的数据,封装到book对象中。
	@RequestMapping("/book")
	public String addBook(Book book) {
		System.out.println("需要保存的图书:" + book);
		return "success";
	}

4.测试

在这里插入图片描述
提交后,控制台打印结果如下:

需要保存的图书:Book [bookName=西游记, author=吴承恩, price=100.2, stock=12, sales=6, address=Address [province=河南, city=洛阳, street=老城街]]

该乱码问题可以参照:《SpringMVC解决请求乱码》

三、SpringMVC支持的原生API

Handler方法可以接收的ServletAPI还有:

扫描二维码关注公众号,回复: 10497446 查看本文章
  • HttpServletRequest
  • HttpServletResponse
  • HttpSession
  • java.security.Principal
  • Locale:国际化有关的区域信息对象。
  • InputStream:ServletInputStream inputStream = request.getInputStream();
  • OutputStream:ServletOutputStream outputStream = response.getOutputStream();
  • Reader:BufferedReader reader = request.getReader();
  • Writer:PrintWriter writer = response.getWriter();

控制器

	@RequestMapping("/handle03")
	public String handler03(HttpSession session, HttpServletRequest request) {
		request.setAttribute("reqKey", "reqValue");
		session.setAttribute("sessionKey", "SessionValue");
		return "success";
	}

success页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	
	<body>
		<a>成功666</a>
		请求域中的值:${requestScope.reqParam}<br/>
		session域中的值:${sessionScope.sessionParam}<br/>
	</body>
</html>

测试

通过http://localhost:8080/3.SpringMVC_request/handle03访问资源,成功将HttpSession和HttpServletRequest 的值打印出来。
在这里插入图片描述

发布了451 篇原创文章 · 获赞 1428 · 访问量 45万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/105310530