Request、Servlet及其子接口

最近看tomcat源码,这类接口多的有点眩,整理出来看一下。(基于tomcat4)

javax.servlet.ServletRequset接口,和org.apache.catalina.Request接口,有什么联系?

其实就是对Request不同层面上的定义。

一、首先看下javax.servlet.Servlet接口


package javax.servlet;
import java.io.IOException;
public abstract interface Servlet {
public abstract void init(ServletConfig paramServletConfig)
throws ServletException;
public abstract ServletConfig getServletConfig();
public abstract void service(ServletRequest paramServletRequest,
ServletResponse paramServletResponse) throws ServletException,
IOException;
public abstract String getServletInfo();
public abstract void destroy();
}

这些方法应该非常熟悉了。

二、javax.servlet.http.HttpServlet抽象类


package javax.servlet.http;

public abstract class HttpServlet extends GenericServlet implements Serializable {
...
}

丰富了servlet接口,对应http协议,添加了doGet, doPut, doPost等方法。

三、javax.servlet.ServletRequest接口


package javax.servlet;

public abstract interface ServletRequest {
public abstract Object getAttribute(String paramString);

public abstract Enumeration getAttributeNames();

public abstract String getCharacterEncoding();

public abstract void setCharacterEncoding(String paramString)
throws UnsupportedEncodingException;

public abstract int getContentLength();

public abstract String getContentType();

public abstract ServletInputStream getInputStream() throws IOException;

public abstract String getParameter(String paramString);

public abstract Enumeration getParameterNames();

public abstract String[] getParameterValues(String paramString);

public abstract Map getParameterMap();

public abstract String getProtocol();

public abstract String getScheme();

public abstract String getServerName();

public abstract int getServerPort();

public abstract BufferedReader getReader() throws IOException;

public abstract String getRemoteAddr();

public abstract String getRemoteHost();

public abstract void setAttribute(String paramString, Object paramObject);

public abstract void removeAttribute(String paramString);

public abstract Locale getLocale();

public abstract Enumeration getLocales();

public abstract boolean isSecure();

public abstract RequestDispatcher getRequestDispatcher(String paramString);

/** @deprecated */
public abstract String getRealPath(String paramString);
}

四、javax.servlet.http.HttpServletRequest

public abstract interface HttpServletRequest extends ServletRequest {...}

添加了http协议部分,比如session,cookie等。

五、org.apache.catalina.Requst(tomcat4,后面的版本有变化)


package org.apache.catalina;

public interface Request {

public String getAuthorization();

public void setAuthorization(String authorization);

public Connector getConnector();

public void setConnector(Connector connector);

public Context getContext();

public void setContext(Context context);

public String getInfo();

public ServletRequest getRequest();

public Response getResponse();

public void setResponse(Response response);

public Socket getSocket();

public void setSocket(Socket socket);

public InputStream getStream();

public void setStream(InputStream stream);

public Wrapper getWrapper();

public void setWrapper(Wrapper wrapper);

public ServletInputStream createInputStream() throws IOException;

public void finishRequest() throws IOException;

public Object getNote(String name);

public Iterator getNoteNames();

public void recycle();

public void removeNote(String name);

public void setContentLength(int length);

public void setContentType(String type);

public void setNote(String name, Object value);

public void setProtocol(String protocol);

public void setRemoteAddr(String remote);

public void setScheme(String scheme);

public void setSecure(boolean secure);

public void setServerName(String name);

public void setServerPort(int port);
}

六、org.apache.catalina.HttpRequest

public interface HttpRequest extends Request {...}

增加了对http协议头处理部分,比如url,参数,cookies等。

七、org.apache.catalina.connector.HttpRequestBase


虽然已经弃用了,但可以作为一个参考,实现了jdk和catalina定义的Request

public class HttpRequestBase
extends RequestBase
implements HttpRequest, HttpServletRequest {...}

小结


tomcat中,对于jdk中的servlet和ServletRequest肯定要实现的。而tomcat作为容器应用,会有很多自身的需求,所以自己定义了一套接口,跟jdk中不同层面。并且提供两套接口的类,让web开发者使用。

Request、Servlet及其子接口,布布扣,bubuko.com

时间: 2024-11-08 22:44:51

Request、Servlet及其子接口的相关文章

Servlet总结——servlet的主要接口、类

Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet接口,该接口定义了5个方法.如下: 1.init(),初始化servlet对象,完成一些初始化工作. 它是由servlet容器控制的,该方法只能被调用一次,初始化过程如下: 2.service(),接受客户端请求对象,执行业务操作,利用响应对象响应客户端请求. 3.destroy(),当容器监测到一

Servlet相关类/接口说明

可通过该网址查看英文API       https://docs.oracle.com/javaee/6/api/ Java Servlet API的部分类和接口的详细说明.本API包含了两个软件包,十二个接口和九个类. 软件包:javax.servlet  所包含的接口:RequestDispatcher:Servlet:ServletConfig:ServletContext:ServletRequest:ServletResponse:SingleThreadModel.  所包含的类:G

H3C子接口配置要点及实例说明

 类型一:以太网子接口配置要点(单臂路由) 第一步:在路由器对端的交换机上配置好vlan信息(如vlan10/vlan20) 第二步:将交换机上与路由器直接相连的以太口配置成trunk口并同意全部vlan信息通过. 第三步:进入路由器以太口的子接口如ethernet0/0/0.10和ethernet0/0/0.20 第四步:配置好该子接口的ip地址,一般配置成相应vlan网关ip地址 第五步:为该子接口封装802.1q协议并指明该子接口相应vlan的vid 比如:[Huawei-Ethern

RHEL6子接口及双网卡绑定配置

RHEL6子接口及双网卡绑定配置 1.子接口配置 Linux就是一台路由器,只要开启路由转发功能.CISCO中,我们知道子接口的配置为fa0/0.1,那么在Linux中,子接口如何配置呢? 虚拟主机可以配置多大254个子接口,下面且看子接口的配置: 创建子接口配置文件 [[email protected] ~]# cd /etc/sysconfig/net netconsole       network          networking/      network-scripts/ [[

java集合_collection子接口 list的特有方法,ArrayList类体现

/* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. |--LinkedList:底层使用的链表数据结构.特点:增删速度很快,查询稍慢.线程不同步. |--Vector:底层是数组数据结构.线程同步.被ArrayList替代了.因为效率低. |--Set:元素是无序,元素不可以重复.. List: 特有方法.凡是可以操作角标的方法都是该体系特有的方法

8.Linux多网卡绑定、子接口

8.Linux多网卡绑定.子接口 ·mii-tool eth0,查看网卡速度.状态.物理连接, ·ethtool eth0,查看网卡物理特性,-i 查看网卡驱动信息,-S 查看网卡状态, ·IP别名:linux支持在一个物理网卡上配置多个ip地址,用来实现类似子接口之类的功能, ·centos/RHEL系统默认会启用NetworkManager对网卡管理,以方便用户使用(网络小图标), ·如果使用子接口需要禁用NetworkManager,service NetworkManager stop,

基于三层交换机和基于路由子接口的vlan间路由

1:通过三层交换机实现vlan间的通信:为三层交换机创建vlan,设置交换机的两个SVI,并配置IP地址. (在二层交换机上只能配置一个SVI端口,用来实现交换机交换机远程管理,在三层交换机上可以配置多个SVI端口) 配置sw: Switch(config)#inter fa0/1Switch(config-if)#switchport  mode  access Switch(config-if)#no shutSwitch(config)#vlan 2Switch(config-vlan)#

Juniper-SSG系列之子接口(单臂路由)配置终结篇

子接口到底是什么东东,咋回事?我这里就过多的解释,如果不懂单臂路由,请自行"补功课",这样才会更容易理解SSG系列当中配置细节和问题. 说下需求,在常见的企业组网当中,不少有一些"不专业"的网工和网管做一些简单粗暴的组网,比如交换机全部当纯二层傻瓜使用,所有的网关均在出口设备上,在以往的接触当中和客户的改网项目经验中,其中发现不少有这类情况,所以在这里,完完全全的需要本着一个专业的态度聊SSG的部署. 好了,不多废话,直接上菜. 如下图: 子网需求: 分多个业务网段

帧中继子接口点对点、点对多和路由协议详解-子接口点到点

上一篇我们介绍了帧中继下物理点对点连接的EIGRP配置,本篇我们开始介绍帧中继子接口点对点的配置. 背景 当有多个分部的局域网通过帧中继和总部进行连接时,为了减少对总部路由器接口的占用和对应的线路费用,通常采用多个分部的域网用不同虚电路连接到总部局域网的方法来实现总部和分部的互联.如下图1,假如R1是总部的路由器,为了实现和R2.R3互联,我们需要在R1的S0口划分两个子接口S0.1和S0.2.S0.1对应的DLCI地址为20,与R2的S0口建立了虚电路:S0.2对应的DLCI地址为21,与R3