最新BAT大厂面试者整理的Java面试题目,SSM的简介

  1. 什么是springmvc?

Springmvc是一个基于mvc的web框架,它是spring框架的一个模块,两者无需通过中间整合进行整合。

  1. Springmvc框架的执行步骤

第一步:用户发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求处理器映射器查找Handler

第三步:处理器映射器向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

ModelAndView是springmvc框架的一个底层对象,包括Model和View

第八步:前端控制器请求视图解析器去进行视图解析,根据逻辑图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果

  1. Springmvc框架常用注解

@Controller

@Controller用于标记在一个类上,使用它标记的类就是一个springmvc Controller对象。分发处理器将会扫描使用了该注解的方法,并检测该方法是否使用了@RequestMapping注解。

@RequestMapping

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

@Resource和@Autowired

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是spring支持该注解的注入。

共同点:

两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

不同点:

@Autowired是spring提供的注解。@Autowired注解是按照类型(byType)装配依赖对象,默认情况下他要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。

@Resource默认按照byName自动注入,@Resource有两个重要的属性:name和type,而spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用bytype自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

@ModelAttribute和@SessionAttributes

代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用

@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出uri模板中的变量作为参数,。

@RequestParam

主要用于在springmvc后台控制层获取参数,类似一种是request.getParameter(“name”),他有三个常用参数:defaultValue=”0”,required=false,value=“isApp”;defaultValue表示设置默认值

@ResponseBody

该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

@Component

相当于通用的注解,当不知道一些类归到那个层时使用,但是不建议。

@Repository

用于注解dao层,在daoImpl类上面注解

  1. Springmvc怎么样设定重定向和转发的?

转发:在返回值前面加“forward:”就可以让结果转发,譬如”forward:user.do?name=method

重定向:在返回值前面加“redirect:”就可以让返回值重定向,譬如“redirect:http://www.baidu.com

  1. Springmvc中的控制器的注解一般用哪个,有没有别的注解可以替代?

  2. 一般用@Controller注解,表示是控制层,不能用别的注解替代。

  3. Springmvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

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

  1. @RequestMapping注解用在类上面有什么作用?

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

  1. 如果前台有很多参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

直接在方法中声明这个对象,springmvc就自动会把属性赋值到这个对象里面。

  1. Springmvc中有个类把视图和数据都合并的一起的,叫什么?叫做ModelAndView。

  2. 当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?

要加上@ResponseBody注解。

  1. Sprigmvc的异常处理

可以将异常抛给Spring框架,有Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器添视图页面即可。

SpringMVC的好处

==========================================================================

Springmvc的优点

(1)Spring MVC中提供一个DispatcherServlet, 无需额外开发。

(2)springMVC中使用基于xml的配置文件,可以编辑,无需重新编译应用程序。

(3)springMVC实例化控制器,并根据用户输入来构造bean.

(4)springMVC可以自动绑定用户输入,并正确的转换数据类型。例如,springMVC能自动解析字 符串,并设置float或decimal类型的属性。

(5)springMVC可以检验用户输入,若校验不通过,则重定向回输入表单。输入校验是可选的, 支持编码方式以及声明。关于这一点,springMVC内置了常见的校验器。

(6)springMVC是spring框架的一部分。可以利用spring提供的其它能力。

(7)springMVC支持国际化和本地化,支持根据用户区域显示多国语言。

(8)springMVC支持多种视图技术,最常见的JSP技术以及其它技术包括Velocity和FreeMarker

详解:


  1. 清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command obect)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、试图解析器(view resoler)等等。每一个角色都可以由一个专门的对象来实现。

  2. 强大而直接的配置方式:将框架类和应用程序类都能作为JavaBean配置,支持跨多个context的引用,例如,在web控制器中对业务对象和验证器validator)的引用。

  3. 可适配、非侵入:可以根据不同的应用场景,选择何事的控制器子类(simple型、command型、from型、wizard型、multi-action型或者自定义),而不是一个单一控制器(比如Action/ActionForm)继承。

  4. 可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。
    自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

面试题总结

其它面试题(springboot、mybatis、并发、java中高级面试总结等)

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
[外链图片转存中…(img-FWQN64We-1713573288957)]

[外链图片转存中…(img-8g1Hj90U-1713573288958)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值