Java最全面试题->Java基础面试题->JavaEE面试题->Web应用服务器面试题

文章目录

Web应用服务器面试题

下边是我自己整理的面试题,基本已经很全面了,想要的可以私信我,我会不定期去更新思维导图
哪里不会点哪里

Tomcat是什么?

复制代码
tomcat是一个web应用服务器。比如,我们写的项目打包成war包以后需要放到tomcat指定的目录下。在启动tomcat就可以访问。

Tomcat缺省端口是多少,如何修改?

  • Tomcat缺省端口是8080;
  • 修改tomcat 端口:
    1. 找到tomcat目录下的conf文件夹;
    2. 进入conf文件夹找到server.xml文件
    3. 在server.xml文件里面找到Connector 标签,把port="8080",改成需求端口即可。

Tomcat 有那几种Connector 运行模式?

  • BIO
  • NIO
  • AIO

什么是Servlet?

Servlet(Servlet Applet),全称Java Servlert 。是用Java编写的服务器端程序。其主要功能在与交互式的浏览和修改数据,生成动态Web内容。狭义的servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet的类,一般情况下,人们将Servlet理解为后者。比如HttpServlet类继承自Servlet类,可以利用继承Http Servlet 来实现Http请求,当不是Http请求的时候,也可以定义其他形式的Servlet。

Servlet请求过程?

  • Tomcat容器中通过web.xml加载所有的Servlet。
  • 用户在浏览器输入不同的地址,向Tomcat容器请求资源。
  • Tomcat容器根据地址首先在容器内找到应用ServletTest。
  • Tomcat容器再根据地址去web.xml找到相应的servlet地址。
  • Tomcat容器根据找到的servlet地址去web.xml找到相应的Servlet类,并实例化。
  • Tomcat容器实例化相应的Servlet,首先调用init方法。
  • Tomcat容器实例化相应的Servlet,首先调用service方法处理用户请求,比如post或者是get。
  • Servlet处理完成之后,先将数据给Tomcat容器,Tomcat容器再把处理结果给浏览器客户端。
  • Tomcat容器调用servlet实例的destory方法销毁这个实例。

Tomcat执行流程?

  1. 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
  2. Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
  3. Engine获得请求localhost/项目/页面.jsp,匹配它所拥有的所有虚拟主机Host
  4. Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
  5. localhost Host获得请求/项目/页面.jsp,匹配它所拥有的所有Context
  6. Host匹配到路径为/项目的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
  7. path="/项目"的Context获得请求/页面.jsp,在它的mapping table中寻找对应的servlet
  8. Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
  9. 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
  10. Context把执行完了之后的HttpServletResponse对象返回给Host
  11. Host把HttpServletResponse对象返回给Engine
  12. Engine把HttpServletResponse对象返回给Connector
  13. Connector把HttpServletResponse对象返回给客户browser

Tomcat部署方式?

  1. 直接把Web项目放在webapps下,Tomcat会自动将其部署
  2. 在server.xml文件上配置\节点,设置相关的属性即可
  3. 通过Catalina来进行配置:进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。

什么是JBoss ?

JBoss 是一个基于J2EE的开放源代码的应用服务器

在JBoss 7中访问管理控制台的默认端口是什么?

默认端口为9990

独立模式和域模式有什么区别?

独立模式是单个JVM进程, 其中每个JBoss服务器都有其配置。如果你只需要一个JVM或开发环境, 那么独立运行将是完美的选择。

域模式可能具有多个服务器, 其中所有配置都集中管理, 并且经常在生产环境中使用。

和有什么区别?

  • 每次都验证数据库连接, 如果连接无效, 它将在日志中写警告。
  • 配置"匹配时验证"可能会给数据库带来一些高负载, 因为它可能会创建很多请求。
  • 根据为"background-validation-millis"配置的频率定期验证连接。默认配置设置为零表示禁用。
  • 将"background-validation"设置为true将会创建更少的数据库连接, 并且如果连接失效, 它的副作用将无法立即检测到。

可用于标记文件部署的重要类型有哪些?

  • .dodeploy --指示部署
  • .deployed --表示文件已部署
  • .pending --部署仍在等待中
  • .undeployed-确认应用程序已取消部署
  • .failed --由于某种原因部署失败
  • .skipdeploy --指示JBoss忽略文件以进行自动部署

JBoss中可以部署哪些文件类型?

  • WAR -- Web应用程序档案
  • SAR --服务档案
  • JAR -- Java存档
  • EAR --企业应用程序档案

什么是Jetty?

Jetty是一个提供HTTP服务器、HTTP客户端和javax.servlet容器的开源项目

Jetty启动过程?

首先启动设置到Server的Handler

这些Handler将组成一个Handler链

Server会启动链上所有的Handler

启动Connector,打开端口,接受客户端请求。

Jetty和Tomcat的区别?

  • 架构
    Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用Handler来实现,扩展简单。Tomcat的架构是基于容器设计的,进行扩展是需要了解Tomcat的整体设计结构,不易扩展。
  • 性能
    Jetty和Tomcat性能方面差异不大 Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。Jetty默认采用NIO结束在处理I/O请求上更占优势,在处理静态资源时,性能较高
  • 处理能力
    Tomcat适合处理少数非常繁忙的链接,也就是说链接生命周期短的话,Tomcat的总体性能更高。Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。
  • 其它
    Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。Tomcat目前应用比较广泛,对JavaEE和Servlet的支持更加全面,很多特性会直接集成进来。
相关推荐
翻滚吧键盘14 分钟前
vue绑定一个返回对象的计算属性
前端·javascript·vue.js
重庆小透明23 分钟前
力扣刷题记录【1】146.LRU缓存
java·后端·学习·算法·leetcode·缓存
lang2015092829 分钟前
Reactor操作符的共享与复用
java
秃了也弱了。33 分钟前
Chrome谷歌浏览器插件ModHeader,修改请求头,开发神器
前端·chrome
TTc_39 分钟前
@Transactional事务注解的批量回滚机制
java·事务
乆夨(jiuze)1 小时前
记录H5内嵌到flutter App的一个问题,引发后面使用fastClick,引发后面input输入框单击无效问题。。。
前端·javascript·vue.js
忧郁的蛋~1 小时前
HTML表格导出为Excel文件的实现方案
前端·html·excel
小彭努力中1 小时前
141.在 Vue 3 中使用 OpenLayers Link 交互:把地图中心点 / 缩放级别 / 旋转角度实时写进 URL,并同步解析显示
前端·javascript·vue.js·交互
wei_shuo1 小时前
飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式
java·开发语言·飞算javaai
然我2 小时前
别再只用 base64!HTML5 的 Blob 才是二进制处理的王者,面试常考
前端·面试·html