前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年04月 Java教学课程 137-Spring MVC框架的Response响应详解

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

作者头像
愚公搬代码
发布2023-04-21 19:12:55
4130
发布2023-04-21 19:12:55
举报
文章被收录于专栏:历史专栏


一、响应

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下的页面
代码语言:javascript
复制
@RequestMapping("/showPage1")
public String showPage1() {
    System.out.println("user mvc controller is running ...");
    return "forward:page.jsp";
}
  • 重定向: 重定向访问,不支持访问WEB-INF下的页面
代码语言:javascript
复制
@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/>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、响应
    • 1.页面跳转
      • 2.页面访问快捷设定 (InternalResourceViewResolver)
        • 3.带数据页面跳转
          • 4.返回json数据
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档