1、Spring MVC中的拦截器和Servlet中的filter有什么区别?
过滤器:依赖于servlet容器,在实现上基于函数回调,可以对几乎所有请求进行过滤
拦截器:依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架。在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。只能对controller请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理。
2、Spring MVC常用的注解有哪些?(高频)
1、@RequestMapping:用于映射请求路径,可以定义在类上和方法上。用于类上,则表示类中的所有的方法都是以该地址作为父路径。
2、@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
4、@PathViriable:从请求路径下中获取请求参数(/user/{id}),传递给方法的形式参数
5、@ResponseBody:注解实现将controller方法返回对象转化为json对象响应给客户端。
6、@RequestHeader:获取指定的请求头数据
3、Sping MVC中的控制器的注解一般用哪个?有没有别的注解可以替代?(高频)
一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller。
4、如果想限定发送的请求方式应该如何进行实现?
两种方式:
1、使用@RequestMapping注解的method属性,如下所示:
2、使用GetMapping
5、Spring MVC的Controller线程安全?如何解决?
Controller是默认单例模式,高并发下全局变量会出现线程安全问题!
解决方案:
2、将控制器的作用域从单例改为原型,如下所示:
8、Spring MVC怎么样设定重定向和转发的?(高频)
1、在返回值前面加"forward:"就可以让结果转发,譬如"forward:user.do?name=method4"
2、在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:http://www.baidu.com"
9、Spring MVC怎么和AJAX相互调用的?
通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
1、导入json数据转换的核心jar包
2、在适配器中配置json数据转换的解析器(因为使用的注解驱动开发,所以不需要再进行配置)
3、Controller方法直接返回对象或者List数据,在Controller方法上使用@ResponseBody注解
10、如何解决POST请求中文乱码问题,GET的又如何处理呢?
1、解决post请求乱码问题:
![[Spring MVC面试题.png]]
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
②另外一种方法对参数进行重新编码:HandlerInterctpter接口
String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。
11、使用Spring MVC如何完成文件上传?
-
导入commons-fileupload(spring MVC底层依赖的就是Apache的FileUpload)
-
在Controller方法的形参中定义MutipartFile,接收上传的文件,形要求参的名称需要和文件上传表单项名称一致
![[Spring MVC面试题-1.png]]
12、Spring MVC如何获得request, response, session?(高频)
1、方式一:在Controller方法的形参中可以直接定义HttpServletRequest HttpServletResponse,HttpSession
2、方式二:通过@Autowired注入HttpServletRequest,HttpServletResponse ,HttpSession
13、Spring MVC怎么处理异常?(高频)
可以直接使用Spring MVC中的全局异常处理器对异常进行统一处理,此时Contoller方法只需要编写业务逻辑代码,不用考虑异常处理代码。
开发一个全局异常处理器需要使用到两个注解:@ControllerAdvice 、@ExceptionHandler
如下所示:
14、Spring MVC执行流程是什么?(高频)
具体流程如下所示:
1、用户发送出请求到前端控制器dispatcherServlet。
2、dispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
3、HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给dispatcherServlet。
4、dispatcherServlet调用HandlerAdapter(处理器适配器)。
5、HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。
6、Controller执行完成返回ModelAndView对象。
7、HandlerAdapter将Controller执行结果ModelAndView返回给dispatcherServlet。
8、dispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
9、ViewReslover解析后返回具体View(视图)。
10、dispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
15、Spring MVC的主要组件都包含了哪些?(高频)
如下所示:
1、前端控制器 dispatcherServlet(不需要程序员开发):作用:接收请求、响应结果 相当于转发器,有了dispatcherServlet 就减少了其它组件之间的耦合度。
2、理器映射器HandlerMapping(不需要程序员开发)作用:根据请求的URL来查找Handler
3、处理器适配器HandlerAdapter(不需要程序员开发)作用:执行处理器
4、处理器Handler(需要程序员开发)
5、视图解析器 ViewResolver(不需要程序员开发)作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view)
6、视图View(需要程序员开发jsp)View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。