搭建SpringMVC框架需要Spring支持
pom.xml依赖spring-mvc和spring-context
1 2 3 4 5 6 7 8 9 10 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.4.RELEASE</version> </dependency>
配置web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> <!-- 默认是/WEB-INF/applicationContext.xml --> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/SpringMVC-servlet.xml</param-value> <!-- 默认是/WEB-INF/[servlet名字]-servlet.xml --> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
其中,必要的配置就是指定servlet和listener。
ContextLoaderListener指定了IOC容器初始化的方法
DispatcherServlet则定义了mvc的相关内容,并配置拦截的url,如上面所示,所有/开头的请求,都会通过SpringMVC这个servlet进行处理。
他们都需要一个xml文件,默认位置上面已经说过了。
Spring配置文件(applicationContext.xml)。空的,并没有任何bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> </beans>
SpringMVC配置文件(SpringMVC-servlet.xml)。包含扫描controller的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <!-- 设置使用注解的类所在的jar包 --> <context:component-scan base-package="com.gaussli.controller" /> </beans>
Controller文件,在包com.gaussli.controller下
1 2 3 4 5 6 7 8 9 10 11 12 13 package com.gaussli.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @RequestMapping("/hello") public @ResponseBody String test() { return "hello, world! This com from spring!"; } }
添加spring-mvc和spring-context依赖后,maven会自动依赖所有关联的包
spring-webmvc
spring-beans
spring-core
spring-expression
spring-web
spring-context
spring-aop
aopalliance
commons-logging
spring每个jar作用
spring.jar 包含有完整发布模块的单个jar包。但不包括mock.jar、aspect.jar、spring-portlet.jar、and spring-hibernate2.jar。
spring-src.zip 所有的源代码压缩包。
除了spring.jar文件,Spring还包括有其它21个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择
spring-core.jar 这个jar文件包含Spring框架基本的核心工具类。Spring其它组件都要使用到这个包里的类,是其它组件的基本核心,当然也可以在自己的应用系统中使用这些工具类。外部依赖Commons Logging, (Log4j)
spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建喝管理bean,以及进行Inversion of Control(IoC) / Dependency Injection(DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar和spring-beans.jar文件就可以了。外部依赖spring-core.jar, (CGLIB)
spring-aop.jar 这个jar文件包含在应用中使用Spring的AOP特性时所需的类喝源码级元数据支持。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。外部依赖spring-core, (spring-beans, AOP Alliance, CGLIB, Commons Attributes)
spring-context.jar 这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,instrumentation组件以及检验Validation方面的相关类。外部依赖spring-beans, (spring-aop)
spring-dao.jar 这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事物支持,还需在自己的应用里包含spring-aop.jar。外部依赖spring-core, (spring-aop, spring-context, JTA API)
spring-jdbc.jar 这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。外部依赖spring-beans, spring-dao
spring-support.jar 这个jar文件包含支持UI模版(Veloctity、FreeMarker、JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类。外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache)
spring-web.jar 这个jar包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入Web Application Context特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。外部依赖spring-context, Serlvet API, (JSP API, JSTL, Commons FileUpload, COS)
spring-webmvc.jar 这个jar文件包含Spring MVC框架相关的所有类。包括框架的Servlets、Web MVC框架、控制器喝视图支持。当然,如果应用使用了独立的MVC框架,则无需这个jar文件里的任何类。外部依赖spring-web, (spring-support, Tiles, iText, POI)
spring-portlet.jar spring自己实现的一个类型Spring MVC的框架。包括一个MVC框架和控制器外部依赖spring-web, Portlet API, (spring-webmvc)
spring-struts.jar Struts框架支持,可以更方便更容易的集成Struts框架外部依赖spring-web, Struts
spring-remoting.jar 这个jar文件包括支持EJB、远程调用Remoting(RMI、Hession、Burlap、Http Invoker、JAX-RPC)方面的类。外部依赖spring-aop, (spring-context, spring-web, Hession, Burlap, JAX-RPC, EJB API)
spring-jmx.jar 这个jar包提供了对JMX 1.0/1.2的支持类。外部依赖spring-beans, spring-aop, JMX API
spring-jca.jar 对JCA 1.0的支持外部依赖spring-beans, spring-dao,JCA API
spring-jdo.jar 对JDO 1.0/2.0的支持外部依赖spring-jdbc, JDO API, (spring-web)
spring-jpa.jar 对JPA 1.0的支持外部依赖spring-jdbc, JPA API, (spring-web)
spring-hibernate2.jar 对Hibernate2.1的支持,已经不建议使用。外部依赖spring-jdbc, Hibernate2, (spring-web)
spring-hibernate3.jar 对Hibernate3.0/3.1/3.2的支持外部依赖spring-jdbc, Hibernate3, (spring-web)
spring-toplink.jar 对TopLink框架的支持外部依赖spring-jdbc, TopLink
spring-ibatis.jar 对iBATIS SQL Maps的支持外部依赖spring-jdbc, iBATIS SQL Maps
spring-mock.jar 这个jar文件包括Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。并且提供了对JUnit的支持。外部依赖spring-core
spring-aspects.jar 提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如Eclipse AJDT
spring-agent.jar Spring的InstrumentationSavingAgent(为InstrumentationLoadTimeWeaver),一个设备代理包,可以参考JDK1.5的Instrumentation功能获得更多信息。外部依赖none (for use at JVM startup:”-javaagent:spring-agent.jar”)
spring-tomcat-weaver.jar 扩展Tomcat的ClassLoader,使其可以使用instrumentation(设备)类外部依赖none (for deployment into Tomcat’s “server/lib” directory)
(•̀ᴗ•́)و ̑̑