发表于: 2020-06-28 22:41:11
1 1630
今天完成的事情:
了解springmvc执行流程
1.用Json Tag-lib 生成假数据,就得了个get接口.
2.本地运行Jetty:run 插件,修改端口号为8080,浏览器访问任意查询接口,判断是否可以正确返回数据
3.用Postman测试接口文档。
> DispatcherServlet是前端控制器,是整个springmvc的调度中心,主要是接收请求,请求别人处理数据,响应结果等作用(不需要程序员开发)
>HandlerMapping是处理器映射器,它根据请求的url(Handler的url可通过在xml或注解来配置)在spring容器查找有没有符合url的方法的handler(不需要程序员开发)
>HandlerExcutionChain,它可以理解为返回处理后的结果链,这个里面主要分两种:HandlerInterceptor处理器拦截器(一般有多个,在执行处理器之前进行预处理和后处理操作),Handler处理器(不需要程序员开发)
>HandlerAdapter是处理器适配器,用来执行Handler处理器,不同的适配器能处理不同的处理器(不需要程序员开发)
>Handler是处理器,它是我们主要写代码的地方,类似struts2时候的action,javaweb时的servlet,在项目的分层中它属于controller层,它必须按照适配器的指定规范来写,否则它就不是一个处理器(需要程序员开发)
>ModelAndView是springmvc的一个底层对象,我们从数据库获取的数据以及视图的信息(url路径)存储在该对象中(需要我们创建)
>ViewResolver是视图解析器,将ModelAnDView对象中的视图信息解析成一个View对象(其实就是拿到JSP,FrameMarker等视图的路径并解析成一个对应的JSP对象等或者说根据路径将对应的视图加载到内存当中形成一个view对象)(不需要程序员开发)
>view是一个接口,支持不同的view类型,包含jsp,pdf等视图,不同类型的view需要不同的ViewResolver来解析(不需要程序员开发)
流程:
1.请求发送到我们的服务器的第一道大门 DispatcherServlet
2. DispatcherServlet调用HandlerMapping处理器映射器获取Handler处理器
3.HandlerMapping返回一个执行链,包含处理器拦截器和处理器对象
4.DispatcherServlet拿到Handler之后,交给HandlerAdapter去执行
5.HandlerAdapter执行Handler
6.Handler返回一个modelAndView对象,通过对象名可知对象中包含数据库和视图的信息
7.HandlerAdapter返回modelAndView对象给DispatcherServlet
8.DispatcherServlet把modelAndView交给ViewResolver视图解析器去解析该对象,说白了就是提取jsp 等视图url并解析成一个view对象
9.view对象会自己的方法进行渲染,其实是将modelAndView里面的model数据提取放到request域中,视 图从request域中拿到数据形成一个完整的静态页面html
10.返回给DispatcherServlet一个View对象
11.响应html给客户端
<%@ page language="java" pageEncoding="utf-8" isELIgnored="false" %>
<%@ taglib prefix="json" uri="http://www.atg.com/taglibs/json" %>
<json:object>
<json:object name="student">
<json:property name="student_name" value="韦延伦"/>
<json:property name="education" value="大专"/>
<json:property name="type" value="java"/>
<json:property name="age" value="24"/>
<json:property name="id" value="${id}"/>
</json:object>
<json:property name="code" value="200"/>
</json:object>
Controller
Controller
@RequestMapping("/task2")
public class StudentController {
@RequestMapping(value = "student/{id}", method = RequestMethod.GET)
public ModelAndView queryById(@PathVariable("id") Integer id) {
ModelAndView modelAndView = new ModelAndView("get");
modelAndView.addObject("id", id);
return modelAndView;
}
}
jetty测试结果
postman测试结果
明天计划的事情:
把springmvc的注解了解清楚,进行ssm整合。
测试剩下的post,delete,put接口。
遇到的问题: 对于spring的注解使用还没有了解清楚,导致不知道怎么接收post接口发过来的参数.
收获:了解了get接口怎么发送数据。
评论