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(嵌套)——如果有就嵌套,没有就开启事务。

Java面试题复习笔记(框架)的更多相关文章

  1. Java面试题复习笔记(前端)

    1.Html,CSS,Jsp在网页开发中的定位? Html——定义网页结构(超文本标记语言) CSS——层叠样式表,用来美化界面 Jsp——主要用来验证表单,做动态交互(Ajax) 2.介绍Ajax? ...

  2. Java面试题复习笔记(数据库)

    1.数据库分类? 关系型数据库和非关系型. 常用关系型:Myspl.Oracle.SQLServer 非关系型:Redis.Hadoop.Memcache.Mogobd 2.关系数据库三范式? 范式就 ...

  3. Java面试题复习笔记(Web方向)

    1.Http中get和post请求的区别? 共同点:都是Http请求方式,用户可以通过不同的请求方式完成对资源(Url)的操作.具体来讲就是get一般用于获取/查询资源信息,post用于更新资源信息. ...

  4. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  5. 2019百度阿里Java面试题(基础+框架+数据库+分布式+JVM+多线程)

    前言 很多朋友对面试不够了解,不知道如何准备,对面试环节的设置以及目的不够了解,因此成功率不高.通常情况下校招生面试的成功率低于1%,而社招的面试成功率也低于5%,所以对于候选人一定要知道设立面试的初 ...

  6. 2020年大厂Java面试题(基础+框架+系统架构+分布式+实战)

    前言 作为一个Java开发者,Java架构师应该是大家的一个职业目标了吧. 要成为Java架构师,首先你要是一个高级Java工程师,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得 ...

  7. 2018年最新JAVA面试题总结之框架(4)

    转自于:https://zhuanlan.zhihu.com/p/40098726 1.谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心是什么?回答:Spr ...

  8. java面试题复习(六)

    51.实现多线程的方法 一种是继承Thread类:另一种是实现Runnable接口.两种方式都要通过重写run()方法来定义线程的行为,推荐使用后者,因为Java中的继承是单继承,一个类有一个父类,如 ...

  9. Java面试题复习之Java基础

    1.面向对象的特征主要有哪些?   封装.继承.多态.抽象 2.final.finally.finalize的区别? final主要用于修饰类.方法.属性(变量)等. 通常被final修饰的类不能够被 ...

随机推荐

  1. 菜鸟学习计划浅谈之Linux系统

    人这一生都是在不断地学习,不断地进步中度过的,刚开始学习任何一门知识的时候,我们都习惯性的称自己为菜鸟,觉得自己对这方面的知识欠缺,水平很low,我也是如此.但我擅长总结,对于自己学习的新知识,总结学 ...

  2. appium框架之bootstrap

    (闲来无事,做做测试..)最近弄了弄appium,感觉挺有意思,就深入研究了下. 看小弟这篇文章之前,先了解一下appium的架构,对你理解有好处,推荐下面这篇文章:testerhome appium ...

  3. 比sun.misc.Encoder()/Decoder()的base64更高效的mxBase64算法

    package com.mxgraph.online; import java.util.Arrays; /** A very fast and memory efficient class to e ...

  4. Win10 登陆密码不正确(安全模式仍然启动不了)

    今天朋友重启Win10后,登陆密码显示不正确,是用了很多方法都不行 然后就瞎捣鼓就进去 进入BIOS将启动模式调为USB模式 重启启动不了后 再改回系统启动 就进去了(好神奇)

  5. Shell命令-文件及内容处理之split、paste

    文件及内容处理 - split.paste 1. split:分割文件为不同的小片段 split命令的功能说明 split 命令用于将一个文件分割成数个.该指令将大文件分割成较小的文件,在默认情况下将 ...

  6. Vue子组件与父组件之间的通信

    1.环境搭建 下载 vue-cli:npm install -g vue-cli 初始化项目:vue init webpack vue-demo 进入vue-demo文件夹:cd vue-demo 下 ...

  7. 爬虫简介与request模块

    一 爬虫简介 概述 近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的利益,而网络爬虫是其中最为常用的一种从网 ...

  8. MongoDB和pymongo的CURD

    一.mongodb 1.介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之 ...

  9. django rest framework serializers序列化

    serializers是将复杂的数据结构变成json或者xml这个格式的 serializers有以下几个作用: - 将queryset与model实例等进行序列化,转化成json格式,返回给用户(a ...

  10. GWAS: 曼哈顿图,QQ plot 图,膨胀系数( manhattan、Genomic Inflation Factor)

    画曼哈顿图和QQ plot 首推R包“qqman”,简约方便.下面具体介绍以下. 一.画曼哈顿图 install.packages("qqman") library(qqman) ...