Java面试题-Servlet+Tomcat

本文详细讲解了Java面试中关于Servlet和Tomcat的相关知识点。Servlet部分介绍了Servlet的结构,包括Servlet接口、ServletConfig接口、GenericServlet抽象类以及HttpServlet的使用。Tomcat部分则探讨了Tomcat的结构、类加载器流程、线程模型以及调优策略,如设置最大连接数、内存分配和线程池参数等。
摘要由CSDN通过智能技术生成

Java面试题

Servlet

1.Servlet 结构图

在这里插入图片描述
Servlet 和 ServletConfig 都是顶层接口,而 GenericServlet 实现了这两个顶层接口,然后 HttpServlet 继承了 GenericServlet 类.所以要实现一个 Servlet 直接就可以继承 HttpServlet

2.Servlet 接口

init 方法接收一个 ServletConfig 参数,由容器传入.ServletConfig 就是 Servlet 的配置,在 web.xml 中定义 Servlet 时通过 init-param 标签配置的参数由 ServletConfig 保存

public interface Servlet {
    
//负责初始化 Servlet 对象。容器一旦创建好 Servlet 对象后,就调用此方法来
初始化 Servlet 对象
public void init(ServletConfig config) throws ServletException;

 //负责处理客户的请求并返回响应。当容器接收到客户端要求访问特定的 servlet 
 //请求时,就会调用 Servlet 的 service 方法 
public void service(ServletRequest req, ServletResponse res) 
throws ServletException, IOException; 

//Destroy()方法负责释放 Servlet 对象占用的资源,当 servlet 对象结束生命
//周期时, servlet 容器调用此方法来销毁 servlet 对象. 

public void destroy(); 

//说明:Init(),service(),destroy() 这三个方法是 Servlet 生命周期中的最重要的三个方 法。 
//返回一个字符串,在该字符串中包含 servlet 的创建者,版本和版权等信息 
public String getServletInfo();

//GetServletConfig: 返回一个 ServletConfig 对象,该对象中包含了 
//Servlet 初始化参 数信息 
public ServletConfig getServletConfig(); }

3. ServletConfig 接口

ServletConfig 是 Servlet 级别,而 ServletContext 是全局的

public interface ServletConfig {
    
//用于获取 Servlet 名,web.xml 中定义的 servlet-name 
String getServletName(); 

//获取 Servlet 上下文对象(非常重要) 
ServletContext getServletContext(); 

//获取 init-param 中的配置参数 
String getInitParameter(String var1); 

//获取配置的所有 init-param 名字集合 
Enumeration<String> getInitParameterNames(); }

4.GenericServlet 抽象类

GenericServlet 是 Servlet 的默认实现,是与具体协议无关的

//抽象类 GenericServlet 实现了 Servlet 接口的同时,也实现了 
//ServletConfig 接口和 Serializable 这两个接口 
public abstract class Generic Servlet implementsServlet,ServletConfig,java.io.Serializable {
    

//私有变量,保存 init()传入的 ServletConfig 对象的引用 
private transient Servlet Config config;

//无参的构造方法 
public Generic Servlet(){
   } 
-----------------------------------
以下方法实现了 servlet 接口中的 5 个方法 
实现 Servlet 接口方法开始 
-----------------------------------
/* 实 现 接 口 Servlet 中 的 带 参 数 的 init(ServletConfig Config) 
方 法 , 将 传 递 的 ServletConfig 对象的引用保存到私有成员变量中, 使得 
GenericServlet 对象和一个 ServletConfig 对象关联. 同时它也调用了自身的
不带参数的 init()方法
**/

public void init(ServletConfig config)throws ServletException{
   
this.config=config; 
this.init(); //调用了无参的 init()方法 
}

//无参的 init()方法 
publicvoid init()throwsServletException{
   
} 

//空实现了 destroy 方法 
publicvoid destroy(){
   } 

//实现了接口中的 getServletConfig 方法,返回 ServletConfig 对象 
public ServletConfig getServletConfig() {
    
return config; 
} 

//该方法实现接口<Servlet>中的 ServletInfo,默认返回空字符串
 publicStringgetServletInfo(){
    return""; }
//唯一没有实现的抽象方法 service(),仅仅在此声明。交由子类去实现具体的应用 
//在后来的 HttpServlet 抽象类中,针对当前基于 Http 协议的 Web 开发,HttpServlet 抽象类具体实现了这个方法 
//若有其他的协议,直接继承本类后实现相关协议即可,具有很强的扩展性
 public abstract void service(ServletRequestreq,ServletResponseres) throws ServletException, IOException;
 
  -----------------------------------
  实现 Servlet 接口方法结束 
  -----------------------------------
  
--
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值