【愚公系列】2023年06月 Java教学课程 137-Spring MVC框架的Response响应详解

举报
愚公搬代码 发表于 2023/06/30 23:04:54 2023/06/30
【摘要】 一、响应Spring MVC框架中的Response响应指的是处理器方法返回值被转换成HTTP响应的对象,其中包含了响应的状态、内容等信息。状态码说明&&详情100继续 && 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101切换协议 && 请求者已要求服务器切换协议,服务器已确认并准备切换。200(OK)成功 && 服务器已成功处理了请求。201已创...

一、响应

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/>


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。