【SpringMVC】SpringMVC简介及第一个HelloWorld

林炳文Evankaka原创作品。转载请注明出处

一、SpringMVC概述与基本原理

Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response)方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

在Spring的Web MVC框架提供了模型 – 视图 – 控制器架构以及可用于开发灵活,松散耦合的Web应用程序准备的组件。 MVC模式会导致分离的应用程序(输入逻辑,业务逻辑和UI逻辑)的不同方面,同时提供这些元素之间的松耦合。

1.1、DispatcherServlet

Spring的web模型 – 视图 – 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring的Web MVC框架的DispatcherServlet的请求处理流程说明如下图:

下面是对应于传入的HTTP请求到DispatcherServlet的事件序列:

所有上述部件,即HandlerMapping,控制器和视图解析器WebApplicationContext 部分是纯的 ApplicationContext 必要的 Web应用程序的一些额外的功能扩展。

1.2、所需配置

你需要映射所需的DispatcherServlet处理,通过在web.xml文件中使用URL映射请求。下面是一个例子,说明声明和映射 HelloWeb DispatcherServlet 的例子:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=""xmlns="" xmlns:web=""xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!– SpringMVC的前端控制器 –><servlet><servlet-name>Hello</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!– Spring MVC配置文件结束 –><!– 拦截设置 –><servlet-mapping><servlet-name>Hello</servlet-name><!– 由SpringMVC拦截所有请求 –><url-pattern>/</url-pattern></servlet-mapping></web-app>

web.xml 文件将被保存在您的Web应用程序的 WebContent/ WEB-INF 目录。 在 DispatcherServlet 的 HelloWeb 初始化,该框架将尝试从一个名为[servlet-name]-servlet.xml位于应用程序 WebContent/WEB-INF 目录文件加载应用程序上下文。在这种情况下我们的文件将是HelloWeb-servlet.xml。

接下来,<servlet-mapping>标记指示URL会被DispatcherServlet处理。这里全部用。jsp结束HTTP请求将由DispatcherServlet的HelloWeb处理。如果不想用默认文件名为[servlet-name]-servlet.xml和默认位置的WebContent/WEB-INF。 在 web.xml 文件中定义该文件的名称和位置如下:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=""xmlns="" xmlns:web=""xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><!– SpringMVC的前端控制器 –><servlet><servlet-name>Hello</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!– 设置自己定义的控制器xml文件 –><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/Hello-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><!– Spring MVC配置文件结束 –><!– 拦截设置 –><servlet-mapping><servlet-name>Hello</servlet-name><!– 由SpringMVC拦截所有请求 –><url-pattern>/</url-pattern></servlet-mapping></web-app>现在,让我们检查所需配置的HelloWeb-servlet.xml文件,放置在 Web应用程序的WebContent/WEB-INF目录:

下面是有关 Hello-servlet.xml 文件的要点:

<beans xmlns=""xmlns:context=""xmlns:xsi="" xmlns:p=""xsi:schemaLocation=""><!– 把标记了@Controller注解的类转换为bean –><context:component-scan base-package="com.mucfc" /><!– 启动Spring MVC的注解功能,完成请求和注解POJO的映射 –><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /><!– 对模型视图名称的解析,即在模型视图名称添加前后缀 –><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/views/" p:suffix=".jsp"/></beans>

1.3、定义控制器

DispatcherServlet 委托请求发送到控制器,以执行特定于它的功能。注解@Controller表示一个特定的类提供一个控制器的角色。注解@RequestMapping 用于将URL映射到任何一个类或者一个特定的处理方法。

待人对事不要太计较,如果太计较就会有悔恨!

【SpringMVC】SpringMVC简介及第一个HelloWorld

相关文章:

你感兴趣的文章:

标签云: