【模块七】Spring全家桶篇SpringMVC篇☞参考答案

编程

  • 简介

1.什么是Spring MVC?

Spring MVC是一个基于Java,运用MVC设计模式,实现Model,View,Controller分离的请求驱动类型的轻量级Web框架。

2.SpringMVC的流程

(1)用户发送请求至前端控制器DispatcherServlet;

(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;

(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

 

3.  Spring MVC的主要组件

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

  • SpringMVC和Struts2的区别

(1)spring mvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。

(2)spring mvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

(3)Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

  • Spring MVC常用注解

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户

@Resource 用于注入,默认按名称装配

@Autowired 用于注入,默认按类型装配

 

 

Spring常用注解

1.定时任务:@Scheduled(cron = "0 */3 * * * ?"):每三分钟执行一次

注解原理:

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池

  • Spring MVC拦截器和JAVA过滤器的区别

相同点:都能实现权限校验功能,起到拦截作用

不同点:

规范不同:过滤器依赖于servlet容器,基于函数回调实现;拦截器依赖于web框架,基于java反射机制实现

拦截范围不同:过滤器可以对几乎所有请求进行过滤;拦截器只能对controller中的方法进行拦截

执行时间点不同:过滤器是运行在所有的Servlet之前,拦截器是运行在DispatcherServlet之后、Controller之前的

配置文件不同:过滤器是配置在web.xml中,拦截器是配置在spring的配置文件中

示例:

<!—配置过滤器 -->   

   <filter>  

        <filter-name>testFilter1</filter-name>  

        <filter-class>cn.zifangsky.filter.TestFilter1</filter-class>  

    </filter>  

    <filter-mapping>  

        <filter-name>testFilter1</filter-name>  

        <url-pattern>/*</url-pattern>  

</filter-mapping>  

<!—配置拦截器 -->

<mvc:interceptors>

<!-- 对所有请求都拦截,公共拦截器可以有多个 -->

<bean name=”logInterceptor” class=” com. common.http.interceptror.LoggingInterceptor”/>       

  <mvc:interceptor>

       <!-- 对报表进行拦截 -->

       <mvc:mapping path="/reportToDruid "/>

       <!-- 特定请求的拦截器只能有一个 -->

       <bean class="cn.zifangsky.interceptor.TestInterceptor" />

  </mvc:interceptor>

</mvc:interceptors>

以上是 【模块七】Spring全家桶篇SpringMVC篇☞参考答案 的全部内容, 来源链接: utcz.com/z/512655.html

回到顶部