一、响应
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)
展示页面的保存位置通常固定,且结构相似,可以设定通用的访问路径,简化页面配置格式
代码语言:javascript复制<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
/bean>
代码语言:javascript复制public String showPage3() {
return "page";
}
如果未设定了返回值,使用void类型,则默认使用访问路径作页面地址的前缀后缀
代码语言:javascript复制//最简页面配置方式,使用访问路径作为页面名称,省略返回值
@RequestMapping("/showPage5")
public void showPage5() {
System.out.println("user mvc controller is running ...");
}
3.带数据页面跳转
方式一:使用HttpServletRequest类型形参进行数据传递
代码语言:javascript复制@RequestMapping("/showPageAndData1")
public String showPageAndData1(HttpServletRequest request) {
request.setAttribute("name","itheima");
return "page";
}
方式二:使用Model类型形参进行数据传递
代码语言:javascript复制@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类型形参进行数据传递,将该对象作为返回值传递给调用者
代码语言:javascript复制//使用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数据
代码语言:javascript复制//使用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数据
代码语言:javascript复制//使用SpringMVC注解驱动,对标注@ResponseBody注解的控制器方法进行结果转换,由于返回值为引用类型,自动调用jackson提供的类型转换器进行格式转换
@RequestMapping("/showData4")
@ResponseBody
public Book showData4() {
Book book = new Book();
book.setName("SpringMVC入门案例");
book.setPrice(66.66d);
return book;
}
需要手工添加信息类型转换器
代码语言:javascript复制<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注解驱动简化配置
代码语言:javascript复制<!--开启springmvc注解驱动,对@ResponseBody的注解进行格式增强,追加其类型转换的功能,具体实现由MappingJackson2HttpMessageConverter进行-->
<mvc:annotation-driven/>