Spring MVC处理响应附案例详解

这篇具有很好参考价值的文章主要介绍了Spring MVC处理响应附案例详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、配置视图解析器

二、控制器方法的返回值

2.1 返回值为void

2.1.1 控制器方法

2.1.2 jsp页面

2.1.3 测试结果

2.2 返回值为String

2.2.1 控制器方法

2.2.2 测试结果

2.3 返回值为ModelAndView

2.3.1 控制器方法

2.3.2 JSP页面

2.3.3 测试结果 

三、某些会话对象设置数据

3.1 request域设置数据

3.1.1 使用参数为原生的HttpServletRequest

3.1.2 使用参数为Model和ModelMap

3.1.3 使用参数为Map集合

3.2 session域设置数据

3.2.1 控制器方法

3.2.2 测试结果 

3.3 context域设置数据

3.2.1 控制器方法

3.2.2 测试结果 

四、请求转发&重定向

4.1 原生请求转发重定向写法

4.1.1 重定向控制器方法

4.1.2 重定向测试结果

4.1.3 请求转发测试结果

4.2 springmvc提供的请求转发重定向写法

往期专栏&文章相关导读 

1. Maven系列专栏文章

2. Mybatis系列专栏文章

3. Spring系列专栏文章

4. Spring MVC系列专栏文章 


一、配置视图解析器

SpringMVC默认情况下会在控制器执行完成后跳转到视图页面,视图解析器能找到相应的视图,之前的404异常就是由于没有配置视图解析器导致找不到视图。在SpringMVC中提供了13个视图解析器,用于支持不同的视图技术。InternalResourceViewResolver是SpringMVC的默认视图解析器,用来解析JSP视图。

添加如下标签就算配置视图解析器了 

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

二、控制器方法的返回值

我们可以通过控制器方法的返回值设置跳转的视图,控制器方法支持以下返回值类型:

2.1 返回值为void

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

2.1.1 控制器方法

    /**
     * SpringMVC处理响应——控制器方法(根据返回值)
     */
    // 路径是helloMVC,方法执行完后会跳转到/helloMVC.jsp
    @RequestMapping("helloMVC")
    public void helloMVC(){
        System.out.println("hello SpringMVC!");
    }

2.1.2 jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>MVC</title>
</head>
<body>
    <h1>欢迎来到SpringMVC!</h1>
</body>
</html>

2.1.3 测试结果

访问路径:http://localhost:8080/helloMVC

Spring MVC处理响应附案例详解

 OK,确实返回了jsp页面

2.2 返回值为String

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

2.2.1 控制器方法

// 返回值是String,此时会跳转到名字是 前缀+返回值+后缀 的jsp页面
    @RequestMapping("c2/hello1")
    public String helloMVC1(){
        System.out.println("Hello SpringMVC!");
        return "helloMVC";
    }

2.2.2 测试结果

访问路径:http://localhost:8080/c2/hello1

Spring MVC处理响应附案例详解

OK,这次返回的也不是helloMVC1页面,确实成功实现了。 

2.3 返回值为ModelAndView

        这是SpringMVC提供的对象,该对象可以向request域设置数据并指定跳转的页面。该对象中包含Model对象和View对象。

  1. Model:向request域中设置数据。
  2. View:指定跳转的页面。

2.3.1 控制器方法

// 返回值为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("username","黄庆禧");
        // 4.使用view对象设置跳转的路径
        modelAndView.setViewName("lyl-HQX");
        return modelAndView;
    }

OK,这里设置了一个username的属性,属性值为黄庆禧

2.3.2 JSP页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>lyl-HQX</title>
</head>
<body>
<h1>name: 你好!${requestScope.name}</h1>
  <h1>username: 你好!${requestScope.username}</h1>
  <h1>request-Map 你好!${requestScope.usernameMap}</h1>
  <h1>session 地址是:${sessionScope.address}</h1>
  <h1>context 年龄是:${applicationScope.age}</h1>
</body>
</html>

OK,这里解释一下,这里用到的参数是后面需要的。

2.3.3 测试结果 

Spring MVC处理响应附案例详解

OK,确实可以成功打印出黄庆禧的名字了。 

三、某些会话对象设置数据

        当控制器返回值为ModelAndView时我们可以向request域设置数据,我们还有以下方法可以向request域设置数据:

3.1 request域设置数据

3.1.1 使用参数为原生的HttpServletRequest

控制器方法

    /**
     * SpringMVC处理响应-request域
     */
    // 使用原生的HttpServletRequest
    @RequestMapping("/c2/hello3")
    public String setRequestModel(HttpServletRequest request){
        request.setAttribute("username","会洗碗的CV工程师");
        return "lyl-HQX";
    }

OK,username属性值为会洗碗的CV工程师,看一下能否成功获取 

测试结果

Spring MVC处理响应附案例详解

OK,可以看到确实成功获取了。 接下来尝试其他一些参数。

3.1.2 使用参数为Model和ModelMap

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

控制器方法

//使用Model、ModelMap
    @RequestMapping("/c2/hello4")
    public String setRequestModel2(Model model, ModelMap modelMap){
        // 使用Model将数据存入request域
        model.addAttribute("username","LYL");
        // 使用ModelMap将数据传入request域
        modelMap.addAttribute("usernameMap","HQX");
        return "lyl-HQX";
    }

测试结果

Spring MVC处理响应附案例详解

OK,可以看得到两个属性都已经成功获取。 

3.1.3 使用参数为Map集合

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

控制器方法

// 使用Map集合
    @RequestMapping("/c2/hello5")
    public String setRequestModel3(Map map){
        map.put("username","程序员");
        map.put("usernameMap","程序员");
        return "lyl-HQX";
    }

测试结果

Spring MVC处理响应附案例详解

OK,可以看得出来和上面也是一样可以使用的。 

3.2 session域设置数据

        Session作用域表示在当前会话中有效。在SpringMVC中对于Session作用域传值,只能使用HttpSession对象来实现。

3.2.1 控制器方法

    /**
     * SpringMVC处理响应-session域设置数据
     */
    @RequestMapping("/c2/hello6")
    public String setSessionModel(HttpSession session){
        session.setAttribute("address","北京");
        return "lyl-HQX";
    }

OK,这次是在session域设置了一个地址属性,看一下能否成功获取 

3.2.2 测试结果 

Spring MVC处理响应附案例详解

Ok,可以看到确实成功获取了。 

3.3 context域设置数据

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

3.2.1 控制器方法

    /**
     * SpringMVC处理响应-context域设置数据
     */
    @RequestMapping("/c2/hello7")
    public String setContextModel(HttpSession session){
        ServletContext servletContext = session.getServletContext();
        servletContext.setAttribute("age",10);
        return "lyl-HQX";
    }

这次利用context域设置了一个年龄属性,看一下能否获取对应的值。

3.2.2 测试结果 

Spring MVC处理响应附案例详解

OK,确实成功获取到了。 

四、请求转发&重定向

之前的案例,我们发现request域中的值可以传到jsp页面中,也就是通过视图解析器跳转到视图的底层是请求转发。
如果我们跳转时不想使用视图解析器,可以使用原生HttpServletRequest进行请求转发或HttpServletResponse进行重定向:

4.1 原生请求转发重定向写法

4.1.1 重定向控制器方法

    /**
     * SpringMVC处理响应-请求转发&重定向
     */
    @RequestMapping("/c2/hello8")
    public void myForward1(HttpServletRequest request, HttpServletResponse response) throws Exception{
        request.setAttribute("name","程序员");
        // 请求转发
        //request.getRequestDispatcher("/c2/hello9").forward(request,response);
        // 原生重定向
        response.sendRedirect("/c2/hello9");
    }

OK,这是重定向到/c2/hello9,接下来写一个/c2/hello9的控制器方法,看一下控制台能否打印出来。

    @RequestMapping("/c2/hello9")
    public void myForward2(HttpServletRequest request){
        System.out.println("hello");
        System.out.println(request.getAttribute("name"));
    }

4.1.2 重定向测试结果

Spring MVC处理响应附案例详解

OK,可以看得到确实重定向去了。注意看,这里重定向出来后是无法获取request域的属性值的,待会试一下请求转发可不可以。 重定向地址栏会发生变化,而请求转发地址栏是不会变化的。

4.1.3 请求转发测试结果

Spring MVC处理响应附案例详解

OK,,可以看得到请求转发就可以获取属性值,并且地址栏没有发生变化。

4.2 springmvc提供的请求转发重定向写法

// SpringMVC提供一种关于重定向和请求转发更为简单的写法
    @RequestMapping("/c2/hello10")
    public String myForward3(HttpServletRequest request){
        request.setAttribute("name","程序员");
        // 请求转发
        return "forward:/c2/hello9";
        // 重定向
        //return "redirect:/c2/hello9";
    }

 OK,本次就学习到这里,有兴趣的朋友可以看一下我下面的专栏文章。

往期专栏&文章相关导读 

     大家如果对于本期内容有什么不了解的话也可以去看看往期的内容,下面列出了博主往期精心制作的Maven,Mybatis等专栏系列文章,走过路过不要错过哎!如果对您有所帮助的话就点点赞,收藏一下啪。其中Spring专栏有些正在更,所以无法查看,但是当博主全部更完之后就可以看啦。

1. Maven系列专栏文章

Maven系列专栏 Maven工程开发
Maven聚合开发【实例详解---5555字】

2. Mybatis系列专栏文章

Mybatis系列专栏 MyBatis入门配置
Mybatis入门案例【超详细】
MyBatis配置文件 —— 相关标签详解
Mybatis模糊查询——三种定义参数方法和聚合查询、主键回填
Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分)
Mybatis分页查询——四种传参方式
Mybatis一级缓存和二级缓存(带测试方法)
Mybatis分解式查询
Mybatis关联查询【附实战案例】
MyBatis注解开发---实现增删查改和动态SQL
MyBatis注解开发---实现自定义映射关系和关联查询

3. Spring系列专栏文章

Spring系列专栏 Spring IOC 入门简介【自定义容器实例】
IOC使用Spring实现附实例详解
Spring IOC之对象的创建方式、策略及销毁时机和生命周期且获取方式
Spring DI简介及依赖注入方式和依赖注入类型
Spring IOC相关注解运用——上篇
Spring IOC相关注解运用——下篇
Spring AOP简介及相关案例
注解、原生Spring、SchemaBased三种方式实现AOP【附详细案例】
Spring事务简介及相关案例
Spring 事务管理方案和事务管理器及事务控制的API
Spring 事务的相关配置、传播行为、隔离级别及注解配置声明式事务

4. Spring MVC系列专栏文章 

SpringMVC系列专栏 Spring MVC简介附入门案例
Spring MVC各种参数获取及获取方式自定义类型转换器和编码过滤器
Spring MVC获取参数和自定义参数类型转换器及编码过滤器
Spring MVC处理响应附案例详解
Spring MVC相关注解运用 —— 上篇

Spring MVC相关注解运用 —— 中篇文章来源地址https://www.toymoban.com/news/detail-501989.html

Spring MVC相关注解运用 —— 下篇
Spring MVC多种情况下的文件上传
Spring MVC异步上传、跨服务器上传和文件下载
Spring MVC异常处理【单个控制异常处理器、全局异常处理器、自定义异常处理器】
Spring MVC拦截器和跨域请求
SSM整合案例【C站讲解最详细流程的案例】

到了这里,关于Spring MVC处理响应附案例详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring】Spring MVC请求响应

    访问不同的路径, 就是发送不同的请求。在发送请求时, 可能会带⼀些参数, 所以学习Spring的请求, 主要是学习如何传递参数到后端以及后端如何接收。 传递参数,我们通过postman测试。 正常传递: 可以看到, 后端程序正确拿到了name参数的值。 Spring MVC 会根据⽅法的参数名, 找

    2024年02月08日
    浏览(44)
  • spring mvc 请求与响应

    我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 知识库链接: 请求与响应 · 语雀 1. 请求映射路径 get请求是路径传参,而post请求是body传参

    2024年01月25日
    浏览(52)
  • 【Java EE】关于Spring MVC 响应

    在博主前面写的博客 【Java EE】Spring请求如何传递参数详解 中我们已经设置了响应数据,Http响应结果可以是数据,也可以是静态⻚⾯,也可以针对响应设置状态码, Header信息等 首先我们像创建一个静态界面,创建位置如下: 前端代码如下: 不过这里的后端的代码和以前的代码

    2024年04月14日
    浏览(46)
  • 【Spring MVC学习】连接 && 接收请求参数 && 响应返回参数

    目录 前言:认识Spring MVC 🌷1、什么是MVC? 一、建立连接(5个注解) 🌷1、@RequestMapping注解:注册接⼝的路由映射(默认返回页面) 🌷2、@ResponseBody注解:表示返回的是数据 🌷 3、组合注解@RestController = @ResponseBody + @Controller 🌷4、支持Get请求的2种写法@GetMapping + @RequestMapp

    2024年02月16日
    浏览(39)
  • 43、基于 springboot 自动配置的 spring mvc 错误处理,就是演示项目报错后,跳转到自定义的错误页面

    Spring MVC 的错误处理:基于 SpringBoot 自动配置之后的 Spring MVC 错误处理。 就是访问方法时出错,然后弄个自定义的错误页面进行显示。 方式一: 基于Spring Boot自动配置的错误处理方式,只要通过属性文件即可配置错误处理行为。 提供自定义的错误页面即可。 方式二: 使用

    2024年02月10日
    浏览(47)
  • 案例14 Spring MVC文件上传案例

    基于Spring MVC实现文件上传: 使用commons-fileupload实现上传文件到本地目录。 实现上传文件到阿里云OSS和从阿里云OSS下载文件到本地。 选择Maven快速构建web项目,项目名称为case14-springmvc03。 ​ src.main.resources目录下创建spring-mvc.xml。 在src.main.java.com.wfit.upload目录下创建UploadContr

    2024年02月13日
    浏览(41)
  • 案例13 Spring MVC参数传递案例

    基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。 选择Maven快速构建web项目,项目名称为case13-springmvc02。 ​ src.main路径下,执行new – Directory操作,选择java、resources后,执行回车键。 ​ 在web.xml中配置DispatcherServlet。 src.main.java.

    2024年02月13日
    浏览(47)
  • Spring MVC入门案例!!!

    idea如何建立web项目???-CSDN博客 index.jsp: success.jsp

    2024年01月16日
    浏览(35)
  • servlet -> spring-mvc -> spring-boot-> spring-security目录

    springMVC 启动源码 spring-boot注册servlet 3.多种方式注册servlet spring-boot自动注入DispatchServlet spring-security核心配置解读(粗) spring-security源码解读(新)

    2024年02月09日
    浏览(43)
  • Spring MVC简介附入门案例

    目录   一、SpringMVC简介 1.1 MVC模型 1.2 SpringMVC 二、SpringMVC入门案例 2.1 创建项目 2.2 引入依赖和tomcat插件 2.3 修改web.xml文件  2.4 新建springmvc.xml文件 2.5 编写控制器  2.6 配置运行方式 2.7 运行测试  三、SpringMVC执行流程 3.1 SpringMVC的组件 3.2 组件的工作流程 往期专栏文章

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包