今天来讲解一下springmvc.
首先来看一张图,关于springmvc的执行流程
springmvc中的一个核心组件就是DispatcherServlet.
1.客户端发送一个url请求
2.DispathcerServlet将请求过来的"丢给"HandlerMapping,HandlerMapping会去查找是否有处理对应url的方法,并且将结果返回给DispatcherServlet.
3.DispatcherServlet接收到返回过来的结果后就会将结果"丢给"HandlerAdapter,让它找到对应的Handler并且执行该方法.然后将结果返回给DispatcherServlet.
4.DispatcherServlet接收到HandlerAdapter传递过来的结果,并且把结果通过ViewResolver渲染到前端页面,最终展示给用户.
接下来讲解一些关于springmvc的一些配置
(1)扫描包(component-scan): 这tomcat服务器启动的时候,会加载这个"base-package"里面的包
(2)静态资源扫描(default-servlet-handler): springmvc会把所有的请求当做一个普通请求,包括对静态资源的请求,静态资源会因为没有对应的方法来处理,导致404异常,配置这个是为了可以访问那些静态资源.
(3)动态资源扫描(annotaion-driven): 在之前的DispatcherServlet执行流程中有两个东西就是HandlerMapping和HandlerAdapter,配置了动态资源扫描就相当于把这两个东西配置好了.
(4)视图管理器: 这个就是viewResolver,prefix是前缀,suffix是后缀.
如图,这里的路由是login,有对应的方法来处理该路由,返回了一个"/login",那么就会去到prefix的值里面找,也就是WEB-INF/views里面找一个后缀名为jsp的login文件,然后返回给前端,返回给用户.
(5)mvc:resources: 这个是因为有一些静态文件,如(css文件,js文件,png照片,jpg照片)等等,这些会被DispatcherServlet拦截,我们需要做一些配置,这里来举例说明一下.
在这个jsp文件中有一张照片,这个路径会被Servlet拦截,由于并没有方法执行,所以会显示出错,而我们做了配置
这里的意思是但凡遇到了static的路由都会拦截,而是去WEB-INF/views/static/里面去对应的资源.这样就避免了图片显示问题或者说css,js文件引入出错问题.
(6)资源跳转(view-controller): 如果发送的请求不想通过controller,只想直接跳转到目标页面,可以进行这个配置.
接下来讲一下springmvc的一些注解.
1.RequestMapping GetMapping PostMapping
RequestMapping可以处理Get和Post请求,而GetMapping和PostMapping只能处理对应的请求.当然,可以在RequestMapping里面添加method指定处理某一种请求.
2.json
json是前后端数据交互的最常用的一种方式,如果前端传递json数据过来我们应该怎么办呢? 首先需要考虑如何接受,这里需要用到ResponseBody注解和RequestBody注解.RequestBody注解是来接受前端传递过来的参数,ResponseBody注解是用来返回给前端的注解.这里有一些java中Bean对象与json互转的方法