SSM开发实战

第1章 Spring MVC

1.1 Web 开发与 MVC 设计模式

考虑到项目的设计与维护,在进行服务端应用开发时,往往都会采用MVC(Model-View-Controller,模型-视图-控制器)设计模式,有效的分层设计有利于代码的开发与维护。考虑到代码的维护管理,实际项目开发中,也会采用MVC框架进行项目的实现。

随着Java技术的发展,出现过许多的MVC开发框架,如Struts、JSF、Tapestry、SpringMVC等,而现在国内使用较多的MVC框架式Spring MVC,因为其可以与Spring实现更好地融合,而且没有出现过任何安全漏洞。但是一个完整的应用项目的开发不仅仅需要使用MVC开发框架,也可能需要用到各类的ORM(对象关系映射)组件、消息服务以及各类第三方服务整合,而这些组件都可以基于Spring框架实现统一整合。

现在的SSM开发基本上都转为Spring Boot开发

1.1.1 搭建 Spring MVC 项目

Spring MVC是在Spring框架的基础上构建的Web应用框架,要在项目中使用Spring MVC,就需要保证项目内部已经提供了Spring的基础依赖库。

考虑到技术应用的发展,本节将通过IDEA工具进行项目开发,并使用Gradle构建工具实现依赖管理。

现在用的Spring Boot本质上就是Spring MVC。

1.1.2 配置Spring MVC 开发环境

Spring的核心机制在于Spring容器的启动。传统的Java应用开发中,使用AnnotationConfigApplicationContext(注解配置启动上下文)或ClassPathXmlApplicationContext(XML配置启动上下文)即可。而对于Web项目,由于其运行在Web容器中,因此就需要通过Web容器组件的支持来实现Spring容器的启动。

1.1.3 Spring MVC编程入门

Spring MVC中所有控制器类都要使用@Controller注解进行标注。控制器中可以定义多个处理方法,如果一个方法需要进行请求处理时,那么该方法中需要使用@RequestMapping注解定义访问路径,这样在用户发送请求时,DispatcherServlet就可以根据访问路径找到指定的Action控制方法进行业务处理。由于当前的程序都运行在Spring容器中,因此可以直接使用Spring提供的IoC和DI机制实现所需依赖的注入。

1.1.4 ModelAndView

ModelAndView是实现模型层与视图层之间数据传递的核心类。

在Spring MVC的标准设计过程之中,所有的用户请求都要通过控制层进行接收,而后控制层根据用户请求的类型调用不同的模型层进行请求处理,最终由控制层将模型层的处理结果交由视图层进行展示。

Spring MVC为了便于视图路径和传递属性的存储,提供了ModelAndView响应配置类,该类主要依靠Map(ModelMap子类)存储结构保存所有要传递到视图页面的属性内容。本质上就属于“key=value”的结构。

ModelAndView里面设置属性的方法有两个:保存单个属性内容(addObject()方法)、保存一组属性内容(addAllObject()方法),所以属性的存储只要是业务层数据的返回,基本上都能直接存储进去。

在Spring容器里面提供了ApplicationContext接口,而后才有了该接口不同的实现子类(XML启动还是注解启动),而现在是在SpringWEB(或者简称,Spring MVC),提供了一个WebApplicationContext子接口,所以此时表示的是Web应用上下文(启动了另外一个Spring容器,这个容器是与Web有关)。

1.2.1 WebApplicationInitializer

现在所有的Spring MVC配置都是基于XML方式实现的,这一点已经不再是当前开发推荐的模式了,如果想要更好地理解Spring Boot开发,那么首先就应该将当前的配置模式修改为Bean的方式。

1.2.2 AbstractAnnotationConfigDispatcherServletInitializer

为了可以更清晰的描述出Bean配置Web容器初始化的操作逻辑,Spring MVC里面又提供了一个AbstractAnnotationConfigDispatcherServletInitializer抽象类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值