spring mvc学习

1、 spring-framework模块

springframework 包含20多种模块,可以分为:corecontainerDateAccessWebAOP Instrumentation MessagingTest

Spring-Core模块和sping-beans模块是spring framework的基础模块,实现了IoC和依赖注入的功能。其他模块很多都用到这两个功能。

 

Springmvc就是springweb模块里的一部分。spring web模块可以具体分为 spring-webspring-webmvcspring-websocketspring-webmvc-portlet

 

2、 webmvc

mvc模式是一种常用的web构架模式。将应用分为了三个部分:model(模型)、view(视图)、controller(控制器)。

Model:根据controller的指令,为viewer提供数据

View根绝model的变化产生新的输出.

Controller处理用户交互的部分。可以想model发送指令来更新model,也可以向view层发送指令来更新view .

 

3、 springweb mvc

spring mvc 围绕一个叫DispatcherServlet的调度器来设计的。

Spring mvc和其他的mvc框架一设计了一个servletrequest求和controller。但是springDispatcherServlet是基于spring IoC设计的,它可以让应用灵活的运用spring的其他功能,比如spring-beansspring-aop等等。

Spring mvc中处理request请求的过程如下图.

3-1DispatcherServlet

DispatcherServlet就是一个从HttpServlet类继承来的,在用中需要map来接受理相url求。准的jave EE Servlet 3.0+ 中代可能是写成下面这样的。

 

public class MyWebApplicationInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext container) {
        ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet());
        registration.setLoadOnStartup(1);
        registration.addMapping("/example/*");
    }
}

就是说这servlet在运行中接收urlhttp://Host:Port/example/*”开的所有求。

 

上面有一个WebApplicationInitializer Spring中也有个基的接口。Spring做的就是在实现的灵活配置,通配置文件,用就可以实现自己的DispatchServlet。就不需要再特地写代了。因是一个servlet,所以关于DispatchServlet的相关配置也是写在web.xml中的。Spring mvc这样实现servlet的配置的。

<web-app>
    <servlet>
        <servlet-name>example</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>example</servlet-name>
        <url-pattern>/example/*</url-pattern>
    </servlet-mapping>
</web-app>

 

 

Spring-context中有一个接口叫ApplicationContext, 这个接口是继承 spring-bean中的BeanFactory而来,作用是可以在java应用中提供一个基于java-bean的附加功能。很多javaEE的应用利用ApplicationContext来做一个实例声明,依靠ContextLoader类来自动加载实例化需要的类,而不是在代码中去实例化某个类了。

SpringDispachServlet也有自己的WebApplicationContext,在WebApplicationContext中定义需要在应用startup 的时候需要初始化的类的实例。

默认情况下这个Servletconfiguration文件是与在“/WEB-INF/”目录下的[servlet-name]-servlet.xml。工程启动的时候,读取web.xml文件后会去找这个与定义的servlet-name相同的配置文件。也可以通过在web.xml的配置,指定特殊目录下的配置文件,如下所示。

<web-app>

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/root-context.xml</param-value>

    </context-param>

    <servlet>

        <servlet-name>dispatcher</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value></param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>dispatcher</servlet-name>

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

    </servlet-mapping>

    <listener>

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

    </listener>

</web-app>

 

 

Spring中的DispatcherServlet需要用到一些特定的beans来处理request和渲染输出view。这些beans也是springmvc的一部分。可以根据需要来选择使用配置哪些beans

Bean type

Explanation

HandlerMapping

request请求映射到handler中或者拦截器中

HandlerAdapter

处理适配器,帮助DispatcherServlet处理映射hanlder中的过程。

HandlerExceptionResolver

异常映射情况下的处理

ViewResolver

解析view name,找到正确的view

LocaleResolver & LocaleContextResolver

用来解决locale

ThemeResolver

主题

MultipartResolver

处理multi-part requests,如上传文件

FlashMapManager

处理FlashMap

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值