【愚公系列】2023年06月 Java教学课程 137-Spring MVC框架的Response响应详解
一、响应
Spring MVC框架中的Response响应指的是处理器方法返回值被转换成HTTP响应的对象,其中包含了响应的状态、内容等信息。
状态码 |
说明&&详情 |
|
100 |
继续 && 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 |
|
101 |
切换协议 && 请求者已要求服务器切换协议,服务器已确认并准备切换。 |
|
200(OK) |
成功 && 服务器已成功处理了请求。 |
|
201 |
已创建 && 请求成功并且服务器创建了新的资源。 |
|
202 |
已接受 && 服务器已接受请求,但尚未处理。 |
|
203 |
非授权信息 && 服务器已成功处理了请求,但返回的信息可能来自另一个源。 |
|
204 |
无内容 && 服务器成功处理了请求,但没有返回任何内容。 |
|
205 |
重置内容 && 服务器成功处理了请求,内容被重置。 |
|
206 |
部分内容 && 服务器成功处理了部分请求。 |
|
300 |
多种选择 && 针对请求,服务器可执行多种操作。 |
|
301(Moved Permanently[重定向]) |
永久移动 && 请求的网页已永久移动到新位置,即永久重定向。 |
|
302(Moved Permanently[重定向]) |
临时移动 && 请求的网页暂时跳转到其他页面,即暂时重定向。 |
|
303 |
查看其他位置 && 如果原来的请求是POST,重定向目标文档应该通过GET提取。 |
|
304 |
未修改 && 此次请求返回的网页未修改,继续使用上次的资源。 |
|
305 |
使用代理 && 请求者应该使用代理访问该网页。 |
|
307 |
临时重定向 && 请求的资源临时从其他位置响应。 |
|
400(Bad Request) |
错误请求 && 服务器无法解析该请求。 |
|
401 |
未授权 && 请求没有进行身份验证或验证未通过。 |
|
403(Forbidden) |
禁止 && 服务器拒绝此次请求。 |
|
404(Not Found) |
未找到 && 服务器找不到请求的网页。 |
|
405 |
方法禁用 && 服务器禁用了请求中指定的方法。 |
|
406 |
不接受 && 无法使用请求的内容响应请求的网页。 |
|
407 |
需要代理授权 && 请求者需要使用代理授权。 |
|
408 |
请求超时 && 服务器请求超时。 |
|
409 |
冲突 && 服务器在完成请求时发生冲突。 |
|
410 |
已删除 && 请求的资源已永久删除。 |
|
411 |
需要有效长度 && 服务器不接受不含有效长度标头字段的请求。 |
|
412 |
未满足前提条件 && 服务器未满足请求者在请求中设置的其中一个前提条件。 |
|
413 |
请求实体过大 && 请求实体过大,超出服务器的处理能力。 |
|
414 |
请求的URL过长 && 请求网址过长,服务器无法处理。 |
|
415 |
不支持类型 && 请求的格式不被请求页面支持。 |
|
416 |
请求范围不符合要求 && 页面无法提供请求的范围。 |
|
417 |
未满足期望值 && 服务器未满足期望请求标头字段的要求。 |
|
500 |
服务器内部错误 && 服务器遇到错误,无法完成请求。 |
|
501 |
未实现 && 服务器不具备完成请求的能力。 |
|
502 |
错误网关 && 服务器作为网关或代理,从上游服务器收到无效响应。 |
|
503 |
服务不可用 && 服务器目前无法使用。 |
|
504 |
网关超时 && 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
|
505 |
HTTP版本不支持 && 服务器不支持请求中所用的HTTP协议版本。 |
1.页面跳转
• 转发(默认):
• 转发访问,支持访问WEB-INF下的页面
@RequestMapping("/showPage1")
public String showPage1() {
System.out.println("user mvc controller is running ...");
return "forward:page.jsp";
}
• 重定向:
重定向访问,不支持访问WEB-INF下的页面
@RequestMapping("/showPage2")
public String showPage2() {
System.out.println("user mvc controller is running ...");
return "redirect:page.jsp";
}
注意:页面访问地址中所携带的 /
2.页面访问快捷设定 (InternalResourceViewResolver)
展示页面的保存位置通常固定,且结构相似,可以设定通用的访问路径,简化页面配置格式
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
/bean>
public String showPage3() {
return "page";
}
如果未设定了返回值,使用void类型,则默认使用访问路径作页面地址的前缀后缀
//最简页面配置方式,使用访问路径作为页面名称,省略返回值
@RequestMapping("/showPage5")
public void showPage5() {
System.out.println("user mvc controller is running ...");
}
3.带数据页面跳转
• 方式一:使用HttpServletRequest类型形参进行数据传递
@RequestMapping("/showPageAndData1")
public String showPageAndData1(HttpServletRequest request) {
request.setAttribute("name","itheima");
return "page";
}
• 方式二:使用Model类型形参进行数据传递
@RequestMapping("/showPageAndData2")
public String showPageAndData2(Model model) {
model.addAttribute("name","itheima");
Book book = new Book();
book.setName("SpringMVC入门实战");
book.setPrice(66.6d);
model.addAttribute("book",book);
return "page";
}
• 方式三:使用ModelAndView类型形参进行数据传递,将该对象作为返回值传递给调用者
//使用ModelAndView形参传递参数,该对象还封装了页面信息
@RequestMapping("/showPageAndData3")
public ModelAndView showPageAndData3(ModelAndView modelAndView) {
//ModelAndView mav = new ModelAndView(); 替换形参中的参数
Book book = new Book();
book.setName("SpringMVC入门案例");
book.setPrice(66.66d);
//添加数据的方式,key对value
modelAndView.addObject("book",book);
//添加数据的方式,key对value
modelAndView.addObject("name","Jockme");
//设置页面的方式,该方法最后一次执行的结果生效
modelAndView.setViewName("page");
//返回值设定成ModelAndView对象
return modelAndView;
}
4.返回json数据
• 方式一:基于response返回数据的简化格式,返回JSON数据
//使用jackson进行json数据格式转化
@RequestMapping("/showData3")
@ResponseBody
public String showData3() throws JsonProcessingException {
Book book = new Book();
book.setName("SpringMVC入门案例");
book.setPrice(66.66d);
ObjectMapper om = new ObjectMapper();
return om.writeValueAsString(book);
}
• 使用SpringMVC提供的消息类型转换器将对象与集合数据自动转换为JSON数据
//使用SpringMVC注解驱动,对标注@ResponseBody注解的控制器方法进行结果转换,由于返回值为引用类型,自动调用jackson提供的类型转换器进行格式转换
@RequestMapping("/showData4")
@ResponseBody
public Book showData4() {
Book book = new Book();
book.setName("SpringMVC入门案例");
book.setPrice(66.66d);
return book;
}
需要手工添加信息类型转换器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean
• 方式三:使用SpringMVC注解驱动简化配置
<!--开启springmvc注解驱动,对@ResponseBody的注解进行格式增强,追加其类型转换的功能,具体实现由MappingJackson2HttpMessageConverter进行-->
<mvc:annotation-driven/>
- 点赞
- 收藏
- 关注作者
评论(0)