赣州市建设局网站,网站样板,智通人才网,咕果网给企业做网站的Java最新面试宝典 SpringMVC面试题 前言1、什么是SpringMVC#xff1f;2、SpringMVC 的优点#xff1f;3、Spring MVC配置步骤#xff1f;4、SpringMVC工作原理了解吗#xff1f;5、Spring MVC 核心组件的功能#xff1f;6、B/S 系统标准的三层架构是什么#xff1f;7、C… Java最新面试宝典 SpringMVC面试题 前言1、什么是SpringMVC2、SpringMVC 的优点3、Spring MVC配置步骤4、SpringMVC工作原理了解吗5、Spring MVC 核心组件的功能6、B/S 系统标准的三层架构是什么7、Controller 注解有什么用8、RequestMapping 注解有什么用9、RestController 和 Controller 有什么区别10、RequestMapping 和 GetMapping 注解的不同之处在哪里11、RequestParam 和 PathVariable 两个注解的区别12、返回 JSON 格式使用什么注解13、SpringMVC 拦截器与过滤器的区别14、怎么控制过滤器和拦截器的执行顺序15、SpringMVC 中如何解决请求中⽂乱码问题16、怎么把ModelMap⾥⾯的数据放⼊Session⾥⾯17、SpringMVC 和 Struts2 的异同18、SpringMVC 怎么样重定向和转发的19、SpringMvc里面拦截器是怎么写的20、HandlerInterceptor接口是什么总结 前言
最新的 Java 面试题技术栈涉及 Java 基础、集合、多线程、Mysql、分布式、Spring全家桶、MyBatis、Dubbo、缓存、消息队列、Linux…等等会持续更新。
如果对老铁有帮助帮忙免费点个赞谢谢你的发财手
1、什么是SpringMVC
Spring MVC是一个基于Java的实现了MVC设计模式的轻量级Web框架通过把ModelViewController分离把复杂的web层分成逻辑清晰的3部分减少了出错方便开发人员之间的配合。
2、SpringMVC 的优点
1可以支持各种视图技术包括Jsp、Thymeleaf、Freemarker等 2与Spring框架集成包括IOC容器、AOP等 3有清晰的角色分配前端控制器处理器映射器处理器适配器视图解析器。 4支持各种请求资源的映射策略。
3、Spring MVC配置步骤
1、搭建Spring MVC 环境需要使用的jar包 2、web.xml配置前端控制器以及SpringMVC.xml的路径 !--前端控制器配置DispatcherServlet--
servletservlet-nameSpringMVC /servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet
/servlet-classinit-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:SpringMVC .xml/param-value/init-param!--自动动配置要放在init-param配置后否则会报错--load-on-startup1/load-on-startup
/servlet
!--配置控制器访问配置的值为/ 表示所有访问都会进入此前端控制器(.jsp访问地址除外)--servlet-mappingservlet-nameSpringMVC /servlet-nameurl-pattern//url-pattern/servlet-mapping3、在SpringMVC.xml的配置文件中:
!-- 配置spring注解扫描--context:component-scan base-packageController/context:component-scan
!-- 配置SpringMVC 注解驱动--
mvc:annotation-driven/mvc:annotation-driven
!--配置视图解析器: --bean classorg.springframework.web.servlet.view.InternalResourceViewResolver!--前缀配置--property nameprefix value//property!--后缀配置--property namesuffix value.jsp/property/bean
!--配置静态资源配置需要放行的静态资源地址不需要解析该请求地址--
!-- mapping配置静态资源的请求路径location配置静态资源所在的路径使用*通配符一个*表示该路径下的资源两个**表示该路径下的所有资源文件(包含子文件中的资源文件)--mvc:resources mapping/js/ location/js/**/mvc:resourcesmvc:resources mapping/css/ location/css/**/mvc:resourcesmvc:resources mapping/images/ location/images/**/mvc:resources4、SpringMVC工作原理了解吗
原理如下图所示 1)、客户端浏览器发送请求直接请求到 DispatcherServlet 2)、前端控制器调用处理器映射器HandlerMapping处理器映射器根据请求URL信息解析返回一个处理器执行链包含处理器handler和拦截器interceptors 3)、前端控制器调用处理器适配器HandlerAdapter处理器适配器根据Handler来调用真正的处理器Controller并处理相应的业务逻辑 4)、处理完业务逻辑后会返回一个ModelAndView对象Model是封装的数据对象 6)、然后前端控制器调用视图解析器ViewResolver视图解析器根据View名称查找到具体的页面地址并返回一个View 视图对象 7)、然后前端控制器对视图进行渲染最后通过页面展示给客户端。
5、Spring MVC 核心组件的功能
前端控制器DispatcherServlet DispatcherServlet 是 Spring MVC 的入口函数。负责接收客户端请求响应结果给客户端相当于转发器。有了 DispatcherServlet 可以大大减少其它组件之间的耦合度。 DispatcherServlet 是整个流程控制的中心由它来调用其它组件处理用户的请求。处理器映射器HandlerMapping HandlerMapping 负责根据用户请求URL找到合适的 HandlerExecutionChain 处理器执行链包含处理器handler和拦截器们interceptors处理器适配器HandlerAdapter 按照特定规则HandlerAdapter 要求的规则去执行 Handler通过 HandlerAdapter 对处理器进行执行。因为处理器 handler 的类型是 Object 类型需要有一个调用者来实现 handler 是怎么被执行。所以这里需要一个处理器适配器由它去执行处理器。处理器 Handler(需要工程师开发) Handler 是在 DispatcherServlet 的控制下Handler 对具体的用户请求进行处理。由于 Handler 涉及到具体的用户业务请求所以一般情况下需要工程师根据业务需求来开发 Handler。视图解析器 View Resolver 进行视图解析首先根据逻辑视图名解析成物理视图名即具体的页面地址再生成 View 视图对象。MultipartResolver 内容类型( Content-Type )为 multipart/* 的请求的解析器⽤于上传请求通过将普通的请求包装成 MultipartHttpServletRequest 来实现。 MultipartHttpServletRequest 可以通过 getFile() ⽅法 直接获得⽂件。 如果上传多个⽂件还可以调⽤ getFileMap()⽅法得到MapFileNameFile这样的结构MultipartResolver 的作⽤就是封装普通的请求使其拥有⽂件上传的功能。
6、B/S 系统标准的三层架构是什么
B/S系统标准的三层架构分别是表现层、业务层、持久层。 表现层 常说的web 层它负责接收客户端请求响应结果给客户端。 MVC 是表现层的设计模型和其他层没有关系。 2.业务层 常说的 service 层它负责业务逻辑处理如果要对数据持久化需要保证事务⼀致性。也就是我们说的事务应该放到业务层来控制3.持久层 常说的 DAO层负责数据持久化就是和数据库交互对数据库表进⾏增删改查的。
7、Controller 注解有什么用
Controller 注解标记一个类为 Spring的控制器Spring会扫描到该注解的类然后扫描这个类下面带有 RequestMapping 注解的方法根据注解信息为这个方法生成一个对应的处理器对象。 等价于实现了 Spring MVC提供的 Controller 或者 HttpRequestHandler 接口
8、RequestMapping 注解有什么用
RequestMapping 注解配置HTTP 请求方法URL等信息这样才能将请求和方法进行映射。这个注解可以作用于类上面也可以作用于方法上面在类上面一般是配置这个控制器的 URL前缀。
9、RestController 和 Controller 有什么区别
RestController 注解在 Controller 基础上增加了 ResponseBody 注解更加适合目前前后端分离的架构下提供 Restful API 返回例如 JSON 数据格式。当然返回什么样的数据格式根据客户端的 ACCEPT 请求头来决定。
10、RequestMapping 和 GetMapping 注解的不同之处在哪里
1、RequestMapping可用在类和方法上GetMapping 仅可用在方法上 2、RequestMapping可支持 GET、POST、PUT、DELETE 等请求方法 GetMapping 只支持GET 请求方法目的是为了提高清晰度。
11、RequestParam 和 PathVariable 两个注解的区别
区别在于一个是用一个是用/ RequestParam 是从request里面获取参数值user?id123 而 PathVariable 是从URI后缀获取参数user/123。
12、返回 JSON 格式使用什么注解
可以使用 ResponseBody 注解或者使用包含 ResponseBody 注解的 RestController 注解。
13、SpringMVC 拦截器与过滤器的区别
①拦截器是基于java的反射机制的比如动态代理过滤器是依赖于servlet容器基于函数回调 ②拦截器只能对action请求起作用而过滤器则可以对几乎所有的请求起作用 ③拦截器可以获取IOC容器中的各个bean过滤器就不行。 触发时机 1.过滤器是在请求进入容器后但请求进入servlet之前进行处理的。请求结束返回也是是在servlet处理完后返回给前端之前。 2. 拦截器的配置⼀般在的SpringMVC配置⽂件中使⽤Interceptor标签 总结过滤器Filter包裹住servletservlet包裹住拦截器Interceptor
14、怎么控制过滤器和拦截器的执行顺序
过滤器Filter用Order注解控制执行顺序通过Order控制过滤器的级别值越小级别越高越先执行。 拦截器Interceptor默认的执行顺序就是它的注册顺序也可以通过Order注解控制值越小越先执行。
15、SpringMVC 中如何解决请求中⽂乱码问题
解决post请求乱码问题
1、在doPost方法首行添加request.setCharacterEncoding(“utf-8”);2、在web.xml中配置⼀个CharacterEncodingFilter过滤器并设置编码为utf-8 解决get请求乱码问题 在Tomcat中的server.xml文件指定URIEncoding”UTF-8”。 ( Connector port“8080” protocol“HTTP/1.1” redirectPort“8443” connectionTimeout“20000” URIEncoding“UTF-8”/)
16、怎么把ModelMap⾥⾯的数据放⼊Session⾥⾯
默认情况下SpringMVC将模型中的数据存储到request域中当⼀个请求结束后数据就失效了。如果要跨页⾯使⽤。那么需要使⽤到session。 可以在类上⾯加上SessionAttributes注解,⾥⾯包含的字符串就是要放⼊session⾥⾯的key。 SessionAttributes(value { “key” })
17、SpringMVC 和 Struts2 的异同
1、入口不同 Spring MVC 的入门是一个 Servlet 控制器。 Struts2 入门是一个 Filter 过滤器。2、安全问题 Spring MVC默认为单例是非线程安全的。 Struts2 是多例是线程安全的。
18、SpringMVC 怎么样重定向和转发的
转发在返回值前面加forward:“如forward:user.do?namehello”重定向在返回值前面加redirect:“如redirect:http://www.baidu.com”。
19、SpringMvc里面拦截器是怎么写的
有两种写法一种是实现HandlerInterceptor接口另外一种是继承适配器类接着在接口方法当中实现处理逻辑然后在SpringMvc的配置文件中配置拦截器即可。
20、HandlerInterceptor接口是什么
我们可以配置多个拦截器每个拦截器中都有三个方法。下面将总结多个拦截器中的方法执行规律。 1、preHandleController方法处理请求前执行根据拦截器定义的顺序正向执行。 2、postHandleController方法处理请求后执行根据拦截器定义的顺序逆向执行。需要所有的preHandle方法都返回true时才会调用。 3、afterCompletionView视图渲染后处理方法根据拦截器定义的顺序逆向执行。preHandle返回true就会调用。
总结
都已经看到这里啦赶紧收藏起来祝您工作顺心生活愉快