前言:
一、总共有10节,也就是10篇博客来讲述Spring的MVC,几乎涵盖了所有Spring MVC中的内容。
二、我创建的例子是一个球场预订系统,例子我已经测试调试通过,是一个Maven的project,包含一个Parent project:wsheng-spring-base和一个子Module:wsheng-spring-mvc.
三、在Eclipse中直接import maven的project即可,会同时引入上诉两个project的。
四、如果你没有耐心,可以不必往下学习,因为网上有很多例子,但是都是讲的Spring MVC很少的面,而且你可以快速的上手,但如果你想真正了解Spring MVC中的很多细节,就可以慢慢的去看博客(从第一节到第十节),如果有什么问题,欢迎信息告诉我。
五、学习的方法是你可以先将源码导入到eclipse中,然后根据博客上的内容,对照源码,慢慢消化,这是个漫长的过程,但是会帮助你了解很多Spring MVC的细节。
===================================================================================
Spring MVC是Spring框架最重要的模块之一,它构建于强大的Spring IOC容器之上,然后可大量使用容器的特性简化其配置。
模式-视图-控制器(MVC)是UI设计模式中常见的设计模式。这种模式主要用于区分应用程序中的模式、视图和控制器三种角色。MVC模式的核心思想是分离业务逻辑和UI,MVC3层各自扮演自己的角色,独立修改,互不影响。其中模式层负责封装视图层展示用的数据,视图层只负责显示数据,不包含任何的业务逻辑,控制器负责接收用户请求并调用后端的服务进行业务逻辑的处理。
Spring MVC3层模式中,模式层通常包含服务层处理的或者是持久化层存储的领域对象组成。视图层可以是JSP,PDF,Flex,Excel等。
参照附件源码:
1. 解决方法:
在Spring2.5之前,要实现控制器层,只能写一个类继承AbstractController或者实现相关的接口。Spring2.5-Spring3.x之间,既可以继承AbstractController类也可以实现相关的接口,也可以使用强大的注解@Controller功能,Spring3.0之后,只能使用注解@Controller功能。
2. 相关的领域对象(Model层)
1). 预订实体类
package com.wsheng.spring.domain;
import java.util.Date;
public class Reservation {
private String courtName;
private Date date;
private int hour;
private Player player;
private SportType sportType;
public Reservation() {}
public Reservation(String courtName, Date date, int hour, Player player, SportType sportType) {
this.courtName = courtName;
this.date = date;
this.hour = hour;
this.player = player;
this.sportType = sportType;
}
public String getCourtName() {
return courtName;
}
public Date getDate() {
return date;
}
public int getHour() {
return hour;
}
public Player getPlayer() {
return player;
}
public SportType getSportType() {
return sportType;
}
public void setCourtName(String courtName) {
this.courtName = courtName;
}
public void setDate(Date date) {
this.date = date;
}
public void setHour(int hour) {
this.hour = hour;
}
public void setPlayer(Player player) {
this.player = player;
}
public void setSportType(SportType sportType) {
this.sportType = sportType;
}
}
2)运动项目实体类
package com.wsheng.spring.domain;
/**
*
* @author Wang Sheng(Josh)
*
*/
public class SportType {
private int id;
private String name;
public SportType() {}
public SportType(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
3)球员实体类
package com.wsheng.spring.domain;
/**
* Player(球员)
* @author Wang Sheng(Josh)
*
*/
public class Player {
private String name;
private String phone;
public Player() {}
public Player(String name, String phone) {
this.name = name;
this.phone = phone;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
3. 设置Spring MVC应用
1)基于Spring的Web应用同样必须符合J2EE目录规范:如在WEB-INF目录下必须有一个web.mxl的部署描述符,这个WEB应用的类文件和JAR文件应该分别放在WEB-INF/classes和WEB-INF/lib目录中。
2)添加Spring的常规依赖,Spring web依赖和SpringMVC依赖
Spring的常规依赖可以参看源码附件中的pom.xml,Spring web和Spring MVC依赖为:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
3)将重要的Spring配置文件放在WEB-INF/目录下:court-service.xml, court-servlet.xml。(具体参看附件源码)
注意:用户可以通过URL直接访问WEB-INF目录之外的文件,所以/css,/images等内容常常放在那个地方。而/jsp目录则根据实际的需要可以选择放在WEB-INF/之内或者之外。
4)在web.xml中添加Spring MVC的前端控制器。
该前端控制器是一个DispatcherServelt实例,在大型应用中,使用多个DispatcherServelt实例会更加方便,因为这可以轻松实现将DispatcherServlet实例委派给特定的URL,是代码管理更加容易,因为这样对于开发中涉及同一个应用逻辑的团队成员来说不会互相影响。
<!-- Spring MVC Servlet -->
<servlet>
<servlet-name>court</servlet-name> <!-- will load court-servlet.xml default -->
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
5)可以为不同层声明不同的配置文件
可以将所有的Spring的bean的信息定义在上面注释中提到的court-servelt.xml中,也可以为不同的层定义不同的xml,如court-persistence.xml和court-service.xml.
为了让Spring加载court-servlet.mxl以为的配置文件,必须在web.xml中定义servlet监听器ContextLoaderListener。默认情况下,它只加载配置文件WEB-INF/applicationContext.xml,但是可以在上下文参数contextConfigLocation中指定自己想要添加的文件。如果是多个文件,可以使用逗号分隔。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/court-service.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
注意:
ContextLoaderListener加载自己的bean配置文件(如applictionContext.xml,court-service.xml)到跟应用上下文中,而每个DispatcherServlet将其配置文件加载到自己的应用上下文(court-servlet.xml),并且引用根应用上下文为其上级。所以,每个DispatcherServlet实例加载的上下文可以访问甚至覆盖根引用上下文中生命的Bean(反之不行)。但是DispatcherServlet加载的上下文无法互相访问。
相关推荐
同时,需要在Spring的配置文件中声明Struts相关的bean,如Action、ActionForm等。 总之,`org.springframework.web.struts-sources-3.0.4.RELEASE.jar`是Spring与Struts集成的关键,它使得开发者能够在享受Struts的...
3. **MVC(Model-View-Controller)**:Spring MVC是Spring框架的一部分,用于构建Web应用程序。了解DispatcherServlet、HandlerMapping、ModelAndView等组件的工作流程,有助于我们设计高效的Web应用。 4. **数据...
- 通过 XML 配置文件、注解或编程式的方式来实现对象的创建和依赖关系的配置。 2. **AOP(面向切面编程)** - Spring 提供了基于代理的 AOP 实现,允许开发者定义切面、通知(advisors)和切入点(pointcuts)来...
Spring 3.x 还引入了属性抽象层,这使得开发者可以在配置文件中使用占位符(placeholder),从而减少因环境变化而频繁更改配置文件的需求。例如,可以使用 `${JAVA_HOME}/com/bank/service/${env}-config.xml"/>` 来...
这个包中的XML Schema定义了这些配置文件的结构和元素,使得IDE可以提供代码补全和验证,从而提高开发效率并减少错误。 Spring Framework 5.3.6.RELEASE版本可能包含以下关键更新和改进: - 性能优化:Spring团队...
二、Spring3.x MVC配置 1. **web.xml**:配置DispatcherServlet,定义servlet-mapping和初始化参数。 2. **spring-servlet.xml**:Spring MVC的核心配置文件,包含bean定义、数据源、事务管理器、视图解析器等。 ...
Spring5.x是该框架的一个重要版本,提供了许多新特性和性能优化。 在"Spring5.x官网jar文件"中,我们通常会找到一系列的核心库和模块,这些文件构成了Spring框架的基础。例如,`spring-framework-5.1.3.RELEASE`这...
5.2.x系列是Spring 5的一个稳定分支,对于开发者来说,选择稳定版本可以确保项目的长期支持和安全性。 2. **Spring-5.2.15.RELEASE-dist.zip**:这个文件很可能是Spring框架的核心库,包括了Spring的核心模块,如...
《Spring 3.x 企业应用开发实战》lib包是一个针对Spring框架3.x版本的实践教程配套资源,其中包含了在实际项目开发中可能用到的各种库文件。这些库文件是Spring框架与其他外部组件交互的关键,它们可以帮助开发者...
在Spring的配置文件中(如`dispatcher-servlet.xml`),添加以下配置: ```xml <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <bean class="org.spring...
《第5本书 spring3.x》是一本深入探讨Spring 3.x版本的IT技术书籍,主要聚焦于Spring框架的核心特性和实战应用。Spring是Java领域中最受欢迎的轻量级框架之一,它以其依赖注入(Dependency Injection)和面向切面...
基于注解的 Spring 3.0.x MVC 基于注解的 Spring 3.0.x MVC 是指在 ...基于注解的 Spring 3.0.x MVC 提供了一种简洁和灵活的方式来配置和实现 MVC 模式的应用程序,使得开发者可以更方便地构建和维护复杂的应用程序。
在本篇基于注解的Spring 3.0.x MVC学习笔记中,我们将深入探讨Spring MVC在3.0版本中的变化,以及如何通过注解实现快速开发。Spring 3.0.x相较于2.5版本有着显著的改进,尤其在MVC模块上,提供了更加灵活和强大的...
Spring 4.x版本是该框架的一个重要里程碑,提供了许多新特性、优化和对其他技术的集成支持。在这个“Spring4.x最新jar包”中,我们重点关注的是`spring-framework-4.3.18.jar`这个文件,它是Spring框架的核心组件,...
- **spring-framework-4.3.25.RELEASE-schema.zip**:提供了Spring XML配置文件的XSD架构,有助于验证XML配置文件的语法正确性。 4. **关键模块解析** - **Core Container**:核心容器包括Beans和Context模块,是...
1. **配置Spring**:在Spring的配置文件中,可以通过`<mvc:annotation-driven>`标签启用基于注解的控制器,这会自动配置Jackson作为默认的HTTP消息转换器。 2. **序列化与反序列化**:通过`ObjectMapper`,可以方便...
资源部分可能包含示例数据库脚本、配置文件模板和其他辅助开发材料,以加速学习过程。 通过深入学习和实践,开发者不仅可以提升个人技能,还能更好地应对企业级项目的挑战,为组织带来更大的价值。无论是初学者还是...
这本书专注于Spring 3.x版本,该版本是Spring框架发展史上的一个重要里程碑,引入了许多新特性和改进,旨在提升开发效率和系统性能。通过本书,读者可以全面了解Spring的核心概念、关键模块以及如何在实际项目中应用...
4.3.12.RELEASE 版本是 Spring Framework 的一个重要版本,它在4.3.x系列中的稳定性得到了广泛认可。这个版本包含了自4.3.0发布以来的所有更新、修复和增强,确保了开发者能够使用最新的功能和安全补丁。 在Spring ...