Springmvc笔记

Springmvc:

在这里插入图片描述
架构流程
1、 用户发送请求至前端控制器DispatcherServlet
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、 执行处理器(Controller,也叫后端控制器)。
6、 Controller执行完成返回ModelAndView
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、 ViewReslover解析后返回具体View
10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet响应用户

原文:https://blog.youkuaiyun.com/wuminghua59920/article/details/84717270
1、Controller:处理器/页面控制器,做的是MVC中的C的事情,但控制逻辑转移到前端控制器了,用于对请求进行处理;
2、HandlerMapping:请求到处理器的映射,如果映射成功返回一个HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象;如BeanNameUrlHandlerMapping将URL与Bean名字映射,映射成功的Bean就是此处的处理器;
3、HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器;如SimpleControllerHandlerAdapter将对实现了Controller接口的Bean进行适配,并且掉处理器的handleRequest方法进行功能处理;
4、ViewResolver:ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;如InternalResourceViewResolver将逻辑视图名映射为jsp视图;
5、LocalResover:本地化解析,因为Spring支持国际化,因此LocalResover解析客户端的Locale信息从而方便进行国际化;
6、ThemeResovler:主题解析,通过它来实现一个页面多套风格,即常见的类似于软件皮肤效果;
7、MultipartResolver:文件上传解析,用于支持文件上传;
8、HandlerExceptionResolver:处理器异常解析,可以将异常映射到相应的统一错误界面,从而显示用户友好的界面(而不是给用户看到具体的错误信息);
9、RequestToViewNameTranslator:当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑视图名;
10、FlashMapManager:用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出,当进入另一个请求时作为该请求的输入,通常用于重定向场景,后边会细述。

在这里插入图片描述

Springmvc(核心在Servlet)是基于方法设计,每次请求都只有一个实例,只是调用不同的方法。Springmvc是spring中的一个模块,所以使用起来更方便快捷。参数的传递是通过方法的参数接收的。

Struts(核心在Filter)是基于对象设计,每次请求都会实例一个action对象,每个action都会注入属性。

@EnableWebMvc 开启对SpringMVC的支持

继承WebMvcConfigurerAdapter类,重写其方法可对SPringMVC进行配置。

@RequestMapping(可以加在方法上也可以加在类上)
/** 表示任何路径
?表示单个字符
可以通过配置文件设定方法上的访问路径,如:@RequestMapping("/${配置文件的键}")

@RequestBody
允许request的参数在request体中,而不是直接链接在地址后面。此注解放在参数前
将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。
意味着请求的HTTP消息体的内容是一个JSON,需要转化为注解指定的参数类型。
在GET请求中,不能使用@RequestBody。

@ResponseBody
直接将返回的对象输出到客户端,如果是字符串,则直接返回,如果不是,则默认使用Json序列化后输出。
(如果url请求地址是.html而返回Json格式,springboot认为请求与返回类型不一致而报错???(测试没发现报错)。
建议期望返回Json,请求资源后缀是json,期望返回视图,请求后缀是html)
表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。

@PathVariable
当使用@RequestMapping URI template 样式映射时, 即 someUrl/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。,即@PathVariable String petId vfg

@RequestParam
如可以用来表单的数据:<\input type = “text” name = “username” value=“xxx” > (@RequestParam String username)
常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( String–> 简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get 方式中queryString的值,也可以处理post方式中 body data的值;
在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。

@RequestHeader
对应于HTTP请求的参数,自动转化为对应的类型

@ModelAttribute
作用在Controller的方法上,表示此方法会先被调用,并将方法结果作为Model的属性,然后再调用请求url中的方法。

装配Bean:
在xml文件中声明Bean时,Spring配置文件的根元素是源于Spring Bean命名空间所定义的<\beans>元素。

显示错误信息:
在属性中设置:

@NotNull
@Size(min = 5,max = 16,message="{userName.size}")
private String userName;

然后在根路径下创建一个属性文件.properties,用来存放错误信息,如果不创建默认使用上面message的值
如:
userName.size = UserName must be between {min} and {max} characters long.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值