Spring MVC基础知识
来源:互联网 发布:bilibili以前知乎 编辑:程序博客网 时间:2024/06/06 02:28
本章要点
Model1 和Model2
MVC思想及其优点
Spring MVC 的优势
Spring MVC 的前端控制器 DispatcherServlet
开发第一个 Spring MVC 应用
基于 Controller 接口的控制器
基于注解的控制器
Spring MVC 的工作流程
2.1.1 传统Model1 和 Model2
Model1:整个 Web 应用几乎全部由JSP页面组成,用少量的 JavaBean 来处理数据库的连接、数据库访问等操作。
Model2:基于MVC架构的设计模式。 Servlet作为前端控制器,负责接收客户端发送的请求,然后调用后端的 JavaBean 来完成实际的逻辑处理;最后,将其转发到相应的 JSP页面来处理显示逻辑。
2.1.2 MVC 思想及其优势
MVC 是所有面向对象程序设计语言应该遵循的规范。 MVC 思想将一个应用分成三个基本部分: Model(模型) 、View(视图) 和 Controller(控制器)。在经典的 MVC 模式中,事件由控制器进行处理,控制器根据事件的类型改变模型和视图。具体地说,每个模型对应一系列的视图列表,这种对应通常采用注册来完成,即把多个视图注册到同一模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获取信息,然后完成视图显示的更新。从设计模式角度去看, MVC 思想非常类似于观察者模式,但其与观察者模式存在少许差别:在观察者模式下,观察者和被观察者可以是两个互相对等的对象;但在 MVC 中,被观察者往往只是单纯的数据体,而观察者则是单纯的视图页面。
2.2 Struts2 和 Spring MVC
Spring MVC 具有如下特点:
Spring MVC 拥有强大的灵活性、非侵入性、和可配置性。
Spring MVC 提供了一个前端控制器 DispatcherServlet。
Spring MVC 分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器等等,每一个功能实现由一个专门的对象负责完成。
Spring MVC 可以自动绑定用户输入,并正确的转化数据类型。例如,Spring MVC能自动解析字符串,并将其设置为模型的 int 或 float 类型的属性。
Spring MVC 使用一个名称/值的 Map 对象实现更加灵活的模型数据传输
Spring MVC 内置了校验器,校验用户的输入,如果校验不通过,则重定向会输入的表单。并且输入校验是可选的,并且支持声明方式及编程方式。
Spring MVC 支持国际化
Spring MVC 支持多种视图技术
Spring MVC 提供了强大的 JSP 标签库,支持数据绑定功能。
2.3.1 Spring MVC 的 DispatcherServlet
DispatcherServlet 是前端控制器,所有的请求都围绕这个 DispatcherServlet 来分派请求。DispatcherServlet 是一个 Servlet (继承自 HttpServlet ),因此使用时需要把它配置在 web.xml文件当中,配置如下:
<servlet>
<!-- Servlet 的名称 -->
<servlet-name>springmvc</servlet-name>
<!-- Servlet 对应的 Java 类 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 当前 Servlet 的参数信息 -->
<init-param>
<!-- contextConfigLocation 是参数名称,该参数的值包含 Spring MVC 的配置文件路径 -->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springmvc-config.xml</param-value>
</init-param>
<!-- 在 Web 应用启动时立即加载 Servlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Servlet 的映射声明 -->
<servlet-mapping>
<!-- 请求对应的 Servlet 的名称 -->
<servlet-name>springmvc</servlet-name>
<!-- 监听当前域的所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
DispatcherServlet 加载时会需要一个 Spring MVC 配置文件,如果没用 init-param 配置Spring MVC配置文件路径,则应用程序会去WEB-INF文件夹下面去找对应的[ servlet-name ]-servlet.xml 文件。作为 Spring MVC 的配置文件,解析该文件内容并根据文件配置信息创建一个 WebApplicationContext容器对象,也称为上下文环境。WebApplicationContext 继承自ApplicationContext 容器,它的初始化方式和 BeanFactory、ApplicationContext 有所区别,因为WebApplicationContext需要ServletContext实例,也就是说,它必须在拥有Web容器的前提下才能完成启动Spring Web 应用上下文的工作。
2.3.2 基于Controller接口的控制器
DispatcherServlet是前端控制器,是将用户的请求分发到对应的处理类中,而这种处理类称为Handle。在Spring 2.5版本之前,这种处理类必须实现org.springframework.web.servlet.mvc.Controller接口。Controller接口的实现类必须实现一个方法,该方法如下:
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception Controller接口实现类可以通过handleRequest方法传递的参数访问对应的请求HttpServletRequest和HttpServletResponse对象,处理完请求后,必须返回一个包含模型对象和视图路径的ModelAndView对象。缺点:Controller接口的实现类只能处理单一请求动作,而Spring 2.5 之后新增的基于注解的控制器可以支持同时处理多个请求动作,并且无需实现任何接口,更加灵活。
第一个Spring MVC应用
1.创建项目
2.给项目添加必要的jar包
3.配置DispatcherServlet
4.配置springmvc-config.xml配置文件
5.配置Handler处理类
6.编写jsp页面
示例:基于注解的控制器
Spring2.5版本开始新增了可基于注解的控制器,也就是说控制器不用再实现Controller接口,而是通过注释的方式来描述。
与SpringMVC应用一样,只需修改两个地方。
1.Controller 类的实现
2. 修改Spring MVC 配置文件
2.3.3 详解DispatcherServlet
initStrategies 方法将在WebApplicationContext初始化后自动执行,自动扫描上下文的Bean,根据名称或类型匹配的机制查找自定义的组件,如果没有找到则会装配一套Spring的默认组件。在org.springframework.web.servlet路径下有一个DispatchServlet.properties配置文件,该文件指定了DispatcherServlet所使用的默认组件。
- Spring MVC的基础知识
- spring MVC基础知识讲解
- spring mvc基础知识一
- Spring MVC基础知识
- Spring MVC基础知识
- Spring MVC基础知识及实例
- MVC基础知识
- spring学习10- mvc 异步之servlet异步基础知识
- spring基础知识
- Spring基础知识
- Spring基础知识
- Spring基础知识
- spring基础知识
- spring基础知识
- Spring基础知识
- MVC模式(基础知识)
- MVC的基础知识框架
- MVC基础知识学习总结
- 星星 不知名的玄学看图题
- 算法实现
- js计算文件MD5值
- 机器学习入门学习笔记:(3.1)决策树算法
- Unity3D-VR、PC版本代码动态切换
- Spring MVC基础知识
- LaTeX新人教程,30分钟从完全陌生到基本入门
- 2个关于Adapter库的源码分析(AdapterDelegate、BaseRecyclerViewHelper)
- 2017.10.30 LeetCode
- 在循环里改变一个容器的长度是一件愚蠢的事情
- 438 Find All Anagrams in a String
- servlet小结
- Python中创建进程的两种方式以及进程池
- 2017.10.30清北学堂测试