转载自 JAVA面试常考系列十

题目一

Servlet是什么?

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的作用是处理客户端请求并生成动态Web内容。

一般情况下,Servlet主要用于处理或者存储由HTML表单提交的数据,提供动态内容并管理状态信息。

题目二

Applet和Servlet有什么区别?

Applet是客户端Java程序,Servlet是服务器端组件。

Applet运行在客户机上的Web浏览器中,Servlet运行在Web服务器上。

Applet可以使用用户接口类,servlet没有用户接口,等待客户端的HTTP请求,并在每个请求中产生一个响应。

题目三

GenericServlet和HttpServlet有什么区别?

HttpServlet是GenericServlet的子类。

GenericServlet是个抽象类,必须给出子类才能实例化。它给出了设计servlet的一些架构,定义了servlet生命周期,以及一些得到名字、配置、初始化参数的方法,其设计的是和应用层协议无关的。

HttpServlet是子类,所以具有GenericServlet的一切特性,还添加了doGet, doPost, doDelete, doPut, doTrace等方法用来处理http协议里命令的请求响应过程。

题目四

一个Servlet在生命周期中经历了哪些过程?

Servlet 在加载之后依次经历了实例化、服务、销毁三个过程。

init()

在服务器装入Servlet时,将会执行init()方法,目的是为了初始化Servlet对象。也可以通过配置服务器,在启动服务器或客户机首次访问Servlet时装入Servlet。Init()方法在整个生命周期中,仅仅执行一次,与访问Servlet的客户机数量无关。

service()

负责响应客户的请求,是Servlet的核心。当一个客户请求一个HttpServlet对象时,对象就会调用Service()方法,并传递给方法一个请求对象和一个响应对象作为参数。Service()方法在HttpServlet中已存在,默认的服务功能是调用与HTTP请求的方法相应的do功能。

destroy()

在服务器端停止且卸载Servlet时执行该方法,用来释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,所以在调用destroy()方法时,需要确认这些线程已经终止或完成。与init()方法一样,整个生命周期中,仅执行一次。

题目五

doGet()和doPost()有什么区别?

区别一

get是从服务器上获取数据,post是向服务器传送数据。

区别二

get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。过程对用户不可见。

区别三

对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

区别四

get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。

区别五

get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

题目六

什么是服务器端包含(SSI)?

服务端包含(SSI)是一种简单的解释型服务端脚本语言,多数情况下只用在Web上,用servlet标签嵌入。SSI最常用的场景把一个或多个文件包含到Web服务器的一个Web页面中。当浏览器访问Web页面的时候,Web服务器会用对应的servlet产生的文本来替换Web页面中的servlet标签。

题目七

什么是ServletChaining?

ServletChaining是一种传输方法,用来把一个Servlet的输出发送给另一个Servlet。第二个Servlet的输出可以发送给第三个Servlet,依次循环。链末端Servlet负责把响应发送给客户端。

题目八

如何找出当前向你请求servlet的客户机?

ServletRequest类具有查找客户机的IP地址或主机名的功能。

getRemoteAddr()获取客户机的IP地址。

getRemoteHost()获取客户机的主机名。

题目九

HTTP响应的结构是什么?

HTTP响应由三部分组成:

状态代码:描述响应的状态。它可以用来检查请求是否已经成功完成。在请求失败的情况下,状态码可以用来找出失败的原因。如果您的servlet没有返回状态码,则默认返回成功状态码HttpServletResponse.SC_OK。

HTTP标头:它们包含更多关于响应的信息。例如,标题可以指定响应被视为陈旧的日期/时间,或用于安全地将实体传送给用户的编码形式。

Body:它包含响应的内容。正文可能包含HTML代码,图像等。主体由紧接在标题之后的HTTP事务消息中传输的数据字节组成。

题目十

sendRedirect和forward方法有什么区别?

区别一

sendRedirect方法可以定位到同一个web站点的其他应用,甚至可以通过传入绝对路径定位到别的web站点。forward方法只能转发给同一个web站点的资源。

区别二

sendRedirect转发后,浏览器url地址变为目的url地址。forward重定向后,浏览器url地址不变。

区别三

使用sendRedirect转发的过程,浏览器先向目的Servlet发送一次请求,Servlet看到sendRedirect将目的url返回到浏览器,浏览器再去请求目的url,目的url再返回response到浏览器。浏览器和服务器两次请求响应。

使用forward重定向的过程,是浏览器先向目的Servlet发送一次Request请求,然后再服务器端由Servlet再将请求发送到目的url,再由服务器端Servlet返回Response到浏览器端。浏览器和服务器一次请求响应。

区别四

sendRedirect方法由于两次浏览器服务器请求,所以有两个Request和Response。

forward方法的调用者与被调用者之间共享Request和Response。

JAVA面试常考系列十相关推荐

  1. java面试常考_JAVA面试常考系列十

    JAVA面试常考系列十 题目一 Servlet是什么? Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,是用Java编写的服务器端程序,主要的 ...

  2. JAVA面试常考系列十一

    转载自 JAVA面试常考系列十一 题目一 什么是JSP? JSP(Java Server Page)是一个文本文档,是一种将静态内容和动态生成内容混合在一起的技术. JSP包含两种类型的文本:静态数据 ...

  3. JAVA面试常考系列九

    转载自 JAVA面试常考系列九 题目一 RMI架构层的结构是如何组成的? RMI体系结构由三层组成,分别是: 存根和骨架层(Stub and Skeleton Layer) 远程引用层(Remote ...

  4. JAVA面试常考系列八

    转载自 JAVA面试常考系列八 题目一 JDBC是什么? JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系 ...

  5. JAVA面试常考系列六

    转载自 JAVA面试常考系列六 题目一 一个Applet有哪些生命周期? 一个Applet的生命周期分为以下四个阶段: Init 每次加载时都会初始化一个小程序.此方法通知Applet,方法已经被装入 ...

  6. JAVA面试常考系列五

    转载自 JAVA面试常考系列五 题目一 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么? 吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序 ...

  7. java面试常考系列四

    转载自 java面试常考系列四 题目一 大O符号(big-O notation)的作用是什么?有哪些使用方法? 大O符号描述了当数据结构里面的元素增加的时候,算法的规模或者是性能在最坏的场景下有多么好 ...

  8. JAVA面试常考系列三

    转载自 JAVA面试常考系列三 题目一 什么是迭代器(Iterator)? 迭代器(iterator)是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址.迭 ...

  9. JAVA面试常考系列二

    转载自 JAVA面试常考系列二 题目一 解释一下线程和进程 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调 ...

最新文章

  1. 2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️
  2. 终于知道10月27-28-29这3天为什么调整了
  3. [编程题]字符串最后一个单词的长度
  4. IUnknown接口QueryInterface函数介绍
  5. 测试用例设计与管理思路整理
  6. 由一个DAOHelper类引发的思考
  7. 拜托,面试别再问我基数排序了!!!
  8. java 读写acr122u_树莓派使用ACR122U读写IC卡
  9. 软考-计算机组成原理与结构
  10. python语言三角函数_python中三角函数_Python中的三角函数
  11. 进入显示器工厂模式的方法! 【95种品牌,维修珍藏资料】
  12. 操作系统——进程调度
  13. 企业数据备份,需要多少容量和性能满足?
  14. 【商业信息】国家地区语言缩写码
  15. Liunx wget命令
  16. Cortex-M3 处理器
  17. 加密软件 PGP安装教程。
  18. CAD文件如何转成PDF格式?告诉你如何转换
  19. 00后专访:我是如何初中毕业年仅16岁便踏入北漂码农行业的(一)
  20. 【深度学习 学习率,优化器】——深刻解读训练网络时各种学习率,优化器的区别,learning rate, Momentum

热门文章

  1. [数据结构-严蔚敏版]P71串的抽象数据类型的定义
  2. 大话数据结构学习笔记二:算法
  3. HDU 6127 Hard challenge(极角 + 二分)
  4. 【CF594E】Cutting the Line 【贪心】【Lyndon Word】【扩展kmp】
  5. cf375D. Tree and Queries
  6. 2020牛客国庆集训派对day4 Digits Are Not Just Characters
  7. 【每日一题】8月28日题目精讲 编号
  8. 【学习笔记】无向图、有向图的三元环、四元环计数问题(根号分支+bitset)
  9. CF1313D:Happy New Year(状压dp)
  10. P5825-排列计数【EGF,NTT】