admin管理员组文章数量:1794759
springmvc面试题
1.springmvc是一个什么框架
在视图和控制器之间解决问题的框架 1.传值: ①视图向控制器传参:对象传参,逐个传参(@RequestParam) 当前端传来json时(@RequestBody),路径传参 ②控制器向视图传值:json(@ResponseBody) Model,ModelAndView 实质使用request传值 2.JSON的转换 jackson 3.简化了原有servlet开发,把请求和方法进行了映射
2.springMVC的工作流程用户发送请求后,前端控制器DispatcherServlet会进行拦截,因为DispatcherServlet一般情况下是饿汉式的,服务器启动,它会遍历IOC容器中的bean,获取每一个controller中的所有方法访问的url,然后将url和controller保存到一个map中,当请求到达DispatcherServlet时,会调用HandlerMapping处理器映射器,处理器映射器根据请求url在刚才所说的map中找到具体的处理器并返回给DispatcherServlet这时候返回给DispatcherServlet是一个类级别的对象,然后DispatcherServlet把这个对象在传给HandlerAdapter处理器适配器,HandlerAdapter通过url拼接的方式找到对应的方法,然后对其进行参数绑定,数据转换,验证等等,在将其传到service层dao层最后将modelandview返回到DispatcherServlet,DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析, ViewResolver解析后返回具体View,DispatcherServlet对View进行渲染视图,DispatcherServlet响应用户。
3.springMVC的优化1.Controller尽量使用单例,可以减少创建对象和回收对象的开销,如果Controller的类变量和实例变量可以以方法形参声明,那么就不用使用类变量和实例变量,可以避免线程安全问题 2.形参要加上@RequestParam注解,避免使用asm框架读取class文件获取方法参数名的过程。
4…SpringMVC的拦截器和过滤器有什么区别?执行顺序?1.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 2.拦截器只能对action请求(DispatcherServlet 映射的请求)起作用,而过滤器则可以对几乎所有的请求起作用。 3.拦截器可以访问容器中的Bean(DI),而过滤器不能访问(基于spring注册的过滤器也可以访问容器中的bean)。
执行顺序
5.跨域方式解决1、jsonp方式 利用 script 标签没有跨域限制的漏洞,网页可以得到从其他来源动态产生的 JSON 数据。JSONP 请求一定需要对方的服务器做支持才可以。缺点是仅支持 get 方法具有局限性,不安全可能会遭受 XSS 攻击。 2、cors方式 :后台使用 @CrossOrigin 原理:判断 @CrossOrigin 允许的请求的域名、端口号、协议不同的网络请求和实际的网络请求是否一致,如果一致,就在响应数据时,更改一个状态,浏览器允许接收到响应的数据 @CrossOrigin 利用spring拦截器,向response对象里添加 Access-Control-Allow-Origin响应头信,告知客户端允许该域的访问,浏览器接收后,判断,我的域名信是服务器允许的,不在拒绝数据的响应
版权声明:本文标题:springmvc面试题 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687015572a128844.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论