12月28号面试题分析整理

12月27号面试题分析整理

一.jsp的九大内置对象和作用

  1. request对象
    request 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
  2. response对象
    response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。
  3. session对象
    session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 session对象的value可以使复杂的对象类型,而不仅仅局限于字符串类型。
  4. application对象
    application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。
  5. out 对象
    out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
  6. pageContext 对象
    pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
  7. config 对象
    config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
  8. page 对象
    page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
  9. exception 对象
    exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

二.get和post请求的区别

–知识点1∶ GET和POST请求的区别(表单请求的方法)<form action="method="get’>

  1. GET请求把表单数据显示在url地址上,POST请求把表单数据放在请求体内
  2. GET表单数据长度有限,而POST没有限制
  3. GET请求 速度快些,POST相对会慢些
  4. GET请求一次性把数据和请求头header发送给服务器,服务器返回200,POST先把请求头header发送给服务器,服务器返回状态码100后再继续发送数据
  5. 假如表单中有图片、音频、视频等数据时,只能用post请求,不能用get get请求只能以字符形式发送请求,post请求既可以用字符也可以用字节

三.转发的重定向的区别(页面跳转)

  1. 请求转发通过request,重定向是通过response
  2. 请求转发的ur地址仍然显示跳转前原sp页面地址,而重定向的ur地址会显示跳转后的页面地址
  3. 请求转发内部转发,一次客户端请求,而重定向,客户端是2次请求
  4. 请求转发只能跳转本应用程序内的资源,而重定向可以跳转应用程序以外的资源

四.session的作用和原理

  1. 作用:实现网页之间数据传递,是一个存储在服务器端的对象集合。解决http无状态无连接的问题。
  2. 原理:客户端发送一个请求时,会在服务器端为该客户端创建一个session,会有一个sessionid,sessionid存放到一个cookie里,返回给客户端,当客户端再次发送请求时,这时会把sessionid传给服务端,服务端会比较sessionid

五.session的三种销毁方式

  1. 会话的生命周期
    从浏览器打开使用session开始,一直到关闭浏览器或者手动销毁session或者session设置有效时间中止时,session结束

  2. 手动销毁session
    session.invalidate()

  3. session的有效时长
    使用session.setMaxInactiveInterval()方法设置一个session的有效时长。
    session.setMaxInactiveInterval(10);//单位是秒,表示的是10秒钟后,session内容自动被清除

六.cookie是什么?如何使用

  1. cookie到底是个什么?
    由客户端浏览器生成的一个文件,用于存放一些值,
  2. cookie如何使用?
    cookie不是jsp的内置对象,需要手动创建cookie对象,cookie对象的值只能支持字符串,不支持其他类型。

七.jsp四大范围

  1. page范围 pageContext:只能在当前页面获取到.
  2. request 请求转发中,原jsp页面中存入值,使用请求转发跳转到另外一个页面,在另外一个页面中可以取出该值.
  3. session 只要在同一个会话中,之前存入session的值,都可以获取到.
  4. application 只要在同一个应用程序中,之前存入的值,在所有页面都可以获取.

八.禁用cookie后,如何让session继续能使用(url重写)

  1. 可以使用url重写
    javascript response.sendRedirect(response.encodeRedirectURL("test2.jsp")); //使用url重写的好处: url重写 假如cookie被禁用,url会重写,cookie没有被禁用,url不会被重写

九.servlet的生命周期

Servlet生命周期分为三个阶段:

  1. 初始化阶段 调用init()方法
    初始化init().只会被执行一次,而且是最先被执行。在tomcat 启动后,第一次运行该servlet时被执行一次。后续不再执行。
  2. 响应客户请求阶段  调用service()方法
    service() 每请求一次servlet都会调用一次doGet或doPost方法。
  3. 终止阶段  调用destroy()方法
    销毁destroy()只会被执行一次,而且是最后被执行的。而且要是正常关闭才会有。

十.servlet常用的api

  1. servlet基础类: Servlet接口、ServletConfig接口、ServletContext接口(上下文,全局对象)
  2. servlet抽象类:GenericServlet实现了上面2个接口
  3. servlet类 :HttpServlet继承了上面抽象类
  4. servlet接口: ServletRequest、ServletResponse接口
  5. serlvet请求响应类:HttpServletRequest,HttpServletResponse

十一.servlet的两种映射

1、在web.xml中配置
<servlet-name>、<servlet-class>、<servlet-name>、<url-pattern>
2、通过配置通过注解的方式
@WebServlet("/DemoServlet")
注:Servlet 3.0的新特性

十二.多重映射

是指同一个Servlet,可以被映射成多个虚拟路径
客户端可以通过多个路径,实现对同一个Servlet的访问

十三.过滤器的执行过程

与配置的映射路径有关

  • 一. 概念
    过滤器就是在源数据和目的数据之间起过滤作用的中间组件。对Web应用来说,过滤器是一个驻留在服务器端的Web组件,它可以截取客户端和资源之间的请求与响应信息,并对这些信息进行过滤
  • 二. 执行流程
    当Web容器接受到一个对资源的请求时,它就会判断是否有过滤器与这个资源相关联(这是一个自动的过程)。如果有,那么容器将把请求交给过滤器进行处理。在过滤器中,你可以改变请求的内容,或者重新设置请求的报头信息,然后再将请求发送给目标资源。当目标资源对请求作出响应时候,容器同样会将响应先转发给过滤器,再过滤器中,你可以对响应的内容进行转换,然后再将响应发送到客户端。

十四.servlet的加载

<load-on-startup>n</load-on-startup>

n<0 代表tomcat启动时不加载,只有在用户访问该servlet才加载
n>=0 代表该servlet会随tomcat而加载,优先级越低,数字越大

前段时间错题整理

1.是否可以从一个 static 方法内部发出对非 static 方法的调用

不可以。
       因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当个 static 方法被调用时,可能还没肴创建任何实例对象;如果从出对非 static 方法的调用,那个非 Starjc 方法是关联到哪个对象上的呢?这个逻辑无法成立个 static 方内部发出对非 satic 方法的调用。

2.java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

是引用对象的地址值不能变,引用变量所指向的对象的内容是可以改变。
  final变量永远指向这个对象,是一个常量指针,而不是指向常量的指针。
例如:
final StringBuffer sbu = new StringBuffer(“abc”);
在对其进行重新赋值
sbu = new StringBuffer(“”);
会出现编译错误,被final修饰的变量是不能被重新赋值的。
  而,sbu.append(“d”);是可以编译通过的;

3. 静态变量和实例变量的区别?

  1. 在语法定义上的区别:
    静态变量前要加 static 关键字,而实例变量(成员变量)前则不加。
  2. 在程序运行时的区别:
  • 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。
  • 静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,只分配一次,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

4.触发器的概念存储过程的概念。

  • 触发器:是存储在数据库中的过程,当表被修改(增、删、改)时它隐式地被激发。
  • 存储过程:是数据库语言8(2l.的集合,同样也存储在数据库中,但是他是由其他应用程序来启动运行或者也可以直接运行。

5.equals和==的区别

  1. == 表示 判断2个变量或对象实例是否指向同一个内存空间,equals()表示 判断2个变量或对象实例所指向的内存空间的值是否相同。
  2. == 表示 对内存地址进行比较,equals()表示 对字符串的内容进行比较。
  3. == 表示引用是否相同,equals() 表示值是否相同。
  4. equals是Java中一个方法,==是一个操作符。

6. 什么是事务?有哪些特性?

  1. 事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:
  2. 四大特性
    • 原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
    • 一致性:事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
    • 隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
    • 持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值