[J2EE]Mavan搭建最小化SpringMVC项目

  1. 搭建SpringMVC框架需要Spring支持

  1. 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>
  1. 配置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文件,默认位置上面已经说过了。

  1. 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>
  1. 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>
  1. 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!";
}
}
  1. 添加spring-mvc和spring-context依赖后,maven会自动依赖所有关联的包

  • spring-webmvc
  • spring-beans
  • spring-core
  • spring-expression
  • spring-web
  • spring-context
  • spring-aop
  • aopalliance
  • commons-logging
  1. 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)

(•̀ᴗ•́)و ̑̑

Share