SSM-WebMVC(三)
一、Annotated Controllers
? 应用程序控制器
handlerMethod(处理方法)
㈠方法入参
? (springmvc针对于在controller里的方法参数,传入实参对象),处理接口(HandlerMethodArgumentResolver)
1.javax.servlet.ServletRequest, javax.servlet.ServletResponse
2.javax.servlet.http.HttpSession
3.InputStream ,OutputStream,Reader ,Writer
4.@PathVarable
? 1.路径变量的值会付给方法中形参的值
? 2.@GetMapping("/owners/{ownerId}/pets/{petId}")
? public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) {
? // ...
? }
5.@RequestParam
? 将请求参数付给形参
6.@CookieValue
? 1.将指定cookie中的值付给形参
? 2.defaultValue属性用于指定默认值
7.@RequestBody
? 将请求体的内容绑定到参数对象上
? 请求体可以通过 request.getInputStream拿到
8.java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap
? 都会统一放到request作用域当中
9.@ModelAttribute
? 1.作用在参数上
? 指定的参数会被自动存放于model当中
? 2.作用在方法上
? 指定的返回值会被自动添加至Model当中
? 3.解析顺序
? From the model if already added by using Model(优先使用Model中存在的值)
? From the HTTP session by using @SessionAttributes
? From a URI path variable passed through a Converter
10.BindingResult
? 针对于JavaBean的属性验证,来确保对象属性的合法性
? 该对象代表本次的验证结果
? 常见的方法
? hasErrors
? getFieldError
11.@Valid
? 用来指定需要验证的JavaBean
? 注解后需要紧跟着BindingResult类型
12.@SessionAttribute
13.@RequestAttribute
?
㈡方法返回值
? (HandlerMethodReturnValueHandler接口处理,应用程序控制器的方法返回值)
1.String
? 返回逻辑视图
2.ResponseEntity
? 在@Controller下,将返回值添加到响应体当中,类似于@ResponseBody
3.void
? 将请求路径作为逻辑视图名
4.DeferredResult
5.Callable
? 5、6用于springmvc的异步处理
6.ModelAndView
? 但凡涉及到逻辑视图的处理,终将统一解析成ModelAndView
7.Map
8.自定义类型
二、DataBinder
? 将请求参数或数据绑定到对应入参对象(自定义对象)或者解决复杂类型的数据绑定
@InitBinder
? public void initBinder(WebDataBinder webDataBinder)
实现Formatter接口
注册添加
? 通过WebDataBinder的addCustomFormatter方法添加
三、Asynchronous Requests
servlet中的异步
@WebServlet(asyncSupported=true)
request.startAsync()
AsyncContext
? 1.start(Runnable runnable)
? 2.addListener()
? 监听异步的事件
? AsyncListener
? onComplete
? onTimeout
? onError
? onStartAsync
? 3.getRequest
? 4.getResponse
buildscript { ???ext { ???????springBootVersion = ‘2.0.6.RELEASE‘ ???} ???repositories { ???????mavenCentral() ???} ???dependencies { ???????classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") ???}}subprojects { ???apply plugin: ‘java‘ ???apply plugin: ‘eclipse‘ ???apply plugin: ‘org.springframework.boot‘ ???apply plugin: ‘io.spring.dependency-management‘ ???group = ‘com.iteng.zyn‘ ???version = ‘1.0.0‘ ???sourceCompatibility = 1.8 ???repositories { ???????mavenLocal() //maven本地仓库// ???????maven {// ???????????url = "http://47.106.13.224:8081/nexus/content/repositories/thirdparty"// ???????} ???????maven { ???????????url = "http://maven.aliyun.com/nexus/content/groups/public" ???????} ???????mavenCentral()//maven中心仓库 ???} ???ext { ???????springCloudVersion = ‘Finchley.SR1‘ ???} ???dependencies { ???????compile(‘org.springframework.boot:spring-boot-starter-actuator‘) ???????compile(‘org.springframework.boot:spring-boot-starter-web‘) ???????compile(‘org.springframework.cloud:spring-cloud-starter‘) ???????testCompile(‘org.springframework.boot:spring-boot-starter-test‘) ???} ???dependencyManagement { ???????imports { ???????????mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" ???????} ???}}
buildscript { ???ext { ???????springBootVersion = ‘2.0.6.RELEASE‘ ???} ???repositories { ???????mavenCentral() ???} ???dependencies { ???????classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") ???}}subprojects { ???apply plugin: ‘java‘ ???apply plugin: ‘eclipse‘ ???apply plugin: ‘org.springframework.boot‘ ???apply plugin: ‘io.spring.dependency-management‘ ???group ‘com.example‘ ???version ‘1.0-SNAPSHOT‘ ???sourceCompatibility = 1.8 ???repositories { ???mavenLocal() //maven本地仓库 ???maven { ???????url = "http://maven.aliyun.com/nexus/content/groups/public" ???} ???mavenCentral()//maven中心仓库 ???} ???dependencyManagement { ???????imports { ???????????mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" ???????} ???}}
SSM-WebMVC(三)
原文地址:https://www.cnblogs.com/shi-tian/p/10285367.html