idea 中webapp项目的springMVC配置(1)

在web项目中配置springmvc主要包括三个步骤

  1. 添加所需的jar包
  2. 配置web.xml
  3. 配置servlet-name-servlet.xml

一、添加所需的jar包

在spring 的官方API文档中给所有的包的作用做了概述,这里列出几个常用的:
1、org.springframework.aop-{vision}.jar:与Aop编程相关的包
2、org.springframework.beans-{vision}.jar:提供了简洁操作bean的接口
3、org.springframework.context-{vision}.jar:构建在bean基础上,又来处理资源文件与国际化
4、 org.springframework.core-{vision}.jar:spring核心包
5、org.springframework.web-{vision}.jar:核心包,提供web层接口
6、org.springframework.web.servlet-{vision}.jar:web层的一个具体实现包,DispatcherServlet就位于该包中
jar包的添加利用maven自动实现,具体的代码如下:

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!--spring的版本信息-->
    <spring.version>3.2.2.RELEASE</spring.version>
  </properties>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!--org.springframework.web.servlet-{vision}.jar-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webMVC</artifactId>
      <version>${spring.version}</version>
    </dependency>

二、配置web.xml

springMVC的核心是DispatcherServlet,使用springMVC的第一步就是将下面的DispatchServlet配置到web.xml,其中servlet-name属性非常重要,默认情况下,DispatchServlet会加载servlet-name-servlet.xml的文件,在本次例子中默认会加载WEN-INF目录下的spring-servlet.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!--定义了web应用的名称-->
    <display-name>MavAppDemo</display-name>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class> org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

除了上述加载默认servlet-name-servlet.xml的文件的配置方式,还可以通过init-param标签来设置DispatchServlet具体加载的xml文件。(其实load-on-startup不加并不会出错,但是如果要修改servlet-name-servlet.xml的配置位置或名字,init-param一定要放在load-on-startup前面,否则xml校验出错)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!--定义了web应用的名称-->
    <display-name>MavAppDemo</display-name>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>
    org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>
                contextConfigLocation
            </param-name>
            <param-value>
                classpath*:/spring/spring-servlet.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

简要说明:
DispatcherServlet就是一个Servlet,是对请求进行转发的核心Servlet,本例中所有.do的请求将首先被DispatcherServlet处理,而DispatcherServlet它要作的工作就是对请求进行分发(也即是说把请求转发给具体的Controller)。可以简单地认为,它就是一个总控处理器,事实上它除了具备总控处理理器对请求进行分发的能力外,还与spring的IOC容器完全集成在一起,从而可以更好地使用spring的其它功能。

三、servlet-name-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!-- 添加注解驱动 -->
    <mvc:annotation-driven />
    <!-- 默认扫描的包路径 -->
    <context:component-scan base-package="com.www.xww" />
</beans>

mvc:annotation-driven 是springMVC中@Controller分发请求所必须的,这是一种简写模式,完全可以通过手动配置DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter这两个bean来代替。
补充:
HandlerMapping 是Springmvc用来找到并保存url请求和处理函数间的mapping关系,包括SimpleUrlHandlerMapping(通过配置文件,把一个URL映射到Controller)和DefaultAnnotationHandlerMapping(通过注解,把一个URL映射到Controller类上)。以后者为例,它的作用是扫描当前所有已经注册的spring beans中的@requestmapping标注以找出url 和 handler method处理函数的关系并予以关联。

Handleradapter 是Springmvc用来实际调用处理函数的。以AnnotationMethodHandlerAdapter为例 ,DispatcherServlet根据handlermapping找到url请求对应的处理函数后,首先检查当前工程中注册的所有可用的handlerAdapter,根据handlerAdapter中的supports方法找到可以使用的handlerAdapter。通过调用handlerAdapter中的handle方法来处理及准备handler method中的参数及annotation(这就是spring mvc如何将reqeust中的参数变成handle method中的输入参数的地方),最终调用实际的handle method。

通过以上三个步骤就可以基本实现一个spring的功能。还有一些功能的配置见
idea 中webapp项目的springMVC配置(2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值