Spring MVC工作原理
时间:2022-05-02
本文章向大家介绍Spring MVC工作原理,主要内容包括拦截配置、spring-mvc注解方式开发(spring3.2.2)、springMVC是何时加载的?、IOC(控制反转)、spring有很多容器的、面试要点:Struts1、Struts2和springmvc比较、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
- Dispatcher Servlet分发器
- Handler Mapping 处理器映射
- Controller 控制器
- ModelAndView 模型和视图对象
- ViewResolver 视图解析器
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
Spring框架是业务层框架,核心组件是容器,它是管理bean的,广义上讲任何一个javaBean它都管理,实例化对象两大概念:IOC、AOP。
拦截配置
*.action
拦截所有访问URL后缀为action, /
拦截所有的访问的URL, 包括action, 静态js, images, css。
如何修改action-servlet.xml文件名和位置?
- 移动action-servlet.xml到src目录下,改名为spring-mvc.xml
- 修改web.xml,给DispatcherServlet增加初始参数
- 通过初始化参数,指定配置文件位置
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
spring-mvc注解方式开发(spring3.2.2)
- 新建web project,要保证项目编码为UTF-8,否则中文乱码。
- 引入jar包
- web.xml中配置分发器servlet DispatchServlet
- 创建spring配置文件(进行包扫描,和视图解析器) action-servlet.xml 视图解析器访问路径:prefix + logicName + suffix
- 创建控制器
- 创建jsp文件
- 发布、测试
springMVC是何时加载的?
它不是随着web容器启动而加载,而是在第一次访问时才加载
IOC(控制反转)
将一个类放到spring容器(bean)里面,spring容器来创建对象。
例:正常情况你要吃饭,需要先到食堂,然后买饭吃饭。
- 突然有一天你不想出去了,定了一份外卖,剩了去食堂的过程,只需要吃饭就可以了。
- 将买饭的任务交给送餐的,对应的就是将对象的创建交给spring,过程不用你管 。
把一个类放到spring容器中, 类叫bean,换句话说,一个bean描述一个类。
- beans 存放了很多的类
- id是标识符
- class是类的全名
spring有很多容器的
spring关心的是集中管理在java企业应用和web应用中涉及的数据持久化,事务处理,消息中间件,分布式计算等抽象资源,并在此基础上,为应用提供了基于pojo的开发环境。
面试要点:Struts1、Struts2和springmvc比较
- 都是web层框架。
- Struts1是基于servlet;Struts2是基于filter;springmvc是基于servlet 。
- Struts1的action是单例模式,线程不安全的;Struts2 action是原型模式 prototype,每次访问对象都会创建新的实例,保证线程安全性;springmvc controller是单例模式,整个程序只有一个对象实例。Spring的安全性是通过绑定threadlocal实现。
- Struts1使用JSTL EL表达式,但是对集合和索引属性的支持很弱。Struts2采用 OGNL。 struts2是类级别的拦截, 一个类对应一个request上下文,springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应。
- Strust1中通常以action访问时.do,struts2、spring mvc 都是以.action做结尾。
- spring3 mvc可以认为已经100%零配置了。
觉得本文对你有帮助?请分享给更多人
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【Pytorch 】笔记八:Tensorboard 可视化与 Hook 机制
- K近邻算法:以"同类相吸"解决分类问题!
- ROS与PCL中点云数据之间的转换
- 啊,http2还没搞明白,http3又来了?
- 掌握Linux文件权限,看这篇就够了
- 【shell脚本入门到精通】基本规范及良好的编写习惯
- shell脚本的函数介绍使用和常用案例
- 详解shell脚本case条件语句,开发各种服务启动脚本跳板机
- 详解自动交互命令expect,免去手动输入!
- 快速掌握shell脚本的各种循环语句
- 详解shell脚本的4种表达式
- Linux shell中这7种运算命令值得掌握!
- 快速掌握shell脚本数组,看这篇
- 详解shell脚本的环境、普通、特殊变量
- 玩转zabbix之超详细的二进制安装