spring教程手册下载:全面、详细、五星推荐
这篇博客的目的在于简单介绍如何快速上手使用Spring MVC框架。
spring mvc类似于struts2的一个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。spring mvc需要有spring的架包作为支撑才能跑起来。Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。
一、Spring MVC处理请求的流程
如下图:
具体执行步骤如下:
1、 首先用户发送请求,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器(Controller)进行处理并把请求委托给它;图2-1中的1、2步骤;
2、 页面控制器接收到请求后,进行功能处理,处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;
3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;
4、 前端控制器再次收回控制权,将响应返回给用户,图2-1中的步骤8;至此整个结束。
二、Spring MVC优点
1、优秀的MVC框架;
2、可以与Spring框架集成(如IoC容器、AOP等);
3、能简单的进行Web层的单元测试;
4、支持灵活的URL到页面控制器的映射;
5、非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用);
6、支持Restful风格。
三、简单的 Spring MVC框架搭建
本测试项目代码下载地址:http://pan.baidu.com/s/1gfps04F
1、jar包下载并复制到web 项目WEB-INF–>lib文件下:http://pan.baidu.com/s/1kUQhNZD
2、在web.xml文件中添加前端控制器的配置(该文件位置位于WEB-INF下面):
<servlet>
<servlet-name>mydemo</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mydemo</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义所有的请求都交给DispatcherServlet。也可以如“*.html”表示拦截所有以html为扩展名的请求;
默认DispatcherServlet会加载WEB-INF/[Servlet名字]-servlet.xml配置文件(Spring官方文档上推荐的默认的文件名是[servlet-name]-servlet.xml)。
3、在[servlet-name]-servlet.xml中进行配置,该文件位置是根据web.xml中DispathServlet来进行的:
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!--启用自动扫描 -->
<context:component-scan base-package="demo.*" />
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
其中自动扫描的目录需要正确,否则会报错:
WARNING: No mapping found for HTTP request with URI [/springMVC/hello] in DispatcherServlet with name ‘mydemo’
InternalResourceViewResolver:用于支持Servlet、JSP视图解析;
prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello,则该该jsp视图页面应该存放在“WEB-INF/hello.jsp”;
4、开发处理器(页面控制器):
@Controller
public class HelloController {
@RequestMapping(value="/hello",method=RequestMethod.GET)
public String sayHello(Model model) {
model.addAttribute("msg", "Hello World!");
return "hello";
}
}
5、根据第3步中的配置文件开发页面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>hello world</title>
</head>
<body>
${msg}
</body>
</html>
6、配置jdk和tomcat,进行部署;
7、浏览器输入并显示”Hello World!”:http://localhost:8080/springMVC/hello
这是一个简单的spring mvc框架搭建过程。
关于 spring mvc 的基础知识请参考:http://blog.youkuaiyun.com/u012385190/article/details/51425416