《Spring实战》第七章读书笔记

5 篇文章 0 订阅

使用SpringMVC构建Web应用程序

浏览器发送请求之后在SpringMVC的第一站是DispatcherServlet,与大多数基于Java的Web框架一样,SpringMVC所有的请求都会通过一个前端控制器Servlet。前端控制器是常用的Web应用模式,在这里一个单实例的Servlet将请求委托给应用程序的其他组件来执行实际的处理。在SpringMVC中,DispatcherServlet就是前端控制器。


SpringMVC的核心是DispatcherServlet,这个Servlet充当SpringMVC的前端控制器。与其他Servlet一样,DispatcherServlet一样,DispatcherServlet必须在Web应用程序的web.xml文件中进行配置:

<servlet>
    <servlet-name>spitter</servlet-name>
    <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

为这个Servlet所设置的<servlet-name>是很重要的。默认情况下,DispatcherServlet在加载时会从一个基于这个Servlet名字的XML文件中加载Spring应用上下文。在这个示例中,因为Servlet的名字为spitter,DispatcherServlet将尝试从一个名为spitter-servlet.xml的文件(位于应用程序的WEB-INF目录下)来加载应用上下文。

接下来必须声明DispatcherServlet处理哪些URL:

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

通过将DispatcherServlet映射到/,声明了它会作为默认的Servlet并且会处理所有的请求,包括对静态资源的请求

在实际开发中主要使用基于注解的控制器类,而为了使用SpringMVC提供的注解驱动特性,需要在Web-inf目录下的spitter-servlet.xml文件中添加<mvc:annotation-driven />

除了支持SpringMVC提供的注解特性,该标签还注册了多个特性,包括JSR-303校验支持、信息转换以及对域格式化的支持。


@Controller注解实际上是@Component注解的一种具体化,为了让Spring自动扫描到该controller,需要在spitter-servlet.xml文件中声明:

<context:component-scan base-package="com.habuma.spitter.mvc" />

@RequestMapping({"","/home"})表明处理"/"或"/home"路径的请求。


在spitter-servlet.xml中配置InternalResourceViewResolver:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="WEB-INF/VIEWS/"/>
    <property name="suffix" value=".jsp"
</bean>

DispatcherServlet会通过<servlet-name>加载其spring应用上下文,但是还需要ContextLoaderListener来加载其他的配置文件。

ContextLoaderListener是一个Servlet监听器,除了DispatcherServlet创建的应用上下文外,它能够加载其他的配置文件到一个Spring应用上下文中。为了使用ContextLoaderListener,需要在web.xml文件中添加<listener>声明:

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

我们必须告诉ContextLoaderListener需要加载哪些配置文件。如果没有指定,上下文加载器会查找/WEB-INF/applicationContext.xml这个Spring配置文件。

为了给ContextLoaderListener指定一个或多个Spring配置文件,需要在servlet上下文中配置contextConfigLocation参数:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/spitter-security.xml
        classpath:service-context.xml
        classpath:persistence-context.xml
        classpath:dataSource-context.xml
    </param-value>
</context-param>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值