太原百度seo网站建设,织梦企业黄页网站源码,网站版块设计,wordpress getusers1. handler方法分析
/*** TODO: 一个controller的方法是控制层的一个处理器,我们称为handler* TODO: handler需要使用RequestMapping/GetMapping系列,声明路径,在HandlerMapping中注册,供DS查找!* TODO: handler作用总结:* 1.接收请求参数(param,json,pathVariable,共享…1. handler方法分析
/*** 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关键字快速处理 2. 页面跳转控制
https://blog.csdn.net/m0_59735420/article/details/128126514
2.1 返回模板视图页面
什么是返回模板视图页面
当http请求被controller中的handler处理时有时需要指定响应的页面(返回本地的)
为什么要返回模板视图页面 项目采用了前后端分离模式 前后端通信通过 API 接口完成数据格式一般使用 JSON 或 XML。
目标 : 用户访问localhost:8080/jsp/index时,返回给用户本地webapp-WEB-INF-view下的home.jsp页面.
pom文件添加jsp依赖
!-- jsp需要依赖! jstl--
dependencygroupIdjakarta.servlet.jsp.jstl/groupIdartifactIdjakarta.servlet.jsp.jstl-api/artifactIdversion3.0.0/version
/dependency创建等会要返回的home.jsp页面
% page contentTypetext/html;charsetUTF-8 languagejava %
htmlheadtitleTitle/title/headbody!-- 可以获取共享域的数据,动态展示! jsp 后台vue --${msg}/body
/html
新建一个MvcConfig类
//本类中要重写handlerMappinghandlerAdapter两个方法,配置一个json转化器, 通过一个注解EnableWebMvc实现EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
Configuration
ComponentScan(basePackages com.atguigu.controller) //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {//配置一个jsp对应的视图解析器public void configureViewResolvers(ViewResolverRegistry registry) {//Resigter可以帮忙添加前后缀//稍后的handler中如果想给前端返回 /WEB-INF/views/index .jspregistry.jsp(/WEB-INF/views/,.jsp);}
}编写jspController类
/*** 跳转到提交文件页面 * * 如果要返回jsp页面!* 1.方法返回值改成字符串类型* 2.返回逻辑视图名即可 * property nameprefix value/WEB-INF/views//* 逻辑视图名 * property namesuffix value.jsp/*///访问localhost:8080/jsp/index时,返回给用户本地webapp-WEB-INF-view下的home.jsp页面.
GetMapping(index)
public String jumpJsp(Model model){System.out.println(FileController.jumpJsp);return home;
}2.2 跳转和重定向
重定向与跳转的区别
1.请求的次数的不同 重定向总共请求了两次服务器转发则是用户请求一次可能经过N个JSP页面由返回到用户浏览器中是一次请求多次处理的过程
2.跳转过程中链接的变化不同 : 重定向在跳转中请求了两次服务器并且是两次不同的链接地址在浏览器的地址栏可以看到两次是有变化的转发在跳转过程中浏览器请求了一次服务器服务器经过了n个JSP页面并没有改变请求的链接地址因为用户只请求了一次所以在整个跳转过程中链接地址是没有改变的在浏览器的地址栏就可以看到
3.目的不同 重定向只是简单的让用户访问一个新的链接而转发是服务器要得到用户的请求内容并需要进行一部分处理的所以两者目的之不同的
不管是重定向redirect还是转发forward其handler都要设置String类型语法为 return 关键字: /路径不需要额外注解ResponseBody注解和转发/重定向是互斥的。ResponseBody注解的类会快速返回不走视图解析器也不会再转发/重定向。注意如果是项目下的资源转发和重定向都一样都是项目下路径都不需要添加项目根路径
RequestMapping(/redirect-demo)
public String redirectDemo() {// 重定向到 /demo 路径 return redirect:/demo;
}RequestMapping(/forward-demo)
public String forwardDemo() {// 转发到 /demo 路径return forward:/demo;
}3.返回JSON数据
如上章接收JSON数据一样涉及JSON必须要添加依赖以及在config类中配置JSON转换器EnableWebMvc。
dependencygroupIdcom.fasterxml.jackson.core/groupIdartifactIdjackson-databind/artifactIdversion2.15.0/version
/dependency如上章接收JSON数据一样RequestBody使用ResponseBody注解返回JSON数据该注解的作用在于将返回的对象序列化为 JSON 或 XML 格式的数据并发送给客户端。需注意的是ResponseBody不经过视图解析器且与转发/重定向互斥。
GetMapping(/accounts/{id})
ResponseBody
public Object handle() {// ...return obj;
}测试方法
Controller
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;
}合并两条注解 ControllerResponseBody RestController
3.返回静态资源
什么是静态资源 资源本身已经是可以直接拿到浏览器上使用的程度了不需要在服务器端做任何运算、处理。典型的静态资源包括 - 纯HTML文件/图片 - CSS文件 - JavaScript文件
如何让外部能够访问静态资源
DispatcherServlet 的 url-pattern 配置的是“/”表示整个 Web 应用范围内所有请求都由 SpringMVC 来处理而对 SpringMVC 来说若想某个url被后台处理必须将这个urll用 RequestMapping 绑定到某个handler上才能找到处理请求的方法否则handlermapping秘书无法知道找哪个handler打工人处理这个链接。因此思路是显然的那就是想办法让系统知道如果请求的是url是xxx/xxx/car.jpg , 那就从静态资源中直接提取而不是找handler静态资源不可能存进handler里。
准备好静态资源并编译 2. 在config类中开启静态资源处理
EnableWebMvc //json数据处理,必须使用此注解,因为他会加入json处理器
Configuration
ComponentScan(basePackages com.sunsplanter.controller) //
//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法!
public class SpringMvcConfig implements WebMvcConfigurer {//开启静态资源处理//处理的顺序是DispatcherServlet -- handlerMapping --没找到就去找静态资源//平时第二步走完就结束该方法多走一步为了找到静态资源Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}访问localhost8080/images/car.jpg , 可以正常显示.