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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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、那…

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

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

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

松下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说…

5条件筛选功能_一分钟,彻底学会Excel高级筛选,坐等升职加薪!

Excel中高级筛选是普通筛选的加强,能够实现更加复杂的筛选功能。请您看下面的示例图:数据示例图如果要求筛选出班级为2班且语文成绩大于100分的数据,那么使用普通筛选连续筛选两次就可以得到结果。请您看下面的操作演示:普通筛选操…

工程图标注粗糙度_Inventor教程之工程图标注实例

1工程图标注实例对以下实体零件进行全部的标注演示。操作步骤如下:(1)打开文件。运行Inventor,单击“快速入门”选项卡“启动”面板上的“打开”按钮,在“打开”对话框中选择“实体零件”,单击“打开”按钮进入实体零件。(2)新建工…

定时线程_SpringBoot定时任务,@Async多线程异步执行

一、使用SpringBoot实现定时任务这个不是重点,就简单的实现一下,至于cron表达式怎么写也不是重点,自行百度即可。1-1、基于 Scheduled 注解的方式import org.springframework.scheduling.annotation.EnableScheduling;import org.springframe…

mysql怎么把datetime类型转换_mysql怎样实现time转datetime

mysql实现time转datetime的方法:使用在sql语句中【FROM_UNIXTIME(时间值)】,代码为【insert into test(time) values(FROM_UNIXTIME(%d))",time(NULL)】。mysql实现time转datetime的方法:FROM_UNIXTIME(time(NULL))将liunx系统的time_t类…

SpringBoot入门二

参考Spring Boot Starters - 御坂研究所 创建自己的starter starter是依赖的一种synthesize&#xff08;合成&#xff09;。 starter会把需要用到的依赖全部包含进来&#xff0c;避免开发者自己手动引入依赖。 starter的逻辑 pom.xml<parent><groupId>org.spri…

Tomcat入门

一&#xff0c;tomcat启动 双击startup.bat,如果出现一闪而过的情况&#xff0c;在文件的末尾添加pause&#xff0c;就可以看到环境变量设置的路径是否正确 如果无法在电脑的高级系统设置中设置环境变量&#xff0c;可以在setclasspath.bat中设置环境变量 set JAVA_HOMEC:\P…

线程组的概念

一&#xff0c;线程组和线程的结构&#xff1a;树形结构 每个Thread必然存在于一个ThreadGroup中&#xff0c;Thread不能独立于ThreadGroup存在。 执行main()方法线程的名字是main 如果在new Thread时没有显式指定&#xff0c;那么默认将父线程&#xff08;当前执行new Threa…

delphi7 mysql控件_Delphi7连接MySql数据库-DBGrid控件显示数据

一个简单的Delphi7小程序&#xff0c;使用MySql数据库做简单查询&#xff0c;用DBGrid控件显示结果&#xff0c;实现过程如下&#xff1a;(1)在MySql中新建demouser表&#xff0c;插入记录用于测试。(2)在Delphi7中新建项目。(3)在From中添加组件。组件Panel&#xff1a;pnl1组…

filtic函数 matlab_matlab filtic 函数应用 filter 解差分方程 dft 函数

matlab filtic 函数应用 filter 解差分方程 dft 函数一、 解差分方程说明都在代码注释里面了%这里要利用filtic函数 为滤波器的直接II型实现选择初始条件%求解查分方程 y(n) - 0.4y(n-1) - 0.45y(n-2) 0.45x(n) 0.4x(n-1) - x(n-2)%y(-1) 0 y(-2) 1 x(-1) 1 x(-2) 2%x(n)…