SpringMVC学习笔记【part4】响应数据类型

SpringMVC框架核心原理与实战应用解析 SpringMVC作为Java EE领域主流的MVC框架,基于Servlet API实现了高度可配置的请求处理流程。其核心采用前端控制器模式,通过DispatcherServlet统一调度HandlerMapping、HandlerAdapter等组件,支持注解驱动开发与RESTful接口设计。在微服务架构中,SpringMVC常作为基础Web层技术,与Spring Boot深度整合后可快速构建生产级应用。本文通过解析请求处理全流程、核心注解矩阵及性能优化策略,帮助开发者掌握拦截器扩展、异步处理等关键技术, 阅读详情

SpringMVC 学习笔记 Part4

1.Controller方法 返回值为String

Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。

@Controller @RequestMapping("/user") 
public class UserController { 

    @RequestMapping("myMVC") 
    public String findOne(Model model) { 
		User user = service.findByName("张三");
        model.addAttribute("user", user); 
        return "success";
    } 
}

springmvc.xml里的视图解析器配置回顾。

	<!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

最后视图解析出来的地址将是 /WEB-INF/pages/success.jsp

2.Controller方法 返回值为void

如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。因为方法返回值写成void的话,springmvc 框架默认会解析@RequestMapping(value="/myMVC") 里的 value 值,并跳转到 myMVC.jsp 这个页面去。

若不想跳转到默认页面去,则可以使用请求转发或者重定向跳转到指定的页面。方法前面小节也介绍过,需要在控制器方法参数中加入 HttpServletRequest request 和 HttpServletResponse response 。

@RequestMapping("myMVC") 
    public String findOne( HttpServletRequest request , HttpServletResponse response ) {
        
		/* 请求转发、重定向或着直接响应数据  */
        
        return ;
    } 
// 请求转发 
	request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request, response);

// 重定向 
	response.sendRedirect(request.getContextPath()+"/success.jsp");

// 直接响应数据 
    response.setCharacterEncoding("UTF-8"); 
    response.setContentType("text/html;charset=UTF-8"); 
    response.getWriter().print("你好");

3.Controller方法 返回值为ModelAndView

ModelAndView对象是Spring提供的一个对象,可以用来调整具体的JSP视图。 ModelAndView 可以传入视图的名称(即跳转的页面),还可以传入对象。

    @RequestMapping("myMVC")
    public ModelAndView findAll() throws Exception { 
        ModelAndView mv = new ModelAndView(); 
        mv.setViewName("success"); // 设置方法结束后跳转到 success.jsp 的页面 
        List<User> users = service.findAll(); 
        mv.addObject("users", users);// 添加对象进 ModelAndView 里 
        return mv;
    }

在success.jsp中,可以用 jstl 来遍历mv对象,首先先要导入 jstl 包。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

查询所有的数据。

    <c:forEach items="${ users }" var="user"> 
    	${ user.username } 
    </c:forEach>

我们在页面上上获取使用的是 requestScope.user取的,所以返回 ModelAndView 类型时,浏览器跳转只能是请求转发。

4. SpringMVC框架提供的转发和重定向

Controller方法返回String类型,想进行请求转发也可以编写成如下。forward 关键字的使用:“forward:转发的JSP路径”,不走视图解析器了,所以不能使用逻辑路径,需要编写完整的路径 。它相当于 request.getRequestDispatcher(“url”).forward(request,response) 。使用请求转发,既可以转发到 jsp,也可以转发到其他的控制器方法。

@RequestMapping("/myMVC")
public String myForward() throws Exception {
     return "forward:/WEB-INF/pages/success.jsp";
}

Controller方法返回String类型,想进行重定向也可以编写成如下。它相当于 response.sendRedirect(“url”) 。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能写在 WEB-INF 目录中,否则无法找到。

@RequestMapping("/myMVC")
public String myRedirect() throws Exception {
     return "redirect:/hello.jsp";
}

5. ResponseBody响应json数据

响应json数据我们需要用到异步技术,这时需要导入jquery的包。但在导入之前,我们需要处理一个问题。DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置。

<!-- 设置静态资源不过滤 --> 
<mvc:resources location="/css/" mapping="/css/**"/>  
<mvc:resources location="/images/" mapping="/images/**"/> 
<mvc:resources location="/js/" mapping="/js/**"/> 

< mvc:recources >属性:

location:表示webapp下的绝对路径
mapping:表示在html中写的路径
例如:
<mvc:resources location="/WEB-INF/ui/js/" mapping="js/**" /> 的意思是:html中写 src=“js/xxxx.js”,就会去/WEB-INF/ui/js文件夹下查找。

首先先来回顾一下 jquery的 异步技术使用方法。

$(function(){ 
    // 绑定点击事件 
    $("#btn").click(function(){ 
        $.ajax({ 
            url:"user/myJson", 
            contentType:"application/json;charset=UTF-8", 
            data:'{"username":"zhangsan","password":"123","age":18}', 
            dataType:"json",
            type:"post",
            success:function(data){ 
                alert(data);
                alert(data.username);
            } 
        });
    });
});

在 json字符串 和 JavaBean对象 互相转换的过程中,需要使用jackson的jar包。

    <dependency> 
        <groupId>com.fasterxml.jackson.core</groupId> 
        <artifactId>jackson-databind</artifactId> 
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId> 
        <version>2.9.0</version> 
    </dependency> 
    <dependency> 
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.9.0</version> 
    </dependency>

@RequestBody注解

在控制器的方法中对 String 类型参数使用 @RequestBody注解 获取请求体内容。

    @RequestMapping("/myJson") 
    public void testJson(@RequestBody String body) { 
        System.out.println(body);
    }

spring框架提供了为我们自动解析json封装为javabean的功能,所以我们在控制器中对 Javabean 类型参数 使用 @RequestBody注解 可以直接转换为 Javabean对象。

    @RequestMapping("/myJson") 
    public void testJson(@RequestBody User user) { 
        System.out.println(user); 
    }

@ResponseBody注解

当需要控制器的方法响应javabean对象给页面时,我们可以使用 @ResponseBody注解 把JavaBean对象转换成json字符串,直接响应。

    @RequestMapping("/testJson") 
    public @ResponseBody User testJson(@RequestBody User user) {  
        user.setAge("20");
        return user;
    }
【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】 粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白! 阅读详情

相关推荐

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南

【Docker】掌握 Docker魔法:Windows 11 平台上的完美容器部署终极指南 一文搞懂什么是 Docker?分析容器的工作原理、容器的架构、Docker的优势、使用 Docker的原因。 全程手把手教你Docker的安装与使用,配置阿里云镜像加速、容器常用命令!

寸铁的博客 10万+

Request与Response

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与...

丢失了名字的琥珀川 539

手把手教你使用YOLOv11模型,训练自己数据集,百分百成功(无废话)

YOLOV11百分百成功训练自己的数据集并进行图像、视频流脚本预测

chenhenGzzz的博客 1954

响应数据格式

响应数据分类: 1.响应行:协议版本,状态码,状态码描述三部分 2.响应头:多对键值对形式 3.响应体:存放响应数据

weixin_60663670的博客 579

ACT代码梳理:新手学具身智能,不需要学会一堆理论,先跑起来再说

我是一个刚接触具身智能的小白。第一次看 ACT 项目,什么 Transformer、VAE、Mujoco、rollout,全是天书。但我没打算先把理论补完。太难,也太慢。我的策略是:直接上手,边做边学,卡在哪就学到哪。这篇文章是我的第一站——带你一起看懂 ACT 项目的整体架构,了解它的核心模块和流程。开始前,我列了 本文出现的18 个关键词,是我一开始完全搞不懂的。你可以先扫一眼,如果不认识的超过 10 个,那我们就是同路人,可以放心往下看了。

qq_17405041的博客 1210

Jetson AGX Orin边缘AI实战:用YOLOv8做目标检测,我的环境配置踩坑与优化记录

本文详细记录了在Jetson AGX Orin上部署YOLOv8目标检测模型的环境配置与优化过程。从JetPack版本确认、PyTorch安装陷阱到Torchvision编译技巧,再到YOLOv8部署和系统级优化,提供了完整的实战指南。特别针对边缘AI设备的特性,分享了CUDA加速、内存管理等性能调优经验,帮助开发者高效完成工业级AI应用部署。

weixin_30839881的博客 378

响应数据的三种形式分别是什么?

响应数据的三种形式是:文本、图像和音频。 文本响应是指以文本形式返回的数据,通常用于返回文本信息或文本文档。 图像响应是指以图像形式返回的数据,通常用于返回图片或图表等。 音频响应是指以音频形式返回的数据,通常用于返回音频文件或音频流。 ...

weixin_35756624的博客 603

整车的智能配电系统

本文探讨了汽车电网安全的重要性,分析了传统汽车电网的现状,并重点介绍了半导体在汽车智能配电系统中的作用。半导体凭借其单向导电性和可控性,如二极管、MOSFET等,提供了更高效、安全的电力控制。通过对比传统保险丝与半导体器件,阐述了半导体在过流保护、电压监测和故障诊断方面的优势,强调其在减少安全隐患、提高能源管理和续航里程方面的贡献。极氪智能配电系统展示了如何运用半导体技术实现整车能源的精细化管理,降低维修成本,减少线束复杂性,提升安全性能。

让你爱上电路设计 1612

服务器的响应数据的类型

前言 1.服务器的响应数据。 2.响应数据的数据类型(准确的说,是文件类型,即文件后缀)。 什么是MIME 1.MIME,就是服务器响应数据的类型。 2. 什么是MIME类型-在把输出结果传送到浏览器上的时候,浏览器必须启动是党的应用程序来处理这个输出文档。这可以通过多种类型MIME(多功能网际邮件扩充协议)来完成。在HTTP中,MIME类型被定义在Content-Type

B_qxzb的专栏 4778

RK3568下MIPI屏幕调试技巧

通过合理配置设备树节点、精确计算像素时钟并完成编译烧录,可高效实现RK3568平台MIPI屏幕的点亮与显示调试。关键在于严格遵循屏幕规格书参数,结合内核日志定位问题,逐步优化时序配置。掌握这一流程后,开发者可快速适配不同分辨率、刷新率的MIPI屏幕,为嵌入式系统显示模块开发奠定基础。如果在调试中遇到特定问题(如驱动匹配失败、时钟计算误差),建议优先查阅屏幕规格书和RK3568芯片手册,或通过内核社区(如Linux-DRI邮件列表)获取支持。

文石_2009的博客 1205

YOLO11优化:TGRS2026 CKConv结合C3k2 | 方向特征与跨阶段融合协同,小目标漏检率大幅下降

多尺度适配小目标尺寸变化:在 C3k2 不同阶段配置 CKConv 不同核尺度(浅层小核捕获精细纹理,深层大核聚合上下文),兼顾局部细节与全局感知,提升对舰船、车辆等小尺寸目标及红外热目标的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 567

Http-请求和响应数据格式

1.请求行:请求数据的第一行:其中get表示请求方式,/表示请求资源路径。1.响应行:响应数据第一行 ,200,状态码表示响应成功。2.请求头:第二行开始,格式为key:value形式。3.请求体:POST请求的最后一部分,存放请求参数。2.响应头:POST请求的最后一部分,存放请求参数。3.响应体:存放响应数据。

qq_43231646的博客 328

【毕设实战】飞行器目标识别系统:基于YOLOv5的智能检测全流程教程,助你毕设脱颖而出

亲爱的同学,毕设是不是让你既期待创新又担心技术门槛?如果你的毕设方向是计算机视觉、智能检测,那这个绝对能成为你的“毕设王牌”。从数据准备到界面开发,我会把整个项目拆成“傻瓜式”步骤,让你能一步步做出属于自己的毕设成果。

know_F0727的博客 106

黑马就业班——SpringMVC框架:part2

1、响应数据和结果视图 1.1 Controller控制器类方法的返回值类型   参考项目:springmvc_day02_01_response 。   controller控制器类的方法可以返回:字符串、void、ModelAndView对象   注意: 1、success.jsp标签记得加:isELIgnored="false"属性,否则在jsp文件无法使用EL表达式! 如:<%@...

LKJgdut的博客 343

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SpringMVC学习笔记【part8】拦截器

SpringMVC 学习笔记 Part8 1. 拦截器的概述 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。用户可以自己定义一些拦截器来实现特定的功能。 拦截器和过滤器Filter的区别: 过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。 过滤器在 url-pattern 中配置了**/***之后,可以对所有要访

Parker_cpp的博客 364

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringMVC-part01什么是SpringMVC

1、SpringMVC ssm:mybatis+Spring+SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力 SpringMVC+Vue+SpringBoot+SpringCloud+Linux SSM=JavaWeb做项目 Spring:IOC和AOP SpringMVC:SpringMVC的执行流程! SpringMVC:SSM框架整合! Spring 1.1

qq_56594964的博客 135

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringMVC:最详细笔记partⅠ

SpringMVC最详细笔记partⅠ 一、springMVC-quickStar 解决maven加载项目过慢 archetypeCatalog internal 导入依赖 <!-- 版本锁定 --> <properties> <spring.version>5.0.2.RELEASE</spring.version> &lt...

Oooops_的博客 498

【JAVA】part4-Java注解

Java注解,简单来说就是放在Java源码的类、方法、字段、参数前的一种特殊“注释”,发挥着其功能。 注解使得Java Web开发变得更加模块化和可配置,同时减少了XML配置的需要,对于简化开发流程和提高开发效率有着重要的作用。

KX_52517的博客 750

SpringMVC-part03RestFul和控制器

3、RestFul和控制器 控制器Controller 在上一节中,我们编写了我们的第一个SpringMVC程序! 狂神说SpringMVC02:第一个MVC程序 现在我们来看看里面的控制器和路径请求的具体内容吧! 3.1控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。 控制器负责解析用户的请求并将其转换为一个模型。 在Spring MVC中一个控制器类可以包含多个方法 在Spring MVC中,对于Controller的配置方式有很多种

qq_56594964的博客 151

SpringBoot专题学习Part14:SpringBoot下的SpringMVC自动配置的内容

Spring Boot已经在内部自动配置好了SpringMVC 那么 具体是自动配置了哪些内容 让我们来了解: 注:英文内容是直接从官网扒的 Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans. 自动配置了ViewResolver(视图解析器) 根据方法的返回值得到视图对象View 然后视图对象决...

"✧treasure mountain✧" 7878

SpringBoot学习5.8-SpringMVC-文件上传

1.配置文件 #是否启用springmvc多分部上传 spring.servlet.multipart.enabled=true # 指定默认上传的文件夹 spring.servlet.multipart.location=F:/springbootlearn # 限制单个文件最大大小(bytes),这里设置为100KB spring.servlet.multipart.max-file-si...

echo的博客 258

SpringBootWeb案例 Part 4

3. 修改员工需求:修改员工信息,然后用户修改员工数据之后,可以3.1 查询回显3.1.1 接口文档参数格式:路径参数响应数据样例:3.1.2 实现思路3.1.3 代码实现3.1.4 启动项目,Postman测试3.1.5 前后端联调 - 查询回显。

weixin_53622554的博客 533

springmvc处理请求源码分析,引用

SpringMVC处理请求源码分析

zxcv2389080547的博客 173

Java0基础_day24_SpringMVC框架_PART1

标签:SpringMVC、SSM、拦截器、代理对象 1.SpringMVC概述 是什么? 为了让web开发更简单、更高效、便于维护升级,引入了SpringMVC。 从名字的角度看,SpringMVC是Spring框架的一个子模块,可以理解为Spring+MVC,这里的MVC是Model、View、Controller是SpringMVC三个核心概念对象的缩写。 从底层实现来看,SpringMVC可以看成是Servlet的高级版本,是加上一些其他功能的框架而已。 从容器的角度看,Spr...

zhugeheihei的博客 302

springmvc中常见的简单的文件上传和下载

一.文件上传: 这里只使用不用导包的part方法 1:上传单个文件 @PostMapping("uploadByPart2") public String uploadByPart2(HttpServletRequest request) throws IOException, ServletException { //找到要存放文件的绝对路径 String realPath = request.getServletContext().getRealPath(

小陈学java 208

SpringMVC-part07Ajax研究

7、Ajax研究 Ajax研究 简介 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 Ajax 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。 在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。Google Suggest能够自动帮你完成搜索单词。 G

qq_56594964的博客 156
上一篇: SpringMVC学习笔记【part3】常用注解
下一篇: SpringMVC学习笔记【part5】本地文件上传
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Parker7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值