jsp springmvc 视图解析器_Java面试题整理——SpringMVC

06613a17b98f85ca720d977e04b86141.png

SpringMVC

1、什么是SpringMVC

Spring MVC是一个MVC的开源框架,Spring MVC = Struts2+spring,Spring MVC就相当于是Struts2加上Spring的整合,但是这里有一疑惑是Spring MVC和Spring是什么样的关系呢。Spring MVC是Spring的一个后续产品,其实就是Spring在原有基础上,又提供了Web应用的MVC模块,可以简单的把Spring MVC理解为是Spring的一个模块(类似于AOP、IOC这样的模块)。

2、MVC模式

MVC:MVC是一种设计模式

MVC的原理图:

26d4f1bbfaab1839f2de0f12037eab22.png

M-Model 模型(完成业务逻辑:有JavaBean构成,service+dao+entity)

V-View 视图(做界面的展示:jsp、html)

C-Controller (接收请求——>调用模型——>根据结果派发页面(servlet))

3、SpringMVC的优点

  • 它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成.
  • 不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet的)
  • 可以任意使用各种视图技术,而不仅仅局限于JSP
  • 支持各种请求资源的映射策略
  • 它应是易于扩展的

4、SpringMVC的工作原理

806e390d97f6c1b85b27df396ead3439.png
  • 客户端发送请求到DispatcherServlet
  • DispatcherServlet查询handlerMapping找到处理请求的Controller
  • Controller调用业务逻辑后,返回ModelAndView
  • DispatcherServlet查询ModelAndView,找到指定视图
  • 视图将结果返回到客户端

5、各个组件的说明

  • 前端控制器DispatcherServlet(不需要工程师开发,由框架提供)

作用:接收请求,响应结果,相当于转发器,中央处理器。可以降低与其他组件之间的耦合度

  • 处理器映射器HandllerMapping(不需要工程师开发),由框架提供

作用:根据请求的URL查找Handller,HandllerMapping负责根据用户的请求找到Handller即处理器,Soring MVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等

  • 处理适配器HandllerAdapter

作用:按照特定规则(HandllerAdapter要求的规则)去执行Handler,通过HandllerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多烈性的处理器进行执行。

  • 处理器Handler(需要工程师开发)

注意:编写Handler时按照HandlerAdapter的要求去开发,这样适配器才可以去正确执行Handller,Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对据图的用户请求进行处理,由于Handller涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler

  • 视图解析器ViewResolver(不需要工程师开发),由框架提供

作用:进行视图解析,根据逻辑视图名解析成真正的视图(View),ViewResolver负责将处理结果生成View视图,ViewResovler首先根据逻辑实体名解析成物理实体名成物理视图名即具体的页面地址,在生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。Spring MVC框架提供了很多的View视图类型,包括jstView、pdfView

  • 视图View(需要工程师开发)

View是一个接口,实现类支持不同的View类型(JSP、pdf)

6、SpringMVC 工作流程

5df988fa1ae580b1e46da091a70390c8.png
  1. 用户发起请求到前端控制器(DispatcherServlet)
  2. 前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handle):通过XML配置或者注解进行查找
  3. 找到以后处理器映射器(HandlerMapping)像前端控制器返回执行链
  4. 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去处理器(Handler)
  5. 处理器适配器去执行Handler
  6. Handler执行完给处理适配器返回ModelAndView
  7. 处理器适配器向前端控制器返回ModelAndView
  8. 前端控制器请求视图解析器(ViewResolver)去执行视图解析
  9. 视图解析器像前端控制器返回View
  10. 前端控制器对视图进行渲染
  11. 前端控制器向用户响应结果

7、SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。

8、简单介绍SpringMVC和Struts2的区别有哪些?

  • springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
  • springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
  • Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

9、SpringMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。 具体步骤如下:

  • 加入Jackson.jar
  • 在配置文件中配置json的映射
  • 在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解

10、 @RequestMapping注解用在类上面有什么作用?

是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

本人会陆续整理出大数据和Java的高频面试题,请持续关注大数据健身侠:

28489ae80e9cd603cadd735708eef6ec.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java基础篇】Unicode、进制转换

一、unicode 先说一下unicode是什么? 最开始美国人搞出了ASCII这个东西,什么意思呢? 首先一个字节,我们都知道是8个bit位,总共能表示256种状态,然后我们就把这256种状态每种状态都对应一个字符。这种对应…

采集标签_分流器(二):灵活分流能力,数据采集无忧

数据采集分析难怎么办?昨天和大家分享了数据采集分析的最佳助手——分流器的一些基础知识,回顾链接,今天继续和您分享第二篇,带您更深入地了解分流器的强大功能。业务难点在网络安全和数据可视化趋势推动下,企业安全分…

【计算机原理篇】原码、反码和补码

注意:计算机实际上是按照补码进行存储的,对计算机来说没有原码和反码这种东西,原码和反码只是为了方便我们理解而定义的一种概念。 一、原码 正数的原码就是它本身,负数的原码最高位为1。 如果用一个字节来存储整数&#xff0c…

用友邮件撤回怎么操作_用户体验原则——“操作可控”

对于用户的误操作,提供二次确认或者撤销的功能,这样可提高用户的操作可控性。好设计应该是值得信任,也容易被相信的。在要求用户执行某一动作时,尽量帮他们理解为什么这个操作是必要的。每一步都需要借助诚实和清晰的表述来建立信…

蛋白结构建模与优化_最终幻想: 无中生有的蛋白质从头设计

作者简介: 刘源 北京大学化学与分子工程学院/力文所零.导读近几年,蛋白质结构预测领域连续取得重大突破。首先是【AlphaFold】,在可以充分利用共进化信息结合深度神经网络生成空间约束条件并降低相空间的搜索,极大地帮助了蛋白质的结构建模&a…

【JAVA基础篇】彻底搞懂拆箱装箱

什么是装箱拆箱? Java有8种基本数据类型,并且为这8种类型提供了包装器类型。比如说int类型的包装器类型是Integer。 装箱是指将基本数据类型转换成对应的包装器类型。拆箱是指将包装器类型转换基本数据类型。 Integer i 10; //自动装箱 int n i; …

gcn在图像上的应用_每日摘要|基于CNN 特征的图像卷积网络识别杂草和作物

文章信息标题:CNN feature based graph convolutional network for weed and crop recognition in smart farming期刊:《 Computers and Electronics in Agriculture》第一单位:山东农业大学在线日期:2020-05-13Highlights1.提出了…

安卓超过两行就加省略号_基础标点符号使用规则详解—8.省略号

省略号省略号,是标点符号家族中的比较特殊的一个符号,它是由六个小圆点组成。省略号的用法不止省略文字的作用。它还有以下几种用法。1用法一(一)表示重复词语或列举的省略。例:1、果园里有桃树、梨树、杏树、枇杷树……真的是种类齐全。2、那…

【Java基础篇】你真的了解构造器吗?

构造器是方法名和类名相同,并且没有返回值的特殊方法,可以使用的关键字有public, protected & private,或者省略(表示default) public class Constructor {//构造方法public Constructor(){}//实例方法public void…

【JAVA中级篇】线程池

上一篇文章已经介绍了线程的基本概念以及线程相关的API,下面来看一下线程池 一、线程池框架 1、线程池的优点 重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。 能有效控制线程池的最大并发数,避免大量线程之间因互相抢夺系…

kafka 脚本发送_Kafka笔记归纳(第五部分:一致性保证,消息重复消费场景及解决方式)...

写在开头:本章是Kafka学习归纳第五部分,着重于强调Kafka的事一致性保证,消息重复消费场景及解决方式,记录偏移量的主题,延时队列的知识点。文章内容输出来源:拉勾教育大数据高薪训练营。一致性保证水位标记…

【Java基础篇】集合排序

所谓集合排序是指对集合内的元素进行排序。 集合工具类Collections中提供了两种排序算法,分别是: Collections.sort(List list)Collections.sort(List list,Comparator c) Collections.sort(List list)这种方式需要对象实现Comparable接口,…

语言nomogram校准曲线图_预测模型的概率校准

1.背景 机器学习分为:监督学习,无监督学习,半监督学习(也可以用hinton所说的强化学习)等。在这里,先简要介绍一下监督学习从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和…

eclipse debug 工程源码时出现source not found问题解决

问题描述:使用eclipse debug启动应用,并且打断点在工程的源码上面,提示source not found。 问题解决: 1、选中工程,右键Debug As》Debug Configurations 2、在Java Application下面选中需要debug的程序,然…

代码中有个get是啥意思_是时候秀一波了,甩掉get和set,Lombok让代码更简洁

前言前几天有个新来的同事(实习生)惊讶的对我说:我们的代码里好多错误,我的程序本地都启动不了。我一脸懵逼的质问他:目前线上的代码,怎么会有问题吗?他不服气的说:你来看嘛,就是有问题&#xf…

JavaWeb工程师知识图谱

一个工作快三年的的Java菜鸟,总结梳理了一下JavaWeb工程师必须掌握的一些知识点(持续更新中。。。)。 预览效果 xmind原始文件 百度云盘 链接:https://pan.baidu.com/s/1hp3MWGOX2I8APw75Suu52Q 提取码:j6w6

【Java中级篇】基于jxl读写Excel文件遇到的问题

发生异常,并且提示:unable to recognize ole stream 遇到这个问题需要将Excel文件另存为Excel 97-2003(*.xls)

松下a6伺服x4接线图_2021中山东凤松下温控器回收价高同行

2021中山东凤松下温控器回收价高同行西门子TDC,西门子存储卡,西门子变频器等全线西门子自动化产品。小汪 满意的价格,快的付款速度,热诚欢迎全国各地朋友洽谈合作。具体回收业务:SIEMENS可编程控制器 1、SIMATIC,S7系列…

eclipse启动发生Failed to load JNI shared library

今天启动eclipse发生下面的情况 从网上知道是eclipse和jdk位数不一致导致的。 输入java -version ,查看JDK是多少位,显示64位的就是64位JDK,未显示的为32位的JDK。 eclipse的安装目录下有一个叫eclipse.ini的配置文件,打开后能看到 x86_64说…

imx226_相机选型器

-- 全部 --AR1820HS (8)CMV2000-2E5C1PP (2)CMV2000-3E12M1PP (2)CMV2000-3E5M1PP (2)CMV4000-3E12M1PP (1)CMV4000-3E5C1PP (5)CMV4000-3E5M1PP (5)EV76C560ABT (25)EV76C560ACT (25)EV76C570ABT (23)EV76C570ACT (23)EV76C661ABT (20)IMX174LLJ-C (8)IMX174LQJ-C (8)IMX178LL…