springMVC

182 阅读4分钟

1、

@Controller注解表示这个类是一个Handler

@RequestMapping注解括号里面的表示访问的URL;

2、

① 配置前端控制器 web.xml

配置前端控制器DispatcherServlet

② 配置处理器映射器、处理器适配器、视图解析器 springmvc.xml

 <!--注解处理器映射器  --> 
 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

 <!--注解处理器适配器  -->   
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>  
 <!--使用mvc:annotation-driven可以代替上面的映射器和适配器这里面会默认加载很多参数绑定方法,
 比如json转换解析器就默认加载,所以优先使用下面的配置-->
<mvc:annotation-driven></mvc:annotation-driven> 

 <!--批量配置Handler,指定扫描的包全称  -->
<context:component-scan base-package="com.ys.controller"></context:component-scan>

 <!--配置视图解析器  -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">   </bean>

③ 编写 Handler,也就是 Controller

④ 加载 Spring 容器 web.xml

 <!-- 加载spring容器 -->
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:spring/spring-*.xml</param-value>
</context-param>
<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

3、下面我们对上面出现的一些组件进行解释:

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

    作用:接收请求,响应结果,相当于转发器,中央处理器。
    有了DispatcherServlet减少了其它组件之间的耦合度。
    
  • 2、处理器映射器HandlerMapping(不需要程序员开发)。

    作用:根据请求的url查找Handler。
    
  • 3、处理器适配器HandlerAdapter(不需要程序员开发)。

    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler。
    
  • 4、处理器Handler(需要程序员开发)。

    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
    
  • 5、视图解析器ViewResolver(不需要程序员开发)。

    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
    
  • 6、视图View(需要程序员开发jsp)。

     注意:View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…);
     ps:不需要程序员开发的,需要程序员自己做一下配置即可。
    

4、mvc请求处理流程

  • 第一步:用户发送请求到前端控制器(DispatcherServlet)。

  • 第二步:前端控制器请求 HandlerMapping 查找 Handler,可以根据 xml 配置、注解进行查找。

  • 第三步: 处理器映射器 HandlerMapping 向前端控制器返回 Handler

  • 第四步:前端控制器调用处理器适配器去执行 Handler

  • 第五步:处理器适配器执行 Handler

  • 第六步:Handler 执行完成后给适配器返回 ModelAndView

  • 第七步:处理器适配器向前端控制器返回 ModelAndView ,ModelAndView 是SpringMVC 框架的一个底层对象,包括 Model 和 View

  • 第八步:前端控制器请求试图解析器去进行视图解析根据逻辑视图名来解析真正的视图。

  • 第九步:试图解析器向前端控制器返回 view

  • 第十步:前端控制器进行视图渲染,就是将模型数据(在 ModelAndView 对象中)填充到 request 域

  • 第十一步:前端控制器向用户响应结果

5、mvc思想

MVC(ModelViewController)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面。

用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。

    1. 模型: 业务逻辑包含了业务数据的加工与处理以及相应的基础服务(为了保证业务逻辑能够正常进行的事务、安全、权限、日志等等的功能模块)
    1. 视图:展现模型处理的结果;另外,还要提供相应的操作界面,方便用户使用。
    1. 控制器:视图发请求给控制器,由控制器来选择相应的模型来处理;模型返回的结果给控制器,由控制器选择合适的视图。

使用java类来实现模型,使用jsp来实现视图,使用servlet或者filter来实现控制器。

参考: www.cnblogs.com/ysocean/p/7…