• Java面试题复习笔记(框架)


    1.什么是框架?

    为解决一个开放性问题而设计的具有一定约束性的支撑结构,再次结构上可以根据具体问题扩展,安插更多的组成部分,从而更迅速和方便地构建完整解决问题的方案。

    2.MVC模式?

    用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

    最简单的:JSp(View)+Servlet(Controller)+JavaBean(model)

    工作流程:

        (1)控制器收到来自用户的请求

        (2)控制器调用Javabean完成业务

        (3)完成业务后通过控制器跳转Jsp页面的方式给用户反馈信息

        (4)Jsp给用户做出响应

    3.MVC框架?

    是为了解决传统MVC模式问题而出现的框架。

    传统MVC模式问题:(1)所有servlet和servlet映射都要配置在web.xml中,如果项目过大,web.xml就太庞大了,并且不能实现模块化管理。

             (2)servlet主要功能是接收参数,调用逻辑,跳转界面,而像字符编码,文件上传等功能也要写在servlet中,不能让servlet完成他的主要功能,而需要做处理一些                                      特例。

             (3)接收参数麻烦,不能同通过model接收,只能单个接收,接收完成后转换封装model

             (4)跳转页面方式单一,且当页面名称发生改变时需要修改servlet源码。

    常用MVC框架:Structs2、SpringMVC

    4.Structs2的原理/执行流程?

    拦截------>判断------->寻找-------->执行-------->响应

    (1)客户端浏览器发送请求

    (2)这个请求经过一系列过滤器后到达核心过滤器

    (3)核心过滤器通过ActionMapper判断当前的请求是否需要某个Action处理,如果不需要,则走原来的流程,如果需要则把求情交给ActionProxy来处理

    (4)ActionProxy通过ConfiguratonManager询问框架的配置文件(structs.xml),找到需要调用的Action类

    (5)创建一个ActionInvocation实例,来调用Action的对应方法,获取结果集的name,在调用前后都会执行相关拦截器

    (6)通过结果集的name知道对应的结果集来对浏览器进行响应

    5.Structs2的拦截器,你都用它干什么?

    通过动态配置方式,可以在执行Action的方法前后加入相干逻辑完成任务。

    使用场景:(1)用户登录判断,在执行Action之前判断用户是否登陆,如果没有登陆则跳转到登陆页面

         (2)用户权限判断

         (3)操作日志

    Structs2的功能(参数处理,文件上传,字符编码等)都是通过系统拦截器实现的,也可以自定义拦截器,进行可插拔配置。

    6.SpringMVC原理/执行流程?

    (1)用户发送请求,请求被Spring前端控制捕获

    (2)解析请求得到URL,调用HandllerMapping获得该Handler配置的相关对象

    (3)根据获得的Handler,选择额一个合适的HandlerAdapter,填充Handler入参,执行Handler,完成后向servlet返回一个ModelAndView

    (4)Servlet选择合适的ViewResolver

    (5)渲染视图,servlet将渲染结果返回给客户端

    7.Structs2和SpringMVC有何不同?

    (1)核心控制器不同,SpringMVC——servlet,Structs2——Filter

    (2)控制器实例:SpringMVC是基于方法的设计,更像servlet,只有一个实例,每次请求执行对应方法即可;Structs2是基于对象

    (3)管理方式不同:现在很多企业采用Spring的管理方式,而SpringMVC是Spring中的一个模块,所以Spring对于SpringMVC的控制器管理更加简单方便

    (4)参数传递不同:Structs2中自身提供多种参数接收,都是通过valueStack进行传递和赋值,而SpringMVC是同故宫方法的参数进行接收。

    (5)学习难度:Spring更简单

    (6)拦截器的实现机制不同:Structs2有自己的interceptor机制,而SpringMVC用的是独立的AOP方式。

    (7)SpringMVC处理Ajax请求直接返回数据,Structs2是通过插件的方式进行处理。

    8.Spring中的两大核心?

    Spring是J2EE应用程序框架,是轻量级的IOC和AOP的容器框架。

    (1)IOC:Inversion of Control(控制权反转)

    例如:原来我的service需要调用dao,service就需要创建dao,使用Spring后当SPringle发现service依赖于dao的时候,就给我注入(依赖注入

    (2)AOP:面向切面编程

    核心原理:使用动态代理的方式在执行前后或初夏异常后加入相关逻辑

    主要用来做:事务处理、权限判断、操作日志。。。

    9.Spring事务的传播特性(事务处理)?

    即多个事务存在时怎么处理的策略。

    Required(需要)——如果存在一个事务,则支持当前事务,如果没有事务则开启事务

    Supports(支持)——如果存在一个事务,则支持当前事务,如果没有则进行非事务的执行

    Mandatory(必要/必须)——如果存在一个事务,则支持当前事务,如果没有事务则抛出异常

    Required_new——总是开启一个新事务,如果一个事务已经存在,则将这个事务挂起

    Not_support——总是非事务的执行,并挂起任何存在的事务

    Never——总是非事务的执行,并挂起任何存在的事务,如果存在一个活动事务,则抛出异常

    Nested(嵌套)——如果有就嵌套,没有就开启事务。

  • 相关阅读:
    总结一些css加载动画
    写日历的一些总结(三)
    写日历的一些总结(二)
    写日历的一些总结
    兼容性问题总结(转)
    关于npm(转)
    关于NaN
    面向对象与原型
    git命令
    python django 数据库树形菜单的设计
  • 原文地址:https://www.cnblogs.com/edward-life/p/10559154.html
Copyright © 2020-2023  润新知