大部分的Java应用都是基于Web的,作为轻量级的JavaEE框架,Spring也提供了自己的Web层的展现技术,一个优秀的MVC框架—— Spring MVC。与其它的Web框架相比Spring的MVC框架在可扩展性和灵活性上有很大提高。但是相对要复杂很多。Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器、视图解析器、视图组成。以DI(笔者更喜欢DI这个概念,觉得IoC表达没有DI清晰)为核心的Spring MVC也有的技术人员认为设计太复杂,有过度设计的嫌疑。不过它确实提供了一个接近于完美的Web框架,或许这也正是Rod Johnson先生的初衷吧。下图是Spring MVC的原理框图:
整个处理过程从一个HTTP请求开始:
1)DispatcherServlet接收到请求后,根据对应配置文件中配置的处理器映射,找到对应的处理器映射项(HandlerMapping),根据配置的映射规则,找到对应的处理器(Handler)。
2)调用相应处理器中的处理方法,处理该请求,处理器处理结束后会将一个ModelAndView类型的数据传给DispatcherServlet,这其中包含了处理结果的视图和视图中要使用的数据。
3)DispatcherServlet根据得到的ModelAndView中的视图对象,找到一个合适的ViewResolver(视图解析器),根据视图解析器的配置,DispatcherServlet将视图要显示的数据传给对应的视图,最后给浏览器构造一个HTTP响应。
DispatcherServlet是整个Spring MVC的核心。它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
1)截获符合特定格式的URL请求。
2)初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
3)初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
下面给出一个典型的使用Spring MVC的Web应用中的web.xml文件的配置:
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">
-
- <context-param>
- <param-name>contextConfigLocation<!---->param-name>
- <param-value>
- classpath:com/springdemo2/dao/springdemo2-dao.xml,classpath:com/springdemo2/service/springdemo2-service.xml
- <!---->param-value>
- <!---->context-param>
-
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- <!---->listener-class>
- <!---->listener>
-
- <servlet>
- <servlet-name>springdemo2<!---->servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- <!---->servlet-class>
- <!---->servlet>
-
- <servlet-mapping>
- <servlet-name>springdemo2<!---->servlet-name>
- <url-pattern>*.html<!---->url-pattern>
- <!---->servlet-mapping>
- <welcome-file-list>
- <welcome-file>welcome.jsp<!---->welcome-file>
- <!---->welcome-file-list>
- <!---->web-app>
我们一般倾向于使用“.html”作为框架映射的后缀,这样做可以屏蔽服务器端所使用的具体技术,容易被搜索引擎收录。
除了上面的配置外,web.xml中的DispatcherServlet还有四个初始化参数:
1)namespace:DispatcherServlet所对应的命名空间,用以构造Spring配置文件的路径。默认条件下配置文件的路径应该为 WEB-INF/<servlet-name>(servlet-name)-servlet.xml,如果配置了该参数,那么配置文件的路径就是WEB- INF/namespace<namespace>.xml。
2)contextConfigLocation:如果有多个配置文件可以使用这个属性。其配置形式和上面的<context-param>中的相似。
3)publishContext:boolean类型属性,默认为true。DispatcherServlet根据此属性来决定是否将WebApplicationContext发布到ServletContext中去。
4)publishEvents:波哦了案类型属性,默认为true。指定当DispatcherServlet处理完一个请求后是否向容器发布一个ServletRequestHandledEvent事件。
下面演示一个开发Spring MVC的小例子,一个相当于Hello,World的小程序。程序开发使用MyEclipse6.0完成的。
1)首先要下载Spring的发布包。地址为:www.springframework.org/download
2)创建一个Web应用程序,将下载的发布包中的spring.jar(dist文件夹下)和依赖包(lib文件夹)下的commons-logging.jar、log4jxxx.jar(xxx为版本号)添加到该应用的lib文件夹下。
3)创建一个处理器,代码如下:
</context-param></namespace></servlet-name>
java 代码
- package com.demo1.web.controller;
-
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
-
- public class HelloController implements Controller {
- private String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public ModelAndView handleRequest(HttpServletRequest arg0,
- HttpServletResponse arg1) throws Exception {
-
- return new ModelAndView("hello", "name", name);
- }
-
- }
4)配置web.xml文件:
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">
-
- <servlet>
- <servlet-name>demo1<!---->servlet-name>
- <servlet-class>
- org.springframework.web.servlet.DispatcherServlet
- <!---->servlet-class>
- <!---->servlet>
-
- <servlet-mapping>
- <servlet-name>demo1<!---->servlet-name>
- <url-pattern>*.html<!---->url-pattern>
- <!---->servlet-mapping>
- <welcome-file-list>
- <welcome-file>index.jsp<!---->welcome-file>
- <!---->welcome-file-list>
- <!---->web-app>
5)在WEB-INF文件夹下建立demo1-servlet.xml文件,代码如下:
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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd ">
-
- <bean
- class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
-
- <bean name="/hello.html"
- class="com.demo1.web.controller.HelloController">
- <property name="name" value="Rod Johnson" />
- <!---->bean>
-
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/jsp/" />
- <property name="suffix" value=".jsp" />
- <!---->bean>
- <!---->beans>
6)在src文件夹下创建log4j.properties文件,处理日志,代码如下:
properties 代码
- log4j.rootLogger=INFO,stdout
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
7)部署到你的web服务器上就可以看到输出了,例子程序在附件。
分享到:
相关推荐
这个"Spring MVC 1 资源文件"可能包含了这些概念的详细解释、实例代码以及配置示例,帮助开发者更好地理解和使用 Spring MVC 框架。如果你在学习或使用 Spring MVC 过程中遇到问题,这些资源将会是宝贵的参考资料。
在"25号05:Spring MVC1课堂内容"中,我们可以推测这是一个教学资源,涵盖了Spring MVC的基础到进阶知识,可能包括了从版本v01到v02的更新内容,特别是针对测试类的优化和使用。 1. **Spring MVC 概述**: Spring ...
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
1. **Spring MVC**: - **基本概念**:Spring MVC提供了一个灵活的MVC实现,包括请求映射、视图解析、模型绑定等功能。它通过DispatcherServlet作为前端控制器,负责接收请求并分发到相应的处理器。 - **组件**:...
Spring MVC 是一款强大的Java Web开发框架,用于构建高效、可维护和模块化的Web应用程序。它作为Spring框架的一部分,提供了一种优雅的方式来处理HTTP请求和响应,使得开发者可以专注于业务逻辑而不是底层实现。在这...
Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。它提供了模型-视图-控制器(MVC)架构,使开发者能够有效地分离业务逻辑、数据处理和用户界面。在"Spring MVC 4.2.3"版本中,我们看到了一系列的...
Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要组成部分,主要用于构建Web应用程序的后端控制器。这个教程“Spring MVC - A Tutorial”旨在帮助开发者深入理解和掌握Spring MVC的核心概念和...
1. **依赖注入**:Spring MVC 4.0继续支持Spring框架的核心功能,依赖注入(DI),允许开发者通过配置来管理对象及其依赖关系,降低了代码耦合度,提高了可测试性。 2. **ModelAndView对象**:在处理完请求后,控制...
Spring MVC 是一个强大的Java Web开发框架,它是Spring框架的一部分,专为构建高度可扩展和模块化的Web应用程序而设计。在2015年的版本中,Spring MVC 4已经相当成熟,提供了许多特性来简化开发流程并提高开发效率。...
这是一个基于Spring MVC、Mybatis和Spring框架实现的个人博客系统,涵盖了Web开发中的后端架构设计、数据库管理和前端展示等多个方面。以下将详细介绍这个系统的关键知识点: **1. Spring MVC** Spring MVC是Spring...
1. **Spring 框架核心库**:这是 Spring MVC 的基础,它包含了 IoC(Inversion of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)的核心概念。主要的 jar 包有 `spring-core.jar`、`...
1. `org.springframework.context-3.0.2.RELEASE.jar`:这个库提供了上下文支持,包括应用上下文(ApplicationContext)和扩展上下文(ExtendedContext)。ApplicationContext 是 Spring 中的核心接口,它负责管理 ...
Spring MVC 是一个基于 Java 的轻量级Web应用框架,它为构建模型-视图-控制器(MVC)架构的应用程序提供了强大的支持。在本压缩包中包含了一系列与Spring MVC相关的jar文件,这些文件是构建和运行Spring MVC项目所...
Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...
Spring MVC是Spring框架的一个核心模块,专用于构建Web应用程序。这个"Spring MVC使用Demo"提供了实践操作,帮助开发者深入理解Spring MVC的开发环境配置、注解的使用以及工作原理。 首先,Spring MVC的设计模式...
1. **DispatcherServlet**: 它是Spring MVC的入口点,负责接收HTTP请求,并根据请求信息找到合适的处理器(Handler)进行处理。DispatcherServlet通过`web.xml`配置文件或Java配置类进行初始化配置。 2. **...
1. **Spring MVC**: - **核心组件**:DispatcherServlet负责接收请求并分发到相应的控制器(Controller),ModelAndView用于封装模型数据和视图,ViewResolver解析视图。 - **配置**:通常通过Java配置或XML配置...