第二次面试所提问的问题

  1. mvc三层架构的含义具体说一下这三层是什么意思?

m:model  模型层   v:view   视图层 ,比如html,jsp,vue    c:controller  控制层

三层架构是指  视图层 view   、服务层  service 、持久层 dao  他们分别完成不同的功能

view层 :用于请求用户提交的代码在这里编写

service层:系统的业务逻辑主要在这里完成

dao层:直接操作数据库的代码在这里编写

为了降低各层间的耦合度,在三层架构设计中,采用面向抽象编程。即上层对下层的调用,通过接口实现的。但是下层对上层的真正服务提供者,是下层接口的实现类。服务标准(接口)是相同的,服务提供者(实现类)可以更换,层间解耦合实现了。

 

2.MVC

MVC model 模型 、  view 视图  及 controller  控制器。

view :视图 ,为用户提供页面,与用户直接进行交互。

model :模型,承载数据,并对用户提交请求进行计算的模块。一类称为数据承载bean:实体类,专门用户承载业务数据的,一类称为业务处理类,service或dao对象,专门用于处理用户提交请求的。

controller:控制器,用于将用户请求转发给相应的model进行处理,并根据model的计算结果向用户提供相应响应。

mvc架构程序的工作流程:

(1)用户通过view页面向服务端提出请求,可以是表单请求、超链接请求、ajax请求

(2)服务端controller控制器接收到请求后对请求进行解析,找到相应的model对用户请求进行处理

(3)model处理后,将处理结果再交给controller

(4)controller接收到处理结果后,根据处理结果找到要作为向客户端发回的响应的view页面。页面经渲染后,在发送给客户端。

Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问,就是多个HTTP会话。作用域解释如下。

    2.jsp的四种作用域范围

page,session,request,application

application :服务器启动到停止这段时间。application的作用范围在服务器一开始执行服务,到服务器关闭为止,application的范围最大,停留的时间也最久。application作用域上的信息传递是通过servletcontext实现的。(整个web工程内有效

session:HTTP会话开始到结束这段时间。session的作用范围为一段用户持续与服务器连接的时间,一但与服务器断线,这个属性就无效。只要将数据存入session对象,数据的范围为session。(一次会话内有效,也就是打开浏览器访问服务器到关闭浏览器

request:HTTP请求开始到结束这段时间。request的范围是指在一jsp网页发出请求到另一个jsp网页之间,随后这个属性就失效。设定request的范围是可利用request的对象中的setAttribute( )和getAttribute( );(一次请求内有效

page:当前页面从打开到关闭这段时间(当前jsp页面范围内有效

3.web开发中前端页面是如何跟后端服务器数据交互的

首先要明白一点,servlet需要容器的支持才能够运行,比如tomcat达到servlet的请求,需要servletrequest会对象和servletresponse对象去处理servlet在服务器中的运行

1.加载到内存->2.初始化init(())->3.调用servicedoget/dopost->4.销毁destory(())

4.servlet的生命周期

servlet的生命周期就是从servlet出现到销毁的全过程。主要分为一下几个阶段
加载类->实例化(为对象分配空间)->初始化(为对象的属性赋值)->请求处理(服务阶段)->销毁阶段

5.list和map集合的区别

1.list和set是存储单列数据的集合,map是存储键和值双列数据的集合。

2.list中存储的数据是有序的,并且允许重复;map中存储的数据是无序的,其键是不能重复的,值可以重复;set中存储的数据是无序的,且不允许有重复,但元素在集合中的位置是由元素的hashcode值决定的,位置是固定的(set根据hashcode进行数据存储,所以位置是固定的,但是位置不是用户能控制的,所以对于用户来说set中的元素还是无序的。)

6.map集合存储数据的顺序为什么是无序的?

map对于每个元素保存一份,是基于“键”的,是成对的数据结构,键值必须具有唯一性(键允许重复,值不允许重复)。

hashmap是基于哈希表的map接口实现,以key-value的形式存在,是map的一个实现类,hashmap是无序的,因为hashmap中的元素在数组中的位置是由元素的hash值决定的。

7.序列化是什么意思?

序列化:把对象转化为字节序列的过程称为对象的序列化

反序列化:把字节序列恢复为对象的过程称为对象的反序列化

对象序列化的目的就是传递和保存对象,保证对象的完整性和可传递性。

比如通过网络传输或者把一个对象保存成一个文件的时候,需要序列化

基于对象能够在程序不运行的情况下仍能存在并保存其信息的需求,对象的序列化功能孕育而生

     通过什么方法进行序列化?

序列化是通过实现serializable接口,该接口没有需要实现的方法,implement Serializable只是为了标注该对象是可被序列化的,使用一个输出流(FileOutputStream)来构造一个ObjectOutputStream对象,接着使用ObjectOutputStream对象的writeObejct(Object object)方法就可以将参数的obj对象到磁盘,需要恢复的时候使用输入流。

8.servlet的doget和dopost方法的区别与使用?

    1.区别

在使用表单提交数据到服务器的时候有两种方式可供选择,一个是post一个是get。可在<form>中的method属性中指定提交的方式,如:<form action="inputForm"   method="get"> 如果不指定,则默认get

不同点一    get和post都能够提交数据,那么他们有什么不同呢?

通过get方式提交的数据有大小的限制,通常在1024字节,而通过post方式没有数据大小的限制,理论上传送多少数据都可以

不同点二    

通过get传递数据,实际上是将传递的数据按照"key,value"的方式跟在url后面,而post传递数据是通过http请求的附件进行的,在url中没有明文显示。

9.jsp和servlet的区别?

  (1)servlet是服务器端的Java程序,他担当客户端和服务端的中间层

  (2) jsp中文名叫Java服务器页面,其本质是一个简化的servlet设计。jsp是一种动态页面设计,它      的本质是把逻辑从servlet中分离出来

  (3) jvm只能识别Java代码,不能识别jsp,jsp编译后变成了servlet,web容器将jsp的代码编译成jvm所识别的Java类(servlet)

  (4) jsp有内置对象,servlet没有内置对象

10.jsp有哪些内置对象?作用分别是什么?

jsp九大内置对象:

   1.pagecontext,页面上下文对象,相当于页面中所有功能的集合,通过它获取out,request,response,application,session

   2.request,3.response,4.session,5.application ,应用程序对象,application实现了用户间的数据共享,6.page 就是jsp数据本身,7.exception ,8.out,out用于在web浏览器内输出信息,并且管理应用输出缓冲区,作用域为page,9.config,取得服务器的配置信息

11.forward和redirect的区别?

1.forward是直接请求转发;redirect是间接请求转发,又叫重定向。
2.forward,客户端和浏览器执行一次请求;redirect,客户端和浏览器执行两次请求。
3.forward,经典的MVC模式就是forward;redirect,用于避免用户的非正常访问。(例如用户非正常访问,servlet就可以将HTTP请求重定向到登录页面)。
4.forward,地址不变;redirect,地址改变。
5.forward常用方法:RequestDispatcher类的forward()方法;redirect常用方法:HttpServletRequest类的sendRedirect()方法。
12.什么是spring框架?spring框架有哪些模块?

spring是一个控制反转和横向切面的容器框架

spring有七大功能模块

core,aop,orm,dao,web,context,MVC

1.core模块是spring的核心类库,core实现了ioc功能

2.aop模块是spring的aop库,提供了aop机制,并提供了常见的拦截器,供用户自定义和配置

3.提供对常用orm框架的管理和支持,hibernate 、mybatis等

4.spring提供对jdbc的支持,对jdbc进行封装

5.context模块提供框架式的bean的访问方式,其他程序可以通过context访问spring的bean资源,相当于资源注入

6.mvc模块为spring提供了一套轻量级的mvc实现,即springmvc

13.spring 有几种配置方式?

1.xml配置文件

2.基于注解的方式

(1)bean的定义

@component、@controller、@service、@repository

(2)bean的注入

@Autowire

3.基于Java的方式

14.spring bean的生命周期?

  1.通过构造器或工厂方法创建bean实例;

  2.为bean的属性赋值;

  3.调用bean的初始化方法;

  4.使用bean;

  5.当容器关闭时,调用bean的销毁方法;

15.springbean有哪些作用域?

singleton:bean在每个spring ioc容器中只有一个实例,也是spring中的默认配置

prototype:一个bean的定义可以有多个实例

request:每次http请求都会创建一个bean,故该作用域仅在基于web的spring applicationcontext下情况下有效

session:在一个全局的httpsession中,一个bean定义对应一个实例

global -session :在一个全局的httpsession中,一个bean定义对应一个实例

16.什么是aop以及作用?

aop就是横向切面编程。

aop的编程思想就是把业务逻辑和横切的问题进行分离,从而打到解耦的问题,使代码的重用性和使用率变高。

aop的作用是对业务逻辑的各个部分进行隔离,降低业务逻辑的耦合性,提高代码的可重用性和开发效率。

    2.aop有哪些应用场景?

日志记录      权限校验和管理     缓存      事务

17.aop的实现原理?

aop是基于代理实现的,spring提供了两种方式来生成代理对象:

   JDK动态代理:利用拦截器加反射机制生成一个实现代理接口的匿名类

   CGlib:利用asm开源包修改字节码生成子类,且不支持final修饰的方法

18.spring事务的开启方式?

编程式事务:编程方式实现事务管理

声明式事务

可知编程式事务每次实现都要单独实现,但业务量大功能复杂时,使用编程式事务无疑是痛苦的,而声明式事务不同,声明式事务属于无侵入式,不会影响业务逻辑的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值