投影片~~~~~~
## 细节处理
## 注解映射技巧
## HTTP请求地址映射原理
mvc.xml
1. DispatcherServlet
2. DefaultAnnotation HandlerMapping
3. DefaultAnnotation HandlerAdapter
4. SeckillController
5. ModelAndView /seckill/list
6. InternalResource ViewResolver
7. Model->list.jsp
8. user
## Handler开发
## SpringMVC运行流程
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④Controller,如果其中用到intercept(拦截器)的话也会把拦截器绑定到流程当中
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分Controller,其他部分用注解形式完成
HTTP请求地址映射原理
注解映射技巧
请求方法细节处理
请求参数绑定
请求方式限制
请求转发和重定向
数据模型赋值
返回json数据
cookie访问
例子:
PathVariable:占位符匹配,通过该注解绑定参数,对应到value中的占位符,当用户传入URL时,会获取URL中的seckillId部分传入detail方法中
method:该请求只允许GET方法访问
model:承载返回给用户的数据;model.addAttribute传入seckill(通过key-value方式映射),在页面中可以通过seckill拿到model中的数据
redirect/forward:通过该字符串,控制请求的是重定向/转发
最后return“detali”字符串,根据配置默认返回的是对应的jsp页面,即detail.jsp,把model的数据传递给detail.jsp做相应的数据替换,最终输出该jsp的html内容
返回json数据:
produces:返回http请求的header
ResponseBody:返回json数据,SeckillResult result会把最终数据封装成json返回给浏览器
Cookie访问:
CookieValue:required=false,不强制传入cookie,当cookie中没有对应的killPhone时不做拦截,也进入到方法中,后续会报异常
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④Controller,如果其中用到intercept(拦截器)的话也会把拦截器绑定到流程当中
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分Controller,其他部分用注解形式完成
HTTP请求地址映射原理
注解映射技巧
请求方法细节处理
请求参数绑定
请求方式限制
请求转发和重定向
数据模型赋值
返回json数据
cookie访问
例子:
PathVariable:占位符匹配,通过该注解绑定参数,对应到value中的占位符,当用户传入URL时,会获取URL中的seckillId部分传入detail方法中
method:该请求只允许GET方法访问
model:承载返回给用户的数据;model.addAttribute传入seckill(通过key-value方式映射),在页面中可以通过seckill拿到model中的数据
redirect/forward:通过该字符串,控制请求的是重定向/转发
最后return“detali”字符串,根据配置默认返回的是对应的jsp页面,即detail.jsp,把model的数据传递给detail.jsp做相应的数据替换,最终输出该jsp的html内容
返回json数据:
produces:返回http请求的header
ResponseBody:返回json数据,SeckillResult result会把最终数据封装成json返回给浏览器
Cookie访问:
CookieValue:required=false,不强制传入cookie,当cookie中没有对应的killPhone时不做拦截,也进入到方法中,后续会报异常
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④Controller,如果其中用到intercept(拦截器)的话也会把拦截器绑定到流程当中
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分Controller,其他部分用注解形式完成
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④Controller
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分Controller,其他部分用注解形式完成
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④Controller
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分Controller,其他部分用注解形式完成
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④SeckillController
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分SeckillController,其他部分用注解形式完成
SpringMVC运行流程
用户发送请求,映射到DispatcherServlet(中央控制器Servlet)
默认用到DefaultAnnotationHandlerMapping,用于映射URL,URL对应到具体的Handler
使用默认的DefaultAnnotationHandlerAdapter,用于做Handler适配,最终会衔接到自己做的蓝色部分④SeckillController
DefaultAnnotationHandlerAdapter产出⑤ModelAndView,同时交互到DispatcherServlet中
DispatcherServlet发现应用的是InternalResourceViewResolver(默认的jsp的view)
DispatcherServlet把⑦Model和list.jsp相结合,反馈给用户
实际开发的是蓝色部分SeckillController,其他部分用注解形式完成
cookie的访问
返回json数据
mvc控制器示例
请求方法细节处理
注解映射技巧
Http请求地址映射原理
SpringMVC运行流程
Cookie访问
返回json数据
例子代码:
注解映射技巧
Spring MVC运行流程
SpringMVC运行流程
SpringMVC运行流程
1、首先用户会发送一个请求,所有的请求都会映射到DispatcherServlet(中央控制器,SpringMVC的核心),这个servlet会拦截所有的请求,
2、默认会用到DefaultAnnotation HandlerMapping,这个的作用是用来映射我们的URL,具体就是我们的内一个URL对应到我们的内个Handler。
3、映射完了之后那,会默认用到DefaultAnnotation HandlerAdapter,这个的目的那是做handler适配,
4、然后会衔接到我们的controller。如果其中用到intercept(拦截器)的话他也会把拦截器绑定到我们的流程当中。
5、最终他的产出就是 ModelAndView,view可以理解成jsp页面,同时他会交付到中央处理器DispatchServlet当中。
6、他会发现你应用的是一个InternalResource ViewResolver,这个就是默认的jsp的一个view。
7、他就会把我们的Model和jsp页面相结合,最终返回给我们的用户。
如果你输出的是json的话,把jsp换成json就可以了。
返回Json数据
spring mvc 运行流程
http请求细节用例
SpringMVC运行流程
默认情况下会强制匹配,没有cookie会报异常;
required改为false ,没有的情况下也 允许进入方法