博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring MVC配置
阅读量:6982 次
发布时间:2019-06-27

本文共 6915 字,大约阅读时间需要 23 分钟。

  hot3.png

一、传统方式配置Spring MVC

(1)导入jar包

        需要导入如下的jar包

        junit-3.8.1.jar

        spring-core-3.0.5.RELEASE.jar
        commons-logging-1.1.1.jar
        spring-context-3.0.5.RELEASE.jar
        spring-expression-3.0.5.RELEASE.jar
        spring-context-support-3.0.5.RELEASE.jar
        spring-aop-3.0.5.RELEASE.jar
        aopalliance-1.0.jar
        spring-tx-3.0.5.RELEASE.jar
        spring-asm-3.0.5.RELEASE.jar
        spring-beans-3.0.5.RELEASE.jar
        spring-web-3.0.5.RELEASE.jar
        spring-webmvc-3.0.5.RELEASE.jar
        jstl-1.2.jar
        servlet-api-2.5.jar
        jsp-api-2.1.jar

(2)配置web.xml

        web.xml中完整代码如下所示:

 
Spring3mvc
 
 
  
springMVC
  
org.springframework.web.servlet.DispatcherServlet
  
1
 
 
  
springMVC
  
/
 
 
 
  
contextConfigLocation
  
/WEB-INF/applicationContext.xml
 
 
 
  
index.jsp
 

        配置介绍:

    1. 关于<servlet-name>springMVC</servlet-name>

      此项配置用于配置对应的Servlet的配置文件的名称,具体规则为“servlet-name的标签值-servlet.xml”,如本示例会对应一个“springMVC-servlet.xml”的配置文件。

      如果想打破这种默认约定,可以参照如代码段进行配置:

        <!-- 添加spring3控制器及映射规则 -->

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

      <init-param>

                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath:springservlet-config.xml</param-value>
      </init-param>
       <load-on-startup>1</load-on-startup>
      </servlet>

      其中,“classpath:”代表根路径是类路径。

    2. 关于<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

      此项配置用于配置前置控制器,默认由前置控制器接收所有的请求,然后调用相应的Controller和Action,解析和渲染指定的视图并返回相应。

    3. 关于<load-on-startup>1</load-on-startup>

      此项配置用于配置启动顺序,正常的取值范围是:负整数、0-5。

      当为正数时,数值越小,优先级越高。

      1代表让这个Servlet随Servletp容器一起启动。

    4. 关于<url-pattern>/</url-pattern>

      此项配置用于配置servlet路径请求映射。

      “/”:代表servlet路径是请求URL去掉context路径,且路径信息为null。

      “/xxx”:代表以“/xxx结尾的路径映射”。

      “*.xxx”:代表以“xxx”结尾的扩展名映射。如*.do、*.jsp、*.html。如果配置为多项,可以用英文逗号隔开。

      “”:用于指定精确映射应用程序contextroot的URL模式。如:

    5. <param-value>/WEB-INF/applicationContext.xml</param-value>

      applicationContext.xml是spring的配置文件,常用“applicationContext+名称.xml”的方式来进行命名。

      此项配置用于配置applicationContext.xml的路径。

    6. 关于存放路径的问题

      常见的存放路径有两个,一个是类路径,一个是WEB-INF目录下。

      类路径的示例:<param-value>classpath:springservlet-config.xml</param-value>

      WEB-INF路径示例:<param-value>/WEB-INF/springservlet-config.xml</param-value>

        在有些情况下,xml文件默认是存放在WEB-INF中,所以在配置中可以省略"/WEB-INF/"。        

(3)配置springMVC-servlet.xml

        spring-servlet.xml这个名字是因为上面web.xml中<servlet-name>标签配的值为spring

        <servlet-name>spring</servlet-name>

        命名规则为:<servlet-name>的标签值-servlet.xml

        如果改为如下:

        <servlet-name>springmvc</servlet-name>

        则对应的文件名则为springmvc-servlet.xml。

        spring-servlet.xml完整代码如下所示:

        
      
          
    
    
    
    
    
    
    
    
    
    
        
        
    
       
       
               
       
        

        配置介绍:

        a.关于<mvc:annotation-driven/>

        此项配置用于开启默认注解的支持。它等效于如下配置:

        b.关于配置静态资源映射

        <mvc:default-servlet-handler/>这行代码用于配置静态资源映射,它等效于如下配置:

  
  

        当实际项目中有新增的配置时,就需要根据实际情况进行扩展了。

        c.关于配置注解扫描

        <context:component-scan></context:component-scan>用于配置扫描指定包中类中声明的注解。

        配置注解扫描的配置方式如下所示:

        <context:component-scan base-package="要扫描的包的包名" ></context:component-scan>

        常用的注解有:

      1. @Controller

        声明Action组件

      2. @Service

        声明Service组件

      3. @Repository

        声明Dao组件

      4. @Component 

        泛指组件。

      5. @RequestMapping("/menu") 

        请求映射

      6. @Resource 

        用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName") 

      7. @Autowired

        用于自动化注入,(srping提供的) 默认按类型装配 

      8. @Transactional( rollbackFor={Exception.class})

        事务管理

      9. @ResponseBody

        将HTTP请求正文转换为适合的HttpMessageConverter对象。

      10. @Scope("prototype") 

        设定bean的作用域

        如果是多个包名,可以用英文逗号隔开;

        可以用*来进行包名的匹配,如com.uni2uni.*;

        本例中“use-default-filters”属性默认为true。此时,会扫描指定包下所有的@Component类,并注册成bean。

        当不需要扫描这么大粒度的包时,可以将此属性设置为false,并使用<context:exclude-filter>和<context:include-filter>标签指定要排除的或包括的类型。

        use-default-filters="false"的情况下,<context:exclude-filter>指定的不扫描,<context:include-filter>指定的扫描。

        d.关于配置视图解析

        在本例中,设定视图的路径为”WEB-INF/views“,视图文件的后缀名为”.jsp“。

        关于配置视图解析及使用了解即可,后续会详细介绍。    

二、Maven方式配置Spring MVC

(1)在Maven项目中配置Spring mvc

        pom.xml完整代码如下所示:

  
4.0.0
  
com.uni2uni.myapp
  
testspring
  
war
  
0.0.1-SNAPSHOT
  
testspring Maven Webapp
  
http://maven.apache.org
    
  
   
junit
   
junit
   
3.8.1
   
test
  
  
   
org.springframework
   
spring-core
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-context
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-context-support
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-aop
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-tx
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-asm
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-beans
   
3.0.5.RELEASE
  
  
  
  
   
org.springframework
   
spring-web
   
3.0.5.RELEASE
  
  
   
org.springframework
   
spring-webmvc
   
3.0.5.RELEASE
  
  
   
javax.servlet
   
jstl
   
1.2
  
  
  
   
javax.servlet
   
servlet-api
   
2.5
   
provided
  
  
   
javax.servlet.jsp
   
jsp-api
   
2.1
   
provided
  
 
   
    
testspring
  

三、知识扩展

(1)重要的接口和类介绍     

        DispatcherServlet:前置控制器,默认会接收全部请求。

        HandlerMapping接口:用于处理请求的映射。

        DefaultAnnotationHandlerMapping:HandlerMapping接口的实现,用于把一个URL映射到具体的Controller类上。

        HandlerAdapter接口:用于处理请求到Action的映射。

        AnnotationMethodHandlerAdapter:HandlerAdapter接口的适配器,用于把一个URL请求映射到对应Controller类的Action上。

        ViewResolver接口:用于解析View。

        InternalResourceViewResolver:ViewResolver接口的实现,用于把ModelAndView的逻辑视图名解析为具体的View。

(2)Spring MVC的处理流程

        172125_7mqh_119360.jpg

转载于:https://my.oschina.net/wlb/blog/286377

你可能感兴趣的文章
vsphere web client 加载不上本地镜像提示加载插件超时
查看>>
db2 之 入门实验
查看>>
开始Jquery的学习生涯
查看>>
手机测试项目时报INSTALL_FAILED_INSUFFICIENT_STORAGE
查看>>
10_css选择符类型1.html
查看>>
修改 liteide 的 godoc 文档样式
查看>>
阿里镜像
查看>>
python 实现脚本上传远程服务并执行脚本
查看>>
Direct2D (39) : 使用 IDWriteTextLayout.Draw() 方法绘制文本
查看>>
突然想起曾经一面试官问我 | 和 || 的区别
查看>>
Struts框架之ActionForm(2)——ActionForm的生命周期
查看>>
GNS3中实现IP访问控制列表配置实验
查看>>
关于iwebshop里excel表格导出开发整理
查看>>
DNS软件bind使用(二)
查看>>
用J-Link调试S3C6410(2) --- 运行Leds程序
查看>>
jpeg格式文件剖析(一)
查看>>
TinyX对触摸屏支持的实现
查看>>
as3与java的socket通信实例1
查看>>
Spring学习笔记(11)——bean之间的关系
查看>>
Java学习笔记(35)——Java集合07之TreeMap
查看>>