[一知半解,就是给自己挖坑]
经过基础篇的学习与联系,接下来的几篇中。我们来介绍Spring中MVC的基本内容。本文我们先从MVC框架的基本概念说起。。。
--------------------------------------------------------------------------------------------------------------------------------------------------------
什么是MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.官网MVC示意图:
2.我们把上面的示意图翻译过来就是如下的流程:
a.第一步:用户发送请求(Incoming reuqest)。
b.第二步:前端控制器接受请求(Font controller)。前端控制器会自动选择出于当前请求路径,方法相匹配的*controller或者方法来接受当前请求。
c.第三步:相匹配的*controller,即实际处理当前请求的Controller,调用业务对象,服务,工具等,将该请求的处理结果,通过model模型的方式交还给前端控制器(Font controller)
d.第四步:前端控制器,根据视图层的规则,选择一个具体的View template并且进行渲染。
e.第五步:将控制权交还给前端控制器。
f.第六步:用户界面产生相应。
-------------------------------------------------------------------------------------------------------------------------------------------------------
4.上面的这张图是概念的解释,接下来看看实际的代码模块之间的关系图:【注:此图参考其他博文,详情见文章末尾】
5.观察这两张图,我们得到如下的结论:
a.前端控制器,即Dispatcher Servlet。它根据HandlerMapper配置,负责分发所有的请求。
b.HandlerAdapter选择具体的Handler即controller处理当前请求。
c.controller处理完成之后返回一个与业务相对应的模型和视图交还给前端控制器。
d.前端控制器根据视图的规则(ViewResolver)解析出具体的视图,然后进行视图渲染。
e.最后用户看到视图层的结果。
--------------------------------------------------------------------------------------------------------------------------------------------------------
说了这些概念之后,我们通过helloworld例子来看一下各个功能点对应与实际操作中的那些步骤:
准备工作:
a.操作系统:win7 x64
b.开发工具:eclipse mars j2ee版本,maven3.3.2,Spring 4
--------------------------------------------------------------------------------------------------------------------------------------------------------
1.使用maven创建web-app工程helloworld,工程具体结构如下:
2.配置pom文件,具体内容如下:【注:这里引入了多余的包,但特别提醒,在书写本文例子时,发现asm包有冲突,请读者特别留意!】
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.java.maven</groupId>
<artifactId>helloworld</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>helloworld Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 添加Spring支持 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<build>
<finalName>helloworld</finalName>
</build>
</project>
3.配置之后,点击保存,可以看到依赖的jar包有如下内容,请读者仔细核对;【这里不要引入asm包】
4.创建HelloworldController.java文件,具体内容如下:
package com.java.ingo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*@author 作者 E-mail:ingo
*@version 创建时间:2016年3月12日下午3:05:35
*类说明
*/
@Controller
@RequestMapping("/welcome")
public class HelloworldController {
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(Model model) {
model.addAttribute("info", "welcome to Spring MVC");//简化处理,这里可以使用模型服务等
return "helloworld";
}
}
5.工程结构中的model包为示例,在此并无实际使用。
6.创建web.xml文件,具体内容如下:【注,这里请注意<url-pattern>/</url-pattern> 的配置】
<?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>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
7.创建applicationContext.xml文件,所在目录为src/main/resources下,具体内容如下:
<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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 使用注解的包,包括子集 -->
<context:component-scan base-package="com.java.ingo.controller"/>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
8.创建index.jsp文件,具体内容如下:
<html>
<body>
<a href="welcome">helloworld</a>
</body>
</html>
9.创建helloworld.jsp文件,具体内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${info}
</body>
</html>
10.测试方法:将工程部署在tomcat上,启动服务器,点击链接,观察浏览器效果即可
-------------------------------------------------------------------------------------------------------------------------------------------------------
我们把基本概念和示例已经给出,鉴于篇幅的关系,请读者将概念部分的示意图,与示例代码进行比对学习。这样能够快速学习与使用。
-------------------------------------------------------------------------------------------------------------------------------------------------------
至此,白话Spring(中级篇)---MVC 结束
参考资料:
Spring官网
其他博文:http://jinnianshilongnian.iteye.com/