Tomcat+Servlet面试题都在这里(修订版)(一)

简介: 下面是我整理下来的Servlet知识点:

1.jpg图上的知识点都可以在我其他的文章内找到相应内容。


Tomcat常见面试题


Tomcat的缺省端口是多少,怎么修改

Tomcat的缺省端口是多少,怎么修改

  1. 找到Tomcat目录下的conf文件夹
  2. 进入conf文件夹里面找到server.xml文件
  3. 打开server.xml文件
  4. 在server.xml文件里面找到下列信息
<Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

1.把port=”8080″改成port=”8888″,并且保存

2.启动Tomcat,并且在IE浏览器里面的地址栏输入http://127.0.0.1:8888/

到tomcat主目录下的conf/server.xml文件中修改,把8080端口改成是8088或者是其他的 2.png


Tomcat 有哪几种Connector 运行模式(优化)?


tomcat 有哪几种Connector 运行模式(优化)?

  1. bio(blocking I/O)
  2. nio(non-blocking I/O)
  3. apr(Apache Portable Runtime/Apache可移植运行库)

相关解释:

  • bio: 传统的Java I/O操作,同步且阻塞IO。
  • nio: JDK1.4开始支持,同步阻塞或同步非阻塞IO
  • aio(nio.2): JDK7开始支持,异步非阻塞IO
  • apr: Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能

下面是配置Tomcat运行模式改成是NIO模式,并配置连接池相关参数来进行优化:

<!--
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- protocol 启用 nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->
    <!-- minProcessors最小空闲连接线程数-->
    <!-- maxProcessors最大连接线程数-->
    <!-- acceptCount允许的最大连接数,应大于等于maxProcessors-->
    <!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析ip对应域名或主机名-->
    <Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" 
        connectionTimeout="20000"
        redirectPort="8443
        maxThreads=“500” 
        minSpareThreads=“100” 
        maxSpareThreads=“200”
        acceptCount="200"
        enableLookups="false"       
    />

apr模式启动起来是比较复杂的,详情可参考:http://blog.csdn.net/wanglei_storage/article/details/50225779

对于bio,nio,nio.2的理解可参考:http://blog.csdn.net/itismelzp/article/details/50886009


Tomcat有几种部署方式


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


部署方式第二点:


  • 在其他盘符下创建一个web站点目录,并创建WEB-INF目录和一个html文件。

3.png

  • 找到Tomcat目录下/conf/server.xml文件

4.png

  • 在server.xml中的节点下添加如下代码。path表示的是访问时输入的web项目名,docBase表示的是站点目录的绝对路径
  1.        <Context path="/web1" docBase="D:\web1"/>

5.jpg

  • 访问配置好的web站点

6.png


部署方式第三点:

  • 进入到conf\Catalina\localhost文件下,创建一个xml文件,该文件的名字就是站点的名字。

  • 7.png
  • xml文件的代码如下,docBase是你web站点的绝对路径

<?xml version="1.0" encoding="UTF-8"?> 
<Context 
    docBase="D:\web1" 
    reloadable="true"> 
</Context>
  • 访问web站点下的html资源

8.jpg

Servlet面试题


Servlet生命周期


Servlet生命周期?

9.jpg

  • 第一次访问Servlet,我们发现init()和service()都被调用了

10.png

  • 第二次访问Servlet,service()被调用了

11.png

  • 第三次访问Servlet,还是service()被调用了

11.png

  • 当我们关闭Tomcat服务器的时候,destroy()被调用了!

12.png

Servlet生命周期可分为5个步骤

  1. 加载Servlet。当Tomcat第一次访问Servlet的时候,Tomcat会负责创建Servlet的实例
  2. 初始化。当Servlet被实例化后,Tomcat会调用init()方法初始化这个对象
  3. 处理服务。当浏览器访问Servlet的时候,Servlet 会调用service()方法处理请求
  4. 销毁。当Tomcat关闭时或者检测到Servlet要从Tomcat删除的时候会自动调用destroy()方法,让该实例释放掉所占的资源。一个Servlet如果长时间不被使用的话,也会被Tomcat自动销毁
  5. 卸载。当Servlet调用完destroy()方法后,等待垃圾回收。如果有需要再次使用这个Servlet,会重新调用init()方法进行初始化操作

  • 简单总结:只要访问Servlet,service()就会被调用。init()只有第一次访问Servlet的时候才会被调用。destroy()只有在Tomcat关闭的时候才会被调用。
目录
相关文章
|
9月前
|
前端开发 应用服务中间件 C++
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(二)
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。
使用Servlet实现表白墙网站(前后端互联)小项目,Mac的M1(没有setting)在哪里找到Setting页面,下载smart tomcat及smart tomcat的配置。(二)
|
13天前
|
Java
servlet生命周期面试题
servlet生命周期面试题
|
28天前
|
前端开发 应用服务中间件
|
2月前
|
JSON Java 应用服务中间件
|
28天前
|
XML 数据格式
|
28天前
|
XML Java 应用服务中间件
|
28天前
|
Java 应用服务中间件 Maven
|
28天前
|
前端开发 Java 应用服务中间件
|
2月前
|
XML 前端开发 Java
Tomcat和Servlet
Tomcat和Servlet
16 0
|
2月前
|
前端开发 Java 应用服务中间件
HTTP&Tomcat&Servlet
HTTP&Tomcat&Servlet
66 0