用SpringMVC搭建web应用

摘要: 原创出处 https://peijie-sh.github.io 欢迎转载,保留摘要,谢谢!

在使用SpringMVC时,最重要的2个类就是DispatcherServletContextLoaderListenerDispatcherServlet加载包含Web组件的bean,如控制器、视图解析器以及处理器映射,ContextLoaderListener加载应用中的其他bean(通常是驱动应用后端的中间层和数据层组件)。

Servlet 3.0之后

servlet3.0规范出来后,spring3.2有了一种简便的搭建方式。
直接继承AbstractAnnotationConfigDispatcherServletInitializer即可。
这个类会自动创建DispatcherServlet和ContextLoaderListener。这种方式不再需要web.xml,非常方便。

原理:

在Servlet 3.0环境中,容器会在类路径中查
找实现javax.servlet.ServletContainerInitializer接口的类,如果能发现的话,就会用它来配置Servlet容器。Spring提供了这个接口的实现,名为SpringServletContainerInitializer,这个类反过来又会查找实现WebApplicationInitializer的类并将配置的任务交给它们来完成。
Spring 3.2引入了一个便利的WebApplicationInitializer基础实现,也就
是AbstractAnnotationConfigDispatcherServletInitializer。
所以我们只要继承AbstractAnnotationConfigDispatcherServletInitializer(同时也就实现了WebApplicationInitializer),在部署到Servlet 3.0容器中的时候,容器会自动发现它,并用它来配置Servlet上下文。

public class MyWebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[]{RootConfig.class};
    }

    // 指定配置类
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[]{WebConfig.class};
    }

    // 将DispatcherServlet映射到"/"
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

Servlet 3.0之前

如果你要部署在不支持servlet3.0的容器,比如tomcat6和以下版本,那就只能通过web.xml来配置了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!-- 配置根上下文 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!-- 注册Spring监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 

    <!-- SpringMVC前端控制器 -->
    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器、映射器、适配器等等) 
        如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称- serlvet.xml(springmvc-servlet.xml) -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 指定servlet加载顺序,整数越小优先越高 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值