SpringMVC

SpringMVC的核心组件

1、前端控制器DispatcherServlet:负责拦截请求,将请求转发给其他组件进行处理,相当于SpringMVC的控制单元。

2、处理器映射器HandlerMapping:负责查找处理器

3、处理器适配器HandlerAdapter:负责执行处理器(调用处理器的方法)

4、处理器:执行业务逻辑(开发人员自己编写)

5、视图解析器ViewResolver:解析逻辑视图,创建View对象

SpringMVC的执行流程

1、用户发送请求到DispatcherServlet

2、DispatcherServlet请求处理器映射器查找映射器

3、处理器映射器找到处理器后,返回处理器执行链给DispatcherServlet

4、DispatcherServlet请求处理器适配器执行处理器

5、处理器适配器执行处理器

6、处理器执行完后返回一个逻辑视图对象给处理器适配器

7、处理器适配器将逻辑视图对象返回给DispatcherServlet

8、DispatcherServlet请求视图解析器解析逻辑视图

9、视图解析器解析完成之后。返回一个view对象给DispatcherServlet

10、DispatcherServlet使用view视图对象和模型数据渲染页面,响应用户请求

SpringMVC怎么配置一个Servlet

1、web.xml

2、@WebServlet

3、SPI (服务提供者接口)

<mvc:annotation-driven/>包含了哪些内容

1、默认的处理器映射器:RequestMappingHandlerMapping、BeanNameUrlHandlerMapping

2、默认的处理器适配器:RequsetMappingHandlerAdapter、HttpRequestHandlerAdapter

3、异常解析器:ExceptionHandlerExceptionResolver

4、JavaBean校验器

5、一组Http请求和响应报文转换器

名字作用详解
RequestMappingHandlerMapping将客户端请求映射到处理该请求的控制器的方法上根据请求的URL和HTTP方法来确定具体的控制器方法,并返回一个HandlerExecutionChain对象。该对象中包含了要执行的控制器方法和拦截器信息。DispatcherServlet根据该对象执行具体的控制器方法,处理请求并生成一个视图对象返回到客户端。
BeanNameUrlHandlerMapping将请求的URL映射到相应的处理器根据请求的URL查找配置中定义的处理器Bean,并返回其名称。注意:默认情况下只能争取处理".do"和".html"结尾的URL,如果要处理其他的URL需要在配置中做相应设置。DispatcherServlet会找到处理器Bean来处理请求生成响应。
RequestMappingHandlerAdapter处理映射到@RequestMapping注解的处理程序方法,并准备将响应返回到客户端该适配器会完成请求处理的多个方面,例如解析方法参数、调用处理器方法、以及返回值转换成合适的HTTP响应格式等。它还提供了异常处理和错误响应支持的功能。
HttpRequestHandlerAdapter实现了HttpRequestHandler接口的处理器对象可使用该适配器进行处理,他将根据请求调用适当的方法,并将响应返回到客户端HttpRequestHandlerAdapter中的处理逻辑比较简单,只需要将请求和响应对象作为参数传入处理器方法即可。
ExceptionHandlerExceptionResolver当控制器方法抛出异常时,ExceptionHandlerExceptionResolve 会根据配置文件中定义的异常处理器来选择合适的异常处理方法,并将异常信息作为参数传入该方法。可以将异常信息转换成相应的错误视图或其他形式的响应。需要注意的是,ExceptionHandlerExceptionResolver优先级较低,只有在其他的异常解析器都无法处理异常情况时才会被调用。因此,建议将该解析器放在其他解析器之后。

<mvc:annotation-driven/>跟<context:component-scan/>有什么区别呢?

<context:component-scan/>标签是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。

而<mvc:annotation-driven/>是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册上面说到的几个Bean到工厂中,来处理我们的请求。

SpringMVC参数传递

类型参数类型备注
请求x-www-form-urlencodedform表单、key/value键值对类型
请求application/jsonjson
请求multipart/from-data上传文件时使用的类型
响应text/html响应html文件
响应text/plain文本
响应application/json返回json字符串

SpringMVC处理静态资源

访问本地文件系统的静态资源

<mvc:resources mapping="/files/**" location="file:d:/upload/et2210/" />

访问Classpath下的静态资源

<mvc:resources mapping="/abc/**" location="classpath:public/" />

访问项目根目录(src/main/webapp)下的静态资源

<mvc:resources mapping="/s/**" location="/static/"/>

<mvc:default-servlet-handler />

SpringMVC异常处理

最常用的:

@ControllerAdvice+@ExceptionHandler、@RestControllerAdvice+@ExceptionHandler

拦截器

创建拦截器:实现HandlerInterceptor

boolean preHandle():在处理器的方法执行前执行,

postHandle():在处理器执行完成之后执行

afterCompletion():在页面渲染完成之后执行

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值