发表于: 2017-04-24 16:43:40

5 1380


今天完成的事情:

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;

绑定它传过来的值到方法的参数上。

  1. @Controller  
  2. @RequestMapping("/owners/{ownerId}")  
  3. public class RelativePathUriTemplateController {  
  4.   
  5.   @RequestMapping("/pets/{petId}")  
  6.   public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {      
  7.     // implementation omitted  
  8.   }  

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. 1.preHandle方法:进入Handler方法之前执行。可以用于身份认证、身份授权。比如如果认证没有通过表示用户没有登陆,需要此方法拦截不再往下执行(return false),否则就放行(return true)。
  2. 2.postHandle方法:进入Handler方法之后,返回ModelAndView之前执行。可以看到该方法中有个modelAndView的形参。应用场景:从modelAndView方法:将公用的模型数据(比如菜单导航之类的)在这里传到视图,也可以在这里同一指定视图。
  3. 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哈哈~



返回列表 返回列表
评论

    分享到