Fork me on GitHub

JavaEE相关知识总结


  1. Mabatis主要优点有哪些

    • 小巧简单易学,没有任何第三方依赖
    • Mybatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响。
    • SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,更易于单元测试,并可重用
    • 提供映射标签,支持对象与数据库字段关系映射
    • 支持编写动态SQL语句
  2. 什么是数据持久化以及ORM

    • 数据持久化就是将内存中的数据模型转化为存储模型,以及将存储模型转化为内存中的数据模型的统称,数据模型可以是任何数据结构或数据模型,例如JavaBean对象;存储模型可以是关系型数据库表,XML文件,二进制文件等。
    • ORM是对象/关系映射,用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样,只需简单的操作实体对象的属性和方法,而不需要和复杂的SQL语句打交道,将程序中的对象自动持久化到关系数据库中。
  3. 什么是IOCDI

    • IOC全称是Inversion of Control,含义是控制反转。IOC是指程序中对象的获取方式发生反转,由最初的new方式转变为由第三方框架创建,注入,它降低了对象之间的耦合度
    • DI全称是Dependency Injection,含义是依赖注入,指自身对象中的内置对象是通过注入的方式进行创建,注入的方式主要有两种,即setter注入,它降低了对象之间的耦合度
  4. 什么是组件扫描

    • 指定一个包路径,Spring容器会自动扫描该包和其子包下的所有组件类,当发现组件类定义前有特定的注解标记时,就将该组件纳入到Spring容器中。等价于原来在XML配置中的定义功能
  5. 请列出Spring中关于组件创建的注解标记(至少5种)

    • @Component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id = "" class = ""/>)

    • @Autowired (注入属性)

    • @Repository (dao)

    • @Service (service)

    • @Controller(controller)

      这些加了注解的类都纳入了spring容器中管理

      下面写这个引入component的扫描组件

      <context:component-scan base-package="com.spring">

  6. 举例说明什么是构造器注入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package ex;
    public class A{
    private int a;
    public A(){}
    public A(int a){}
    public int getA(){return a;}
    public void setA(){this.a = a;}
    }

    // 配置文件中
    <bean id="a" class="ex.A">
    <constructor-arg name="a" value="1"></constructor-arg>
    </bean>
  7. 简述SpringMvc的工作流程

    • 首先用户发送请求->前端控制器(DispatcherServlet),前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器(Controller)进行处理并把请求委托给他
    • 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在SpringMVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView
  8. 简述Spring框架的好处

    • 降低组件之间的耦合度,实现软件各层之间的解耦
    • 可以使用容器提供的众多服务,如:事务管理服务,消息服务等等
    • 容器提供单例模式支持,开发人员不再需要自己编写实现代码
    • 容器提供AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
  9. 写出SrpingMVCController向页面传值的方法

    • 使用HttpServletRequest对象,调用setAttribute()传值
    • 使用HttpSession对象,调用setAttribute()传值
    • 使用ModelAndView对象,调用addObject()传值
    • 使用Model对象,调用addAttribute()传值
    • 使用RedirectAttributes对象,调用addFlashAttrubute()传值
  10. 简述SpringMVC如何和ajax进行交互返回json对象

    1. 前端ajax方法设置dataType:"json"
    2. 项目添加jackson-corejackson-databind依赖
    3. SpringMVC配置文件中添加json转换器的配置
    4. Controller中接收ajax的方法的上方添加@ResponseBody注解
    5. 该方法直接返回的ObjectList对象等数据类型
  11. 简述Servlet的生命周期

    1. Servlet生命周期:Servlet加载->实例化->服务->销毁
    2. init()->service()->destory()
    3. init()destory()都仅执行一次
  12. 简述请求转发和请求重定向的区别

    • 转发是服务器行为,重定向是客户端行为
    • 转发过程:客户浏览器发送http请求->Web服务器接收此请求->调用内部的一个方法在容器内部完成请求处理和转发动作->将目标资源发给客户;在这里,转发的路径必须是同一个Web容器下的url,其不能转向其他的web路径中去,中间传递的是自己容器内的request。在客户浏览器路径栏显示的任然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
    • 重定向过程:客户浏览器发送http请求->Web服务器接收后发送302状态码相应及对应新的location给客户浏览器->客户浏览器发送是302响应,则自动再发送一个新的http请求,请求url是新的location地址->服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次访问请求。
  13. 简述JDBC的主要工作原理

    1. 使用Class.forName()方法加载数据库JDBC驱动
    2. 通过DriverManager.getConnection()方法获取数据库的连接对象Connection
    3. 通过Connection对象创建相关的Statement对象
    4. 使用Statement对象executeUpdate()方法执行添加,修改以及删除的SQL语句
    5. 使用statement对象executeQuery()方法执行SQL查询语句,该方法返回ResultSet对象
    6. 关闭数据库连接
坚持原创技术分享,您的支持将鼓励我继续创作
-------------本文结束感谢您的阅读-------------
0%