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

#Web框架概述

##Servlet Servlet返回用户响应,JSP的形式,HTML代码,可以制作网页展示信息代码。

输入图片说明

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

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

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

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

  • 需要一个框架来处理MVC

##Web MVC框架

输入图片说明

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

##DispatcherSerlvet使用 首先我们需要在web.xml里面,去定义DispatcherServlet,然后定义这个servlet-name。
在下面的部分,我们需要serlvet-mapping

<!-- 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.xml

##[servlet-name]-servlet.xml

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

  • 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。

输入图片说明

转载于:https://my.oschina.net/hava/blog/776453

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值