6/21 SpringMVC 执行流程、视图解析器、解析动态、静态资源、拷贝动态项目的处理方法、处理器映射器、处理器适配器、限定method的请求类型

SpringMVC的执行流程
在这里插入图片描述
用户向DispatcherServlet发送请求,给了DispatcherServlet一个请求
DispatcherServlet先来找HadnleMapping(处理器映射器) 找映射关系 你这个请求要用哪个方法来调用。
把一个对象或者链传回去中央调度器DispatcherServlet
然后DispatcherServlet去找处理器适配器HandleAdaptor 找到一个适配器,然后用这个适配器去找处理器,
处理器(相当于servlet里面的方法)处理完了 还给ds
DispatcherServlet去找试图解析器(相当于以前找一个页面)找到解析器后解析 还给ds
DispatcherServlet去找视图,调用执行。然后返回给浏览器。

本节用到的
在这里插入图片描述

SpringMVC

下图里面的红字执行 打错了,应该是支持。
在这里插入图片描述
在这里插入图片描述
SpringMVC的约束头

1.配置xml文件

设置一个DisPatcherServlet(中央调度器)
设置凡是以do结尾的方法,都交给中央调度器。

搜索DisPatcherServlet,获取全限定类名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2.创建一个控制器,实现接口 Controller

返回值为ModelAndView:既需要返回一个模型bean 又需要返回一个视图的时候用这个做返回值
在这里插入图片描述
在这里插入图片描述
设置跳转页面,返回视图 ModelAndView
在这里插入图片描述

写在java和配置文件里面的 斜杠 是服务端的

既然使用mvc模式,那么如何让前台这个访问请求 发给DispatcherServlet?

解决方法:把controller当成一个bean 配到这个Servlet里面去。

这里把这个bean配置成为==以do结尾 ==就可以进入中央调度器了。
在这里插入图片描述
遇到500 路径错误 和昨天处理方法一样
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


若把页面放在web-info的路径下
在这里插入图片描述
这个路径浏览器不能直接访问,只能通过服务器内部转发才过得去
在这里插入图片描述
在这里插入图片描述
但是这样的话 每次都要配置这个web-info 很麻烦。
所以要添加一个视图解析器
配置前置文件, 后缀文件。
在这里插入图片描述
拷贝全限定类名,在这个类,或者其父类寻找配置前缀和后缀的属性名。最终在父类找到
在这里插入图片描述
在这里插入图片描述
这个时候,只需要写页面名字就行了
在这里插入图片描述


jar包底层的配置文件;首先找到mvc底层配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


无法访问静态资源的处理方式:

先不改配置文件,在网页加入一张图片(目前过滤的是 *.do)
在这里插入图片描述在这里插入图片描述

注意配置的时候不要使用 /* 它会拦截所有的动态资源。连jsp都不能访问了。
在这里插入图片描述
可以使用 / 拦截静态资源
当改成斜杠后,
在这里插入图片描述
图片出不来了。
在这里插入图片描述
因为DispatcherServlet里面没有专门处理静态资源。

处理方法:配置一个mvc的约束。
先引入最强头文件
在这里插入图片描述
配置
在这里插入图片描述
这样就出来了。
在这里插入图片描述

基本配置

处理器映射器:给你一个请求路径,根据请求路径来查找一个合适的处理器。

BeanNameUrlHandlerMapping
这是默认的处理器映射器,可以不用配置、

因为第二个项目是由第一个项目直接拷贝过来的,视图配置还是第一个项目,所以现在需要修改视图配置。
打开Navigator导航器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一共修改了四处。
接下来添加处理器映射器。

首先搜索BeanNameUrlHandlerMapping ,拷贝全限定路径名
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这时候访问两个连接都可以。
在这里插入图片描述
在这里插入图片描述

但是这个不配置的缺点是,配置一次就会创建一个对象。

通过配置的 处理器映射器。

这里使用的是 SimpleUrlHandlerMapping
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
找到他的参数,发现这里面有两种配置的方法,这里先使用第一种。Mapping

第一种,通过properties配置。

在这里插入图片描述
在这里插入图片描述
这个时候bean的命名 要符合一般的习惯,多个路径映射同一个bean
在这里插入图片描述

2.现在来根据第二种map来配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理器适配器:不同的接口可以统一工作
SimpleControllerHandlerAdapter:

在这里插入图片描述
在这里插入图片描述
统一转换成controller,然后
在这里插入图片描述


另一种适配器:HttpRequestHandlerAdapter

在这里插入图片描述
凡是实现了HttpRequestHandler接口的处理器都是使用该适配器统一调用的

这个不需要配置。

在这里插入图片描述

通过查看底层源码
在这里插入图片描述在这里插入图片描述
底层还是一样的
在这里插入图片描述

在这里插入图片描述
不要忘了配置xml


AbstractController: 可以限定method的请求类型。

注意:这里是继承AbstractController方法,不再是实现接口了!!!!
在这里插入图片描述
在这里插入图片描述
现在访问yjsb。do 出现405
在这里插入图片描述
是因为这个页面设置需要通过post请求获取。(xml文件里面的设置的)
在这里插入图片描述
在这里插入图片描述
给他一个页面,点击提交就获取到yjsb了


MultiActionController:

在这里插入图片描述
使用方法名称解析器 :要求占位符和通配符里面的路径要和方法名字一样。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


使用属性方法名称解析器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


参数方法名称解析器

在这里插入图片描述
在这里插入图片描述

通过查看源码
在这里插入图片描述
默认的是action myServlet?action=?
若改成 之前的method 增加一条配置在这里插入图片描述
在这里插入图片描述
注意,图里的method打错了。


ModelAndView在这里插入图片描述

配置了这个
在这里插入图片描述
之后
在这里插入图片描述
使用转发、重定向的话
默认忽略内部视图解析器的前后缀。


在这里插入图片描述:把视图的名字/路径变成bean
先配置,
在这里插入图片描述

在这里插入图片描述

添加jstl jar包
在这里插入图片描述

在这里插入图片描述


就再配置一个视图解析器

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值