Spring MVC入门 (基于XML配置)

JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和这篇文章中讲解的SpringMVC是Web层的框架,Spring是业务层的框架,之前文章中讲解的Hibernate和MyBatis是持久层的框架。

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

  • 模型(Model)封装了应用程序数据,通常它们将由POJO类组成。
  • 视图(View)负责渲染模型数据,一般来说它生成客户端浏览器可以解释HTML输出。
  • 控制器(Controller)负责处理用户请求并构建适当的模型,并将其传递给视图进行渲染。

Spring Web MVC 框架是围绕 DispatcherServlet 设计的,它将请求分派给处理程序,具有可配置的处理程序映射,视图解析,区域设置,本地化和主题解析,并且支持上传文件。默认的处理是基于注解 @Controller 和 @RequestMapping,提供一系列灵活的处理方法。随着 Spring 3.0的推出,通过 @PathVariable 或者其他注解,@Controller 机制开始允许你去创建 Rest 风格的 web 站点和应用。

其中 Spring Web MVC 和 Spring 有一条关键的准则是“对扩展开放,对修改关闭”。在Spring Web MVC中一些核心类的方法被标注为final,由于开发者不能用自已的方法去覆盖这些方法,这并不是任意的,而是特别考虑到这个原则。

Spring MVC的请求流程:

  1. 发起请求到前端控制器(DispatcherServlet)
  2. 前端控制器请求HandlerMapping查找Handler可以根据xml配置、注解进行查找
  3. 处理器映射器HandlerMapping向前端控制器返回Handler
  4. 前端控制器调用处理器适配器去执行Handler
  5. 处理器适配器去执行Handler
  6. Handler执行完成给适配器返回ModelAndView
  7. 处理器适配器向前端控制器返回ModelAndView。ModelAndView是springmvc框架的一个底层对象,包括 Model和view
  8. 前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
  9. 视图解析器向前端控制器返回View
  10. 前端控制器进行视图渲染。视图渲染将模型数据(在ModelAndView对象中)填充到request域
  11. 前端控制器向用户响应结果

下面创建一个Spring MVC入门项目

1. 创建一个Maven web项目

Spring MVC入门 (基于XML配置)_第1张图片

2. 在pom.xml中添加所需jar依赖


	5.0.9.RELEASE



	
		javax.servlet
		javax.servlet-api
		3.0.1
		compile
	
	
		org.springframework
		spring-webmvc
		${spring.version}
	

	
		org.springframework
		spring-web
		${spring.version}
	

3. 配置web.xml文件


  springmvc
  
    index.jsp
  
  
  
      springmvc
      org.springframework.web.servlet.DispatcherServlet
      1
   

   
      springmvc
      /
   

4. 创建Controller类HelloController

@Controller
@RequestMapping("/hello")
public class HelloController {
	
	@RequestMapping(method = RequestMethod.GET)
	public String printHello(ModelMap model) {
		model.addAttribute("message", "Hello Spring MVC Framework from Angelia!");
		return "hello";
	}
}

5. 创建Spring MVC的配置文件springmvc-servlet.xml




   

   
      
      
   

6. 创建hello.jsp

<%@ page contentType="text/html; charset=UTF-8"%>


Hello Spring MVC


	

${message}

7. 启动项目,访问http://localhost:8080/springmvc/hello,结果展示如下:

最后总结下Spring MVC中常用到的注解:

  • @Controller 负责注册一个bean 到spring 上下文中。
  • @RequestMapping 注解为控制器指定可以处理哪些 URL 请求。
  • @RequestBody 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定 到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
  • @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
  • @ModelAttribute 在方法定义上使用 @ModelAttribute 注解,Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法。在方法的入参前使用 @ModelAttribute 注解,可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中。
  • @RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法。
  • @PathVariable 绑定 URL 占位符到入参。
  • @ExceptionHandler 注解到方法上,出现异常时会执行该方法。
  • @ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常.

你可能感兴趣的:(Spring,MVC)