发表于: 2017-04-24 16:43:40
5 1377
今天完成的事情:
SpringMVC的执行流程:
我的理解:
网页发送Request请求,被DispatcherServlet捕获,根据xml对URL解析,得到URI。调用HandlerMapping(处理器映射器)获得拦截器。Controller执行业务逻辑完成后,向适配器返回ModelAndView对象,请求一个适合的ViewResolver进行视图解析,然后视图解析器返回视图View,前端通过Model解析Json通过Response返回给页面。
网上的资料:
1.向服务器发送Http request请求,请求被前端控制器(DispatcherServlet)捕获。
2.前端控制器根据xml文件中的配置(或者注解)对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用处理器映射器(HandlerMapping)获得处理该请求的Handler以及Handler对应的拦截器,最后以 HandlerExecutionChain 对象的形式返回。
3.前端控制器根据获得的Handler,选择一个合适的处理器适配器(HandlerAdapter)去执行该Handler。
4.处理器适配器提取request中的模型数据,填充Handler入参,执行处理器(Handler)(也称之为Controller).
5.Handler(Controller)执行完成后,向处理器适配器返回一个ModelAndView对象,处理器适配器再向前端控制器返回该ModelAndView对象(ModelAndView只是一个逻辑视图)。
6.根据返回的ModelAndView,前端控制器请求一个适合的视图解析器(ViewResolver)(必须是已经注册到Spring容器中的ViewResolver)去进行视图解析,然后视图解析器向前端控制器返回一个真正的视图View(jsp)。
7.前端控制器通过Model解析出ModelAndView中的参数进行解析,最终展现出完整的View并通过Http response返回给客户端。
A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解:
@PathVariable;
绑定它传过来的值到方法的参数上。
- @Controller
- @RequestMapping("/owners/{ownerId}")
- public class RelativePathUriTemplateController {
- @RequestMapping("/pets/{petId}")
- public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
- // implementation omitted
- }
- }
B、处理request header部分的注解:
@RequestHeader
可以把Request请求header部分的值绑定到方法的参数上。
@CookieValue;
可以把Request header中关于cookie的值绑定到方法的参数上。
C、处理request body部分的注解:@RequestParam, @RequestBody;
D、处理attribute类型是注解: @SessionAttributes, @ModelAttribute;
Host文件的工作方式和具体作用:
1.加快域名解析。
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
2.方便局域网用户
3.屏蔽网站
4.顺利连接系统
对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。
SpringMVC 拦截器:
在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的三个方法,如下:
- 1.preHandle方法:进入Handler方法之前执行。可以用于身份认证、身份授权。比如如果认证没有通过表示用户没有登陆,需要此方法拦截不再往下执行(return false),否则就放行(return true)。
- 2.postHandle方法:进入Handler方法之后,返回ModelAndView之前执行。可以看到该方法中有个modelAndView的形参。应用场景:从modelAndView方法:将公用的模型数据(比如菜单导航之类的)在这里传到视图,也可以在这里同一指定视图。
- 3.afterCompletion方法:执行Handler完成之后执行。应用场景:统一异常处理,统一日志处理等。
任务四的内容:
Tiles框架:
遇到的问题:
从后端拿到数据返回给客户端有几种方式?用Json的好处?
1. HTML赋值
2. JS赋值
3. script填充JSON(掌握)
4. AJAX获取JSON(听说)
5. WebSocket实时传输数据(没见过)
服务器端跳转和客户端跳转?
我的页面跳转是用return 返回给Springmvc-servlet.xml来跳转的
明天的计划:
写一个登录注册接口,密码用MD5工具类加密
收获:
1.把SpringMVC注解学习了一波。
1.晚上听超哥讲的一些东西,发现自己的日报有几点要改的:
1.没有条理性。2.没有自己的东西和总结。
这两点从今天起要改。
我想了个办法,把时间划成一个或者2个小时为一段,花10分钟总结一次。试试看有没有用O(∩_∩)O哈哈~
评论