京东网站建设及特点,卖友情链接赚钱,网站建设合同附件,邯郸网站设计公司排名SpringMVC学习记录#xff08;三#xff09;之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h… SpringMVC学习记录三之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: handler作用总结:* 1.接收请求参数(param,json,pathVariable,共享域等) * 2.调用业务逻辑 * 3.响应前端数据(页面不讲解模版页面跳转,json,转发和重定向等)* TODO: handler如何处理呢* 1.接收参数: handler(形参列表: 主要的作用就是用来接收参数)* 2.调用业务: { 方法体 可以向后调用业务方法 service.xx() }* 3.响应数据: return 返回结果,可以快速响应前端数据*/
GetMapping
public Object handler(简化请求参数接收){调用业务方法返回的结果 页面跳转返回数据jsonreturn 简化响应前端数据;
}请求数据接收是通过handler的形参列表接收的。前端数据响应是通过handler的return关键字快速处理
springmvc简化了参数接收和响应
一、页面跳转控制
1、快速返回模板视图
准备jsp页面和依赖
!-- jsp需要依赖! jstl--
dependencygroupIdjakarta.servlet.jsp.jstl/groupIdartifactIdjakarta.servlet.jsp.jstl-api/artifactIdversion3.0.0/version
/dependencyjsp页面创建 建议位置/WEB-INF/下避免外部直接访问 位置/WEB-INF/views/home.jsp
% page contentTypetext/html;charsetUTF-8 languagejava %
htmlheadtitleTitle/title/headbody!-- 可以获取共享域的数据,动态展示! jsp 后台vue --${msg}/body
/html配置jsp视图解析器
EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
Configuration
ComponentScan(basePackages com.atguigu.controller) //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {//配置jsp对应的视图解析器Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {//快速配置jsp模板语言对应的registry.jsp(/WEB-INF/views/,.jsp);}
}handler返回视图
跳转到提交文件页面 /save/jump
/*** 跳转到提交文件页面 /save/jump* * 如果要返回jsp页面!* 1.方法返回值改成字符串类型* 2.返回逻辑视图名即可 * property nameprefix value/WEB-INF/views//* 逻辑视图名 * property namesuffix value.jsp/*/
GetMapping(jump)
public String jumpJsp(Model model){System.out.println(FileController.jumpJsp);model.addAttribute(msg,request data!!); //将数据保存到数据共享作用域中return home;
}2、转发和重定向
在 Spring MVC 中Handler 方法返回值来实现快速转发可以使用 redirect 或者 forward 关键字来实现重定向。
RequestMapping(/redirect-demo)
public String redirectDemo() {// 重定向到 /demo 路径 return redirect:/demo;
}RequestMapping(/forward-demo)
public String forwardDemo() {// 转发到 /demo 路径return forward:/demo;
}//注意 转发和重定向到项目下资源路径都是相同都不需要添加项目根路径填写项目下路径即可总结
将方法的返回值设置String类型转发使用forward关键字重定向使用redirect关键字关键字: /路径注意如果是项目下的资源转发和重定向都一样都是项目下路径都不需要添加项目根路径
二、返回JSON数据
1、前置准备
导入jackson依赖
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.15.0/version
/dependency添加json数据转化器 EnableWebMvc
//TODO: SpringMVC对应组件的配置类 [声明SpringMVC需要的组件信息]//TODO: 导入handlerMapping和handlerAdapter的三种方式//1.自动导入handlerMapping和handlerAdapter [推荐]//2.可以不添加,springmvc会检查是否配置handlerMapping和handlerAdapter,没有配置默认加载//3.使用Bean方式配置handlerMapper和handlerAdapter
EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
Configuration
ComponentScan(basePackages com.atguigu.controller) //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {}2、ResponseBody
可以在方法上使用 ResponseBody注解用于将方法返回的对象序列化为 JSON 或 XML 格式的数据并发送给客户端。在前后端分离的项目中使用 注意区分ResponseBody 和 RequestBody
GetMapping(/accounts/{id})
ResponseBody
public Object handle() {// ...return obj;
}具体来说ResponseBody 注解可以用来标识方法或者方法返回值表示方法的返回值是要直接返回给客户端的数据而不是由视图解析器来解析并渲染生成响应体viewResolver没用。
RequestMapping(value /user/detail, method RequestMethod.POST)
ResponseBody
public User getUser(RequestBody User userParam) {System.out.println(userParam userParam);User user new User();user.setAge(18);user.setName(John);//返回的对象,会使用jackson的序列化工具,转成json返回给前端!return user;
}如果类中每个方法上都标记了 ResponseBody 注解那么这些注解就可以提取到类上。
ResponseBody //responseBody可以添加到类上,代表默认类中的所有方法都生效!
Controller
RequestMapping(param)
public class ParamController {
}类上的 ResponseBody 注解可以和 Controller 注解合并为 RestController 注解。
//ResponseBody
//Controller
RestController // ResponseBody Controller 合二为一
RequestMapping(param)
public class ParamController {
}三、返回静态资源
1、静态资源概念
资源本身已经是可以直接拿到浏览器上使用的程度了不需要在服务器端做任何运算、处理。典型的静态资源包括
纯HTML文件图片CSS文件JavaScript文件……
web应用加入静态资源
2、访问静态资源 问题分析 DispatcherServlet 的 url-pattern 配置的是“/”url-pattern 配置“/”表示整个 Web 应用范围内所有请求都由 SpringMVC 来处理对 SpringMVC 来说必须有对应的 RequestMapping 才能找到处理请求的方法现在 images/mi.jpg 请求没有对应的 RequestMapping 所以返回 404 问题解决 在 SpringMVC 配置配置类
EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
Configuration
ComponentScan(basePackages com.atguigu.controller) //TODO: 进行controller扫描
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {//配置jsp对应的视图解析器Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {//快速配置jsp模板语言对应的registry.jsp(/WEB-INF/views/,.jsp);}//开启静态资源处理 mvc:default-servlet-handler/Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}现在我们的静态图片就可以正常访问了。