servlet的生命周期

  1. 在创建servlet对象时,通过调用.init()方法进行初始化
  2. 通过service()方法来接收客户端的请求.根据请求方式的不同转发给对应的doGet()或doPost()方法
  3. 停止服务时,通过调用destory()方法销毁servlet对象
  4. servlet对象被JVM垃圾回收器回收

servlet对象是单例的

请求转发与重定向的区别

1)转发使用的是req.getRequestDispatcher()方法;重定向使用的是res.sendRedirect();

2)转发︰浏览器URL的地址栏不变;重定向:浏览器URL的地址栏改变;

3)转发是服务器行为,重定向是客户端行为;

4)转发是浏览器只做了一次访问请求。重定向是浏览器做了至少两次的访问请求;

5)转发两次跳转之间传输的信息不会丢失,重定向两次跳转之间传输的信息会丢失(request范围)。

1 请求转发之后不能创建响应类的输出流

2 请求转发之后不能重定向

请求转发和重定向不能同时用

请求转发或者重定向后面,不能再写新的代码

要访问jsp页面必须通过servlet请求转发到页面

如何设置session失效

客户端和服务端如果不断开连接 Session有一个方法可以设置session失效的时间

客户端和服务端断开连接,session将会失效

getSession()方法

getSession()会在请求范围内查找是否存在session对象,如果存在则返回该对象;否则创建一个新的session对象

session与cookie的区别

  1. 存储位置不同

    Cookie的数据信息存放在客户端浏览器上。

    Session的数据信息存放在服务器内存中。
  2. 存储容量不同

    单个Cookie保存的数据≤4KB,一个站点最多保存20个Cookie。
  3. 存取方式不同
  4. 隐私策略不同
  5. 有效期不同
  6. 服务器压力不同
  7. 浏览器支持不同

    (有些浏览器会禁用Cookie,造成数据丢失)
  8. 跨域支持上的不同

    Cookie 支持跨域名访问

Filter过滤器和listener监听器的区别

filter: 过滤器,用于拦截请求或者响应对象。filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改到某―资源的响应。

过滤非登录请求

listener:监听器,用于监听web对象的创建和销毁。从字面上可以看出 listener主要用来监听。通过 listener 可以监听web 服务器中某一个执行动作,并根据其要求作出相应的响应。通俗的语言说就是在application,session,request三个对象创建或者消亡时,自动执行相应的监听方法。

WEB-INF目录

WEB-INF是Java的 WEB应用的安全目录,特点是客户端无法访问

ServletContext接口

Servletcontext官方叫servlet 上下文。

定义:

web容器在启动时,服务器tomcat 会为每一个工程创建一个对象,这个对象就是ServletContext对象,它代表当前 web应用程序。这个对象全局唯一,而且工程内部的所有servlet 都共享这个对象,所以也叫全局 应用程序 共享对象。

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过servletcontext对象来实现通讯。因此,servletContext对象通常也被称之为context域对象。

ServletContext的应用:

1.做为域对象可以在整个web应用范围内共享数据。

域对象:在一个可以被看见的范围内共享数据用的对象

作用范围:整个web应用范围内共享数据

生命周期:当服务器启动web应用加载后创建出 ServletContext对象后,域对象产生。

当web应用被移除出容器或服务器关闭,随着web应用的销毁,域对象销毁。

2. 获取 web应用的初始化参数

使用标签(与Servlet标签并列)为整个web应用配置属性,ServeltContext对象通过getInitParameter()方法获得全局初始化参数:

ServletContext对象是在 Web 应用程序装载时初始化的。

ServletContext实例是通过getServletContext()方法获得的

ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。

GET与POST 请求方式的区别:

1 GET请求业务参数以键值对的形式拼接在URL后面;

POST请求业务参数存放在HTTP头信息中;

2 GET请求URL长度是受限制的,URL的最大长度是1024个字符,即2KB;

POST请求理论上数据长度无限制,但是数据受web服务器限制;

3 GET请求安全性较差,因为参数是URL的一部分,对用户可见;

POST请求相对更安全.因为参数不会被保存在浏览器历史或web服务器日志中

4 GET请求只允许ASCII字符;POST请求没有限制。也允许二进制数据.所以提交多媒体文件用POST方式提交。

HTTP状态码列表(重要的几个)

状态码 状态码英文名称 中文描述
200 OK 请求成功。一般用于GET与POST请求
400 Bad Request 客户端请求的语法错误,服务器无法理解404Not Found服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
404 not found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405 Method Not Allowed 客户端请求中的方法(GET/POST)被禁止
500 Internal Server Error 服务器内部错误,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

Servlet面试题合集的更多相关文章

  1. Struts+Hibernate+Spring面试题合集及答案

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 2 ...

  2. Struts+Hibernate+Spring面试题合集及答案(转)

    Struts+Hibernate+Spring面试题合集及答案 Struts+Hibernate+Spring 面试题合集 1 1. Hibernate部分 2 1.1. Hibernate工作原理 ...

  3. Mybatis面试题合集及答案

    Mybatis面试题合集及答案 1.#{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态 ...

  4. Java 分布式框架面试题合集

    Java 分布式框架面试题合集 1.什么是 ZooKeeper? 答:ZooKeeper 是一个开源的分布式应用程序协调服务,是一个典型的分布式数据一致性解决方案.设计目的是将那些复杂且容易出错的分布 ...

  5. 【转】Java面试题合集

    2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对 ...

  6. 史上最全最新java面试题合集二(附答案)

    下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 51.类ExampleA继承Exception,类ExampleB继承ExampleA. 有如下代码片断 ...

  7. Linux 运维工程师经典面试题合集(不断更新中 ...)

    写在前面的话 做运维以来,关注了很多关于互联网技术,培训等乱七八糟的公众号,时不时的就会推一些各种公司的面试题过来. 大致看了一下,发现自己很多知识要么遗忘了,要么很难说出个所以然,所以这里对那些个人 ...

  8. 9月最新184道阿里、百度、腾讯、头条Java面试题合集

    阿里面试题 1. 如何实现一个高效的单向链表逆序输出? 2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位 3. 给定一个二叉搜索树(BST),找到树中第 ...

  9. 手撕面试官系列(一):spring108道面试题合集

    前言 想必各位程序员已经开始准备金九银十的秋招了,创建这个这个系列文章的目的就是为了帮助大家解决面试的问题,系列文章将会一直更新,大家如果觉得不错可以关注我并转发,让更多程序兄弟看到~接下来我们进入正 ...

  10. 2020阿里,字节跳动,JAVA岗(一线企业校招、社招)面试题合集

    前言 以下面试题全属于一线大厂社招以及校招的面试真题,各位在做这些题目对照自己的时候请平凡心对待,不要信心受挫.其实 做为致力于一线企业校招或者社招的你来说,能把每个知识模块的一小部分问题去深入学习和 ...

随机推荐

  1. 《Java基础——数组的定义与使用》

    Java基础--数组的定义与使用       一. 一维数组: 格式一: 数组类型 数组变量[]=new 数据类型[长度]; //需要后续赋值,且后续赋值时只能为单个元素赋值. 或 数组类型 数组变量 ...

  2. 【学习笔记】Vin-Mono论文阅读笔记(一)

    VINS-Mono 概述 VINS-Mono VINS-Mono是由一个单目相机和一个低成本IMU组成的鲁棒通用的单目视觉惯性系统.通过融合预积分的IMU测量值和特征观测值来获得高精度的视觉惯性里程计 ...

  3. Helm包管理

    Helm Kubernetes 包管理工具 Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义.安装和升级复杂的 Kubernetes 应用程序,Char ...

  4. Elasticsearch:inverted index,doc_values及source

    以后会用到的相关知识:索引中某些字段禁止搜索,排序等操作 当我们学习Elasticsearch时,经常会遇到如下的几个概念: Reverted index doc_values source? 这个几 ...

  5. Elastic: 创建一个 Elastic 邮件警报 - 7.7 发行版

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106185321 总结: 1.elastic 免费版只有发送警报到一个索引或者到Ser ...

  6. MongoDB $type 操作符

    描述 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. MongoDB 中可以使用的类型如下表所示: 类型 数字 备注 Double 1 String 2 Object 3 ...

  7. C++面向对象编程之类模板、函数模板等一些补充

    1.static数据 和 static函数: 对于 非static函数 在内存中只有一份,当类对象调用时,其实会有该对象的this pointer传进去,那个函数就知道要对那个对象进行操作: stat ...

  8. 一篇文章带你掌握主流办公框架——SpringBoot

    一篇文章带你掌握主流办公框架--SpringBoot 在之前的文章中我们已经学习了SSM的全部内容以及相关整合 SSM是Spring的产品,主要用来简化开发,但我们现在所介绍的这款框架--Spring ...

  9. doecker---制作DockerFile并上传Hub

    一.DockerFile基础知识 FROM #基础镜像,一切从这里开始构建 MAINTAINER #镜像是谁写的,姓名+邮箱 RUN #镜像构建的时候需要运行的命令 ADD #添加内容,步骤,tomc ...

  10. 齐博X1-栏目的调用2

    fun('sort@fathers',$fid,'cms')  获取上层多级栏目这样的,比如我们现在所属第三级栏目,现在可以利用这个函数获取第二级和第一级的栏目,当然自身也会被调用出来,所以此函数用的 ...