【Java 架构师面试网】收集整理了一些 Java 面试的常见问题,这些问题可能会在你下一次技术面试中遇到。想成为 Java 架构师,这些都是不可避免也是必须要把握的哦,对于其余模块的面试题,我后续也将独自分享面试问题和答案。成为 Java 架构师的这条路道阻且艰,然而既然抉择了远方就是抉择了风雨兼程,心愿大家都能早日圆本人的架构师梦,同样也心愿我本人能够,除了网站,还做了个公众号:Java 架构师面试网,关注并加交换群即可取得我给你筹备的精美面试礼包哦~
1、什么是 SpringMvc?
答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需两头整合层来整合。
2、Spring MVC 的长处:
答:
1)它是基于组件技术的. 全副的利用对象, 无论控制器和视图, 还是业务对象之类的都是 java 组件. 并且和 Spring 提供的其余根底构造严密集成.
2)不依赖于 Servlet API(指标虽是如此, 然而在实现的时候的确是依赖于 Servlet 的)
3)能够任意应用各种视图技术, 而不仅仅局限于 JSP
4)反对各种申请资源的映射策略
5)它应是易于扩大的
3、SpringMVC 工作原理?
答:
1)客户端发送申请到 DispatcherServlet
2)DispatcherServlet 查问 handlerMapping 找到解决申请的 Controller
3)Controller 调用业务逻辑后,返回 ModelAndView
4)DispatcherServlet 查问 ModelAndView,找到指定视图
5)视图将后果返回到客户端
4、SpringMVC 流程?
答:
1)用户发送申请至前端控制器 DispatcherServlet。
2)DispatcherServlet 收到申请调用 HandlerMapping 处理器映射器。
3)处理器映射器找到具体的处理器 (能够依据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成) 一并返回给 DispatcherServlet。
4)DispatcherServlet 调用 HandlerAdapter 处理器适配器。
5)HandlerAdapter 通过适配调用具体的处理器(Controller,也叫后端控制器)。
6)Controller 执行实现返回 ModelAndView。
7)HandlerAdapter 将 controller 执行后果 ModelAndView 返回给 DispatcherServlet。
8)DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
9)ViewReslover 解析后返回具体 View。
10)DispatcherServlet 依据 View 进行渲染视图(行将模型数据填充至视图中)。
11)DispatcherServlet 响应用户。
5、讲下 SpringMvc 的执行流程
答:系统启动的时候依据配置文件创立 spring 的容器, 首先是发送 http 申请到外围控制器 disPatherServlet,spring 容器通过映射器去寻找业务控制器,应用适配器找到相应的业务类,在进业务类时进行数据封装,在封装前可能会波及到类型转换,执行完业务类后应用 ModelAndView 进行视图转发,数据放在 model 中,用 map 传递数据进行页面显示。
6、SpringMvc 的控制器是不是单例模式, 如果是, 有什么问题, 怎么解决?
答:是单例模式, 所以在多线程拜访的时候有线程平安问题, 不要用同步, 会影响性能的, 解决方案是在控制器外面不能写字段。
7、如果你也用过 struts2. 简略介绍下 springMVC 和 struts2 的区别有哪些?
答:
1)springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。
2)springmvc 是基于办法开发(一个 url 对应一个办法),申请参数传递到办法的形参,能够设计为单例或多例(倡议单例),struts2 是基于类开发,传递参数是通过类的属性,只能设计为多例。
3)Struts 采纳值栈存储申请和响应的数据,通过 OGNL 存取数据,springmvc 通过参数解析器是将 request 申请内容解析,并给办法形参赋值,将数据和视图封装成 ModelAndView 对象,最初又将 ModelAndView 中的模型数据通过 reques 域传输到页面。Jsp 视图解析器默认应用 jstl。
8、SpingMvc 中的控制器的注解个别用那个, 有没有别的注解能够代替?
答:个别用 @Conntroller 注解, 示意是体现层, 不能用用别的注解代替。
9、@RequestMapping 注解用在类下面有什么作用?
答:是一个用来解决申请地址映射的注解,可用于类或办法上。用于类上,示意类中的所有响应申请的办法都是以该地址作为父门路。
10、怎么样把某个申请映射到特定的办法下面?
答:间接在办法下面加上注解 @RequestMapping, 并且在这个注解外面写上要拦挡的门路
11、如果在拦挡申请中, 我想拦挡 get 形式提交的办法, 怎么配置?
答:能够在 @RequestMapping 注解外面加上 method=RequestMethod.GET
12、怎么样在办法外面失去 Request, 或者 Session?
答:间接在办法的形参中申明 request,SpringMvc 就主动把 request 对象传入
13、我想在拦挡的办法外面失去从前台传入的参数, 怎么失去?
答:间接在形参外面申明这个参数就能够, 但必须名字和传过来的参数一样
14、如果前台有很多个参数传入, 并且这些参数都是一个对象的, 那么怎么样疾速失去这个对象?
答:间接在办法中申明这个对象,SpringMvc 就主动会把属性赋值到这个对象外面。
15、SpringMvc 中函数的返回值是什么?
答:返回值能够有很多类型, 有 String, ModelAndView, 当个别用 String 比拟好。
16、SpringMVC 怎么样设定重定向和转发的?
答:在返回值后面加 ”forward:” 就能够让后果转发, 譬如 ”forward:user.do?name=method4″ 在返回值后面加 ”redirect:” 就能够让返回值重定向, 譬如 ”redirect:http://www.baidu.com”
17、SpringMvc 用什么对象从后盾向前台传递数据的?
答:通过 ModelMap 对象, 能够在这个对象外面用 put 办法, 把对象加到外面, 前台就能够通过 el 表达式拿到。
18、SpringMvc 中有个类把视图和数据都合并的一起的, 叫什么?
答:叫 ModelAndView。
19、怎么样把 ModelMap 外面的数据放入 Session 外面?
答:能够在类下面加上 @SessionAttributes 注解, 外面蕴含的字符串就是要放入 session 外面的 key
20、SpringMvc 怎么和 AJAX 互相调用的?
答:
通过 Jackson 框架就能够把 Java 外面的对象间接转化成 Js 能够辨认的 Json 对象。
具体步骤如下:
1)退出 Jackson.jar
2)在配置文件中配置 json 的映射
3)在承受 Ajax 办法外面能够间接返回 Object,List 等, 但办法后面要加上 @ResponseBody 注解
21、当一个办法向 AJAX 返回非凡对象, 譬如 Object,List 等, 须要做什么解决?
答:要加上 @ResponseBody 注解
22、SpringMvc 外面拦截器是怎么写的
答:有两种写法, 一种是实现接口, 另外一种是继承适配器类, 而后在 SpringMvc 的配置文件中配置拦截器即可:
<!-- 配置 SpringMvc 的拦截器 -->
<mvc:interceptors>
<!-- 配置一个拦截器的 Bean 就能够了 默认是对所有申请都拦挡 -->
<bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean>
<!-- 只针对局部申请拦挡 -->
<mvc:interceptor>
<mvc:mapping path="/modelMap.do" />
<bean class="com.et.action.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
</mvc:interceptors>
嗨,你好呀,将来的架构师,本文由 Java 架构师面试网 www.javajiagoushi.com 收集整理并进行编辑公布,谢谢大家的反对~