Spring的Web MVC框架
以下内容引用自http://wiki.jikexueyuan.com/project/spring/web-mvc-framework.html:
Spring web MVC框架提供了模型-视图-控制(Model-View-Controller(MVC))的体系结构和可以用来开发灵活、松散耦合的Web应用程序的组件。MVC模式使应用程序的不同方面(输入逻辑、业务逻辑和UI逻辑)的分离,同时提供了在这些元素之间的松散耦合。
模型(Model)封装了应用程序数据,并且通常它们由POJO组成。
视图(View)主要用于呈现模型数据,并且通常它生成客户端的浏览器可以解释的HTML输出。
- 控制器(Controller)主要用于处理用户请求,并且构建合适的模型并将其传递到视图呈现。
DispatcherServlet
Spring Web模型-视图-控制(MVC)框架是围绕DispatcherServlet设计的,DispatcherServlet用来处理所有的HTTP请求和响应。Spring Web MVC DispatcherServlet的请求处理的工作流程如下图所示:
下面是对应于DispatcherServlet传入HTTP请求的事件序列:
收到一个HTTP请求后,DispatcherServlet根据HandlerMapping来选择并且调用适当的控制器。
控制器接受请求,并基于使用的GET或POST方法来调用适当的Service方法。Service方法将设置基于定义的业务逻辑的模型数据,并返回视图名称到DispatcherServlet中。
DispatcherServlet会从ViewResolver获取帮助,为请求检取定义视图。
- 一旦确定视图,DispatcherServlet将把模型数据传递给视图,最后呈现在浏览器中。
上面所提到的所有组件,即HandlerMapping、Controller和ViewResolver是WebApplicationContext的一部分,而WebApplicationContext是带有一些对Web应用程序有必要且有额外特性的ApplicationContext的扩展。
必须的配置
你需要映射你想让DispatcherServlet处理的请求,通过使用在web.xml文件中的一个URL映射。下面是一个显示声明和映射HelloWeb DispatcherServlet的示例:
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application</display-name> <servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping> </web-app>
web.xml文件将被保留在你的应用程序的WebContent/WEB-INF目录下。在初始化HelloWebDispatcherServlet时,该框架将尝试加载位于该应用程序的WebContent/WEB-INF目录中文件名为[servlet-name]-servlet.xml
的应用程序内容。在这种情况下,我们的文件将是HelloWeb-servlet.xml。
<servlet-mapping>
标签表明哪些URLs将被DispatcherServlet处理。这里所有以.jsp结束的HTTP请求将由HelloWeb DispatcherServlet处理。
如果你不想使用默认文件名[servlet-name]-servlet.xml
和默认位置WebContent/WEB-INF,通过以下参数进行重写:
<servlet>
<servlet-name>mHelloWeb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- override default name [servlet-name]-servlet.xml -->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-myconfig.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
也可以通过在web.xml文件中添加servlet监听器ContextLoaderListener自定义添加其它文件的名称和位置,如下所示:
<web-app...>
....
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/HelloWeb-context.xml</param-value>
</context-param> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> </web-app>
现在,检查HelloWeb-servlet.xml文件的请求配置,该文件位于web应用程序的WebContent/WEB-INF目录下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.jsoft.testspring" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean> </beans>
提示:其实这就是一个Beans。
以下是关于HelloWeb-servlet.xml文件的一些要点:
[servlet-name]-servlet.xml
文件将用于创建bean定义,重新定义在全局范围内具有相同名称的任何已定义的bean。<context:component-scan...>
标签将用于激活Spring MVC注解扫描功能,该功能允许使用注解,如@Controller和@RequestMapping等等。- InternalResourceViewResolver将使用定义的规则来解决视图名称。按照上述定义的规则,一个名称为hello的逻辑视图将发送给位于
/WEB-INF/jsp/hello.jsp
中实现的视图。
定义控制器
DispatcherServlet发送请求到控制器中执行特定的功能。@Controller注解表明一个特定类是控制器的作用。@RequestMapping注解用于映射URL到整个类或一个特定的处理方法。
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
@Controller注解定义该类作为一个Spring MVC控制器。在这里,第一次使用的@RequestMapping表明在该控制器中处理的所有方法都是相对于/hello路径的。下一个注解@RequestMapping(method = RequestMethod.GET)用于声明printHello()方法作为控制器的默认Service方法来处理HTTP GET请求。可以在相同的URL中定义其他方法来处理任何POST请求。
可以用另一种形式来编写上面的控制器,也可以在@RequestMapping中添加额外的属性,如下所示:
@Controller
public class HelloController{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
值(value)属性表明URL映射到哪个处理方法,方法(method)属性定义了Service方法来处理HTTP GET请求。关于上面定义的控制器,这里有以下几个要注意的要点:
你将在一个Service方法中定义需要的业务逻辑。你可以根据每次需求在这个方法中调用其他方法。
基于定义的业务逻辑,你将在这个方法中创建一个模型。你可以设置不同的模型属性,这些属性将被视图访问并显示最终的结果。这个示例创建了一个带有属性“message”的模型。
- 一个定义的Service方法可以返回一个包含视图名称的字符串用于呈现该模型。这个示例返回“hello”作为逻辑视图的名称。
创建JSP视图
对于不同的展现技术,Spring MVC支持许多类型的视图。这些包括JSP、HTML、PDF、Excel工作表、XML、Velocity模板、XSLT、JSON、Atom和RSS摘要、JasperReports等等。但我们最常使用的是利用JSTL编写的JSP模板。所以让我们在/WEB-INF/hello/hello.jsp中编写一个简单的hello视图:
<html>
<head>
<title>Hello Spring MVC</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>
其中,${message}是我们在控制器内部设置的属性。你可以在你的视图中有多个属性显示。
Spring的Web MVC框架的更多相关文章
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
- Spring 4 官方文档学习 Web MVC 框架
1.介绍Spring Web MVC 框架 Spring Web MVC 框架是围绕DispatcherServlet设计的,所谓DispatcherServlet就是将请求分发到handler,需要 ...
- 12.Spring——Web MVC框架
1.Spring Web MVC 框架 2.Spring MVC Hello World 例子 1.Spring Web MVC 框架 Spring web MVC 框架提供了模型-视 ...
- Spring 4 官方文档学习(十一)Web MVC 框架之themes
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-themeresolver ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
- Spring 4 官方文档学习(十一)Web MVC 框架
介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...
- Spring官方文档翻译——15.1 介绍Spring Web MVC框架
Part V. The Web 文档的这一部分介绍了Spring框架对展现层的支持(尤其是基于web的展现层) Spring拥有自己的web框架--Spring Web MVC.在前两章中会有介绍. ...
- Spring Web MVC框架简介
Web MVC framework框架 Spring Web MVC框架简介 Spring MVC的核心是`DispatcherServlet`,该类作用非常多,分发请求处理,配置处理器映射,处理视图 ...
- Spring与web MVC的整合——Spring的应用上下文管理
问题1 如何让web容器加载你的web MVC框架 对于基于servlet的web容器来说,遵循的是servlet规范,入口配置文件是web.xml.这类web容器会在启动的时候会而且仅会加载如下三种 ...
随机推荐
- vSphere Client用户名密码保存记录
vSphere Client在访问ESXi主机或vCenter后是默认不保存登录用户名和密码的,不过可以通过修改配置文件来保存,方便访问连接. 方法如下: 打开配置文件路径(实际安装路径):D:\Pr ...
- 如何修改开发板主频--迅为iMX6UL开发板
平台:iMX6UL开发板 iMX6UL开发板 可以在文件系统中通过命令修改 CPU 运行的主频.如下图所示,使用命令“cat /sys/devices/system/cpu/cpu ...
- 数据库管理系统X
大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约 ...
- 常用的-->查找算法与排序算法
顺序查找 从列表第一个元素开始,顺序进行搜索,直到找到为止. 二分查找 从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半. li = [1, 2, ...
- 筛选法 || POJ 1356 Prime Land
英文题读不懂题==质数幂的形式给你一个数 把它减一再用质数幂的形式表示出来 *解法:质数从小到大模拟除一遍,输入有点别扭 #include <iostream> #include < ...
- No-8.其他命令
其他命令 目标 查找文件 find 软链接 ln 打包和压缩 tar 软件安装 apt-get 01. 查找文件 find 命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件 序号 命令 ...
- 收集的WEB前端程序员需要的网站整理
前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...
- C#中byte类型运算
首先看下面一段代码 byte x = 1; byte y = 2; byte z = x + y; Console.WriteLine(z); 可能很多人会说显示结果是3. 其实,这段代码无法运行,因 ...
- HNOI2006 潘多拉的盒子
题目描述 题解: 题目的描述比较长,理解起来也有一定难度.仔细读题后我们发现整个任务可以分成两个部分:找出咒语机之间所有的升级关系.求最长升级序列. 1. 求升级关系: 容易看出,咒语机i可以抽象成一 ...
- MySQL(C#的链接姿势)
介绍 这篇随笔主要介绍MySQL的基础API的使用姿势 基本使用姿势: 第一步:登陆数据库 string connStr = "Database=start;datasource=127.0 ...