SpringMVC SpringMVC响应 一、数据处理及跳转

embedded/2025/2/6 22:10:27/

1. 结果跳转方式

①.ModelAndView

设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面

javascript"><bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"><property name="prefix" value="/html/" /><property name="suffix" value=".html" /><property name="templateMode" value="HTML5"/>
</bean>

对应的controller类

java">/*** 返回ModelAndView对象的方式* @return*/
@RequestMapping("/save3")
public ModelAndView save3(){System.out.println("执行了...");// 创建mv对象ModelAndView mv = new ModelAndView();// 把一些数据,存储到mv对象中mv.addObject("msg","用户名或者密码已经存在");// 设置逻辑视图的名称mv.setViewName("suc");return mv;
}

②.ServletAPI

通过设置ServletAPI , 不需要视图解析器 .

1、通过HttpServletResponse进行输出

2、通过HttpServletResponse实现重定向

3、通过HttpServletResponse实现转发

java">@Controller
@RequestMapping(path = "/role") // 一级请求路径
public class RoleController {@RequestMapping("/t1")public void test1(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.getWriter().println("Hello,Spring BY servlet API");}@RequestMapping("/t2")public void test2(HttpServletRequest req, HttpServletResponse rsp) throws IOException {rsp.sendRedirect("/SpringMVCDemo/html/suc.html");}@RequestMapping("/t3")public void test3(HttpServletRequest req, HttpServletResponse rsp) throws Exception {//转发req.setAttribute("msg","hello");req.getRequestDispatcher("/html/suc.html").forward(req,rsp);}}

③.SpringMVC

通过SpringMVC来实现转发和重定向 - 无需视图解析器;

测试前,需要将视图解析器注释掉

java">@Controller
@RequestMapping(path = "/role") // 一级请求路径
public class RoleController {@RequestMapping("/t1")public String test1(){//转发return "/html/suc.html";}@RequestMapping("/t2")public String test2(){//转发二return "forward:/html/suc.html";}@RequestMapping("/t3")public String test3(){//重定向return "redirect:/html/suc.html";}}

2.ResponseBody响应json数据

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

javascript"><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>

DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置

标签配置不过滤

1. location元素表示webapp目录下的包下的所有文件

2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b

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

html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script><script>// 页面加载$(function(){// 单击事件$("#btn").click(function(){// 发送ajax的请求$.ajax({type: "post",url: "/SpringMVCDemo/user/save6",data:{username:"haha",age:"20"},success:function(d){// 编写很多代码alert(d.username+" ‐ "+d.age);}});});});</script>
</head>
<body>
<h3>异步的数据交互</h3>
<input type="button" value="ajax交互" id="btn">
</body>
</html>

controller

java">/*** 异步的数据交互* 重定向* @return*/
@RequestMapping("/save6")
public @ResponseBody User save6(User user){System.out.println(user);// 模拟,调用业务层代码user.setUsername("hello");user.setAge(100);// 把user对象转换成json,字符串,再响应。使用@ResposeBody注解 response.getWriter().print()return user;
}


http://www.ppmy.cn/embedded/160136.html

相关文章

Java设计模式:行为型模式→状态模式

Java 状态模式详解 1. 定义 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为。状态模式通过将状态需要的行为封装在不同的状态类中&#xff0c;实现对象行为的动态改变。该模式的核心思想是分离不同状态…

机器学习基本概念(附代码)

一、算法与模型的关系 在机器学习领域&#xff0c;算法和模型是两个核心概念。算法是一种偏抽象的概念&#xff0c;它定义了计算机解决问题的步骤和流程。而模型则是更加具体的概念&#xff0c;通过代码实现特定算法来完成任务。数学上&#xff0c;一个简单的模型可以表示为 y…

Kafka SSL(TLS)安全协议

文章目录 Kafka SSL&#xff08;TLS&#xff09;安全协议1. Kafka SSL 的作用1.1 数据加密1.2 身份认证1.3 数据完整性1.4 防止中间人攻击1.5 确保安全的分布式环境1.6 防止拒绝服务&#xff08;DoS&#xff09;攻击 2. Kafka SSL 配置步骤&#xff08;1&#xff09;创建 SSL 证…

基于RTOS的STM32游戏机

1.游戏机的主要功能 所有游戏都来着B站JL单片机博主开源 这款游戏机具备存档与继续游戏功能&#xff0c;允许玩家在任何时候退出当前游戏并保存进度&#xff0c;以便日后随时并继续之前的冒险。不仅如此&#xff0c;游戏机还支持多任务处理&#xff0c;玩家可以在退出当前游戏…

第P7周-Pytorch实现马铃薯病害识别(VGG16复现)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 马铃薯病害数据集&#xff0c;该数据集包含表现出各种疾病的马铃薯植物的高分辨率图像&#xff0c;包括早期疫病、晚期疫病和健康叶子。它旨在帮助开发和…

实验四 XML

实验四 XML 目的&#xff1a; 1、安装和使用XML的开发环境 2、认识XML的不同类型 3、掌握XML文档的基本语法 4、了解DTD的作用 5、掌握DTD的语法 6、掌握Schema的语法 实验过程&#xff1a; 1、安装XML的编辑器&#xff0c;可以选择以下之一 a)XMLSpy b)VScode&#xff0c;Vs…

3、参数化测试

一、什么是参数化测试&#xff1f; 参数化测试允许使用不同的输入参数多次运行同一个测试方法&#xff0c;从而减少重复代码并提高测试覆盖率。它通过 ParameterizedTest 注解标记测试方法&#xff0c;并通过指定参数来源&#xff08;如值列表、CSV、方法等&#xff09;提供输…

深度剖析 Veo2 工具:解锁 AI 视频创作新境界

在当下这个 AI 技术日新月异的时代,各种 AI 工具如雨后春笋般涌现,让人目不暇接。今天,我就来给大家好好说道说道谷歌旗下的 Veo2,这可是一款在 AI 视频创作领域相当有分量的工具。好多朋友都在问,Veo2 到底厉害在哪?好不好上手?能在哪些地方派上用场?别着急,今天我就…