Spring框架 - Web框架 Web框架概述

#Web框架概述html

##Servlet Servlet返回用户响应,JSP的形式,HTML代码,能够制做网页展现信息代码。web

输入图片说明

##Web页面 定义serlvet的路径,好比定义servletA,在web.xml添加serlvet的名称跟地址的映射若是有servletB,则添加B。若是接口少,则不是问题,若是接口不少 咱们在web的一些例如REST的服务,REST接口并非单纯的静态地址,是动态参数而变化的,/user/{userId},前面是user,后面是userId,根据user的不一样而不一样。动态的映射地址,若是经过Servlet只能经过/user/*定义到某个servlet,而后本身编写代码进行匹配userId。若是咱们的接口是以这种资源路径的方式,须要框架管理映射spring

  • 须要一个框架来处理路由

##MVC模式 MVC核心为了解决数据与视图分离,数据进行修改不须要修改视图,视图进行修改不须要修改数据,而由控制器进行处理。 输入图片说明mvc

若是咱们经过Serlvet制做网页,不可避免的经过Serlvet嵌入大量Html代码。这样咱们把html耦合到了Java代码当中。
JSP相反的是Java代码嵌入到了HTML页面中
输入图片说明 若是咱们要把视图与Java代码解耦app

  • 须要一个框架来处理MVC

##Web MVC框架框架

输入图片说明

  • Handler Mapping
    请求过来的请求路径到最终处理逻辑之间的映射关系
  • Controller
    负责视图与模型之间的关系,在xxx下返回视图,以及使用什么样的数据模型。
  • View Resolver
    解决在什么状况下展现什么视图,好比在请求JSON数据时,返回JSON数据。在请求XML数据时,返回XML数据。若是是返回普通网页,则返回Html页面
  • View
    不一样的展现方式,页面、JSON、XML等等。

##DispatcherSerlvet使用 首先咱们须要在web.xml里面,去定义DispatcherServlet,而后定义这个servlet-name。
在下面的部分,咱们须要serlvet-mappingurl

<!-- SpringMVC的Servlet添加,Web项目载入Spring配置从这里开始 -->
    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!-- 这里咱们配置spring的配置文件位置 -->
            <param-value>/WEB-INF/appconfig/mvc/spring/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

这里是Spring提供的Serlvet,而不是咱们本身编写的。咱们经过serlvet-name定义一个dispatcherSerlvet,若是没有填写配置路径,则默认为WEB-INF/[servlet-name]-servlet.xmlspa

##[servlet-name]-servlet.xmlcode

  • HandlerMapping
    路径到实际业务的映射,新版本的Spring不须要定义HandlerMapping,把SpringMVC开启默认就定义好Mapping,请求自动返回handlerxml

  • Controllers
    能够经过Annotation定义Controller,经过Spring自动发现Controller

  • View解析相关
    若是不定义会默认有一些解析功能,通常状况下咱们都会配置View解析,来根据咱们不一样的须要返回不一样的视图。返回的数据相同,可是返回的结果多是网页,也多是pdf。

##WebApplicationContext 不须要定义,会根据配置自动生成,WebApplicationContext并非惟一的,能够定义多个Serlvet匹配不一样的规则。咱们并不须要指定全部的配置路径的映射。能够定义不少个DispathcerServlet,咱们的DAO等通用内容。

输入图片说明

##ContextLoaderListener Spring定义了ContextLoaderListener,这种方式定义通用的context
首先咱们在web.xml定义listener,而后咱们须要去指定Spring的配置文件,可能会指定多个appliactionContext*.xml。咱们这种方式WebApplicationContext叫作Root WebApplicationContext.

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

咱们经过DispatcherServlet当中定义的WebApplicationContext是局部的配置,好比说controller、view等。可是咱们经过ContextLoaderListener定义的,则是全局的,是Root WebApplicationContext。
通常Spring去查找Bean,是经过WebApplicationContext,若是在本DispatcherSerlvet中没有找到,则去Root WebApplicationContext中寻找。
极端的作法把全部的Bean都定义Root WebApplicationContext。可是很不方便。通常标准作法是,对应的Servlet,对应相关的Controller和View。在公共的Root WebApplicationContext定义公共的Service、Repositories。

输入图片说明

相关文章
相关标签/搜索