SpringMVC之处理响应

news/2024/7/7 22:10:28

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringMVC之处理响应


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、配置视图解析器
  • 二、处理响应
    • 返回值为void
    • 返回值为void
    • 返回值为ModelAndView
    • request域设置数据
      • 使用原生的HttpServletRequest
      • 使用Model、ModelMap
      • 使用Map集合
    • session域设置数据
    • context域设置数据
    • 请求转发、重定向
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:
在 SpringMVC 框架中,处理响应是 Web 应用程序开发中至关重要的一环。它决定了客户端将收到什么样的信息,无论是成功的结果、错误提示还是其他类型的响应。在这篇博客中,我们将深入探讨 SpringMVC 中处理响应的各种方式。
无论你是 SpringMVC 的新手还是有经验的开发者,这篇博客都将为你提供有用的信息和实际的示例,帮助你更好地理解和应用 SpringMVC 中响应处理的相关知识。让我们开始探索 SpringMVC 的响应世界吧!


提示:以下是本篇文章正文内容,下面案例可供参考

一、配置视图解析器

在 SpringMVC 中,配置视图解析器是为了将控制器处理后的结果与相应的视图进行关联,以便渲染并展示给用户。
视图解析器的主要作用是根据请求的信息和控制器返回的逻辑视图名称,确定实际要渲染的视图资源。它解析逻辑视图名称,并将其转换为实际的视图文件路径或 URL。
通过配置视图解析器,SpringMVC 可以根据不同的请求和逻辑视图名称,选择合适的视图来呈现响应内容。这样可以实现页面的动态渲染,根据用户请求和业务逻辑展示相应的页面或数据。
InternalResourceViewResolver是SpringMVC的默认视图解析器,用来解析JSP视图。在springmvc.xml核心配置文件中添加以下内容

<!-- 视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <!-- 视图前缀 -->
  <property name="prefix" value="/" />
  <!-- 视图后缀 -->
  <property name="suffix" value=".jsp" />
</bean>

二、处理响应

返回值为void

此时会跳转到名字是 前缀+方法路径名+后缀 的jsp页面
例如:

// 路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp
@RequestMapping("/helloMVC")
public void helloMVC(){
  System.out.println("hello SpringMVC!");
}

路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp

返回值为void

此时会跳转到名字是 前缀+返回值+后缀 的jsp页面
例如:

// 返回值为String
@RequestMapping("/c2/hello1")
public String helloMVC1(){
  System.out.println("hello SpringMVC!");
  // 方法执行完后会跳转到/helloMVC.jsp
  return "hello";
}

路径是helloMVC,方法执行完后会跳转到/hello.jsp

返回值为ModelAndView

这是SpringMVC提供的对象,该对象可以向request域设置数据并指定跳转的页面。该对象中包含Model对象和View对象。其中,Model对象用于向request域中设置数据。View对象用于指定跳转的页面,例如,如果View里面储存的是index,则跳转的路径为/index.jsp

// 返回值为ModelAndView
@RequestMapping("/c2/hello2")
public ModelAndView useMAV(){
  System.out.println("返回值类型为ModelAndView");
  // 1.创建ModelAndView对象
  ModelAndView modelAndView = new ModelAndView();
  // 2.获取Model对象,本质是一个Map
  Map<String, Object> model = modelAndView.getModel();
  // 3.使用Model对象向request域设置数据
  model.put("name","百战程序员");
  // 4.使用View对象设置跳转的路径为/baizhan.jsp
  modelAndView.setViewName("index");
  return modelAndView;
}

方法执行完后会跳转到/index.jsp

request域设置数据

使用原生的HttpServletRequest

@RequestMapping("/c2/hello3")
public String setRequestModel(HttpServletRequest request){
  request.setAttribute("username","张三");
  return "index";
}

使用Model、ModelMap

SpringMVC提供了Model接口和ModelMap类,控制器方法添加这两个类型的参数,使用该参数设置数据,该数据就会存到request域中。

@RequestMapping("/c2/hello4")
public String setRequestModel2(Model model, ModelMap modelMap){
  // 使用Model将数据存入request域
  // model.addAttribute("username","张三");
  // 使用ModelMap将数据存入request域
  modelMap.addAttribute("username","张三");
  return "index";
}

使用Map集合

Model接口底层就是一个Map集合,我们可以给控制器方法设置Map类型的参数,向Map中添加键值对,数据也会存到request域中。

@RequestMapping("/c2/hello5")
public String setRequestModel3(Map map){
  map.put("username","张三");
  return "index";
}

session域设置数据

@RequestMapping("/c2/hello6")
public String setSeesionModel(HttpSession session){
  session.setAttribute("address","北京");
  return "index";
}

context域设置数据

context作用域表示在整个应用范围都有效。在SpringMVC中对context作用域传值,只能使用ServletContext对象来实现。但是该对象不能直接注入到方法参数中,需要通过HttpSession对象获取。

@RequestMapping("/c2/hello7")
public String setContextModel(HttpSession session){
  ServletContext servletContext = session.getServletContext();
  servletContext.setAttribute("age",10);
  return "index";
}

请求转发、重定向

SpringMVC还提供了一种简单的请求转发和重定向的写法:

@RequestMapping("/c2/hello10")
public String myForward3(HttpServletRequest request){
  request.setAttribute("name","尚学堂");
  // 请求转发
  return "forward:/c2/hello9";
  // 重定向
  // return "redirect:/c2/hello9";
}


总结

提示:这里对文章进行总结:

通过学习这篇博客,你应该对 SpringMVC 处理响应的方法有了更深入的理解。希望这对你在开发 SpringMVC 应用程序时有所帮助。如果你有任何问题或需要进一步了解,请随时在评论中提问。


http://lihuaxi.xjx100.cn/news/1908029.html

相关文章

Python个人生产力终端看板应用程序

特点 在底层使用 rich 来处理用户输入并向终端显示漂亮的看板。每个任务在每个面板上都有一个唯一的 ID&#xff0c;并且还具有与其关联的可选标签和截止日期&#xff0c;这些信息显示在其标题旁边。 利用 platformdirs user_config_dir 来保存配置文件和用于板特定任务文件的…

LA@线性代数学习总结@主要对象和问题@思想方法

文章目录 线性代数研究对象主要问题联系核心概念核心定理 核心操作和运算基础高级小结 性质和推导方法问题转换为线性方程组求解问题验证和推导性质定理 线性代数研究对象 线性代数的研究对象主要是行列式和矩阵(向量)矩阵这种对象可以做的操作和运算很多,特别是方阵,它们的计…

配置BGP的基本示例

BGP简介 定义 边界网关协议BGP&#xff08;Border Gateway Protocol&#xff09;是一种实现自治系统AS&#xff08;Autonomous System&#xff09;之间的路由可达&#xff0c;并选择最佳路由的距离矢量路由协议。早期发布的三个版本分别是BGP-1&#xff08;RFC1105&#xff0…

使用PE信息查看工具和Beyond Compare文件比较工具排查dll文件版本不对的问题

目录 1、问题说明 2、修改了代码&#xff0c;但安装版本还是有问题 3、使用PE信息查看工具查看音视频库文件&#xff08;二进制&#xff09;的时间戳 4、使用Beyond Compare比较两个库文件的差异 5、找到原因 6、最后 C软件异常排查从入门到精通系列教程&#xff08;专栏…

Flink 状态管理与容错机制(CheckPoint SavePoint)的关系

一、什么是状态 无状态计算的例子&#xff1a; 例如一个加法算子&#xff0c;第一次输入235那么以后我多次数据23的时候得到的结果都是5。得出的结论就是&#xff0c;相同的输入都会得到相同的结果&#xff0c;与次数无关。 有状态计算的例子&#xff1a; 访问量的统计&#x…

cmakelists.txt中install函数/命令

原文链接install — CMake 3.28.1 Documentation install Contents install Synopsis Introduction Signatures Examples Example: Install Targets with Per-Artifact Components Example: Install Targets to Per-Config Destinations Generated Installation Script …

git 杂项

----------------------------------------------------------- 1. Failed to connect to github.com port 443 连接超时 ----------------------------------------------------------- $ git config --global --https.sslVerify "false" 它会在全局配置文件中, 通常…

【MIKE】MIKE河网编辑器操作说明

目录 MIKE河网编辑器说明河网定义河网编辑工具栏河网文件(.nwk11)输入步骤1. 从传统的地图引入底图1.1 底图准备1.2 引入河网底图1.3 输入各河段信息2. 从ARCView .shp文件引入底图MIKE河网编辑器说明 河网编辑器主要功能有两个: ①河网的编辑和参数输人,包括数字化河网及…