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及其子接口的更多相关文章
- SERVLET类常用接口及方法
SERVLET类常用接口及方法 2011-09-09 16:14:43 [size=xx-small]SERVLET类常用接口及方法2007年04月05日 星期四 04:46 P.M.基本类和接 ...
- javaWeb学习总结(3)- Servlet总结(servlet的主要接口、类)
Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet ...
- Servlet(6)—HttpServletRequest接口和HttpServletResponse接口
HttpServletRequest接口和HttpServletResponse接口是继承ServletRequest和ServletResponse接口,是他们的子接口,但是我们在程序中进程看到Se ...
- JavaWeb学习——Servlet相关的接口和类
JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...
- java集合_collection子接口 list的特有方法,ArrayList类体现
/* Collection |--List:元素是有序的,元素可以重复.因为该集合体系有索引. |--ArrayList:底层的数据结构使用的是数组结构.特点:查询速度很快.但是增删稍慢.线程不同步. ...
- Collection子接口(List/Set/Queue/SortedSet)
Collection基本的子接口: List:能够存放反复内容 Set:不能存放反复内容,全部反复的内容靠hashCode()和equals()两个方法区分 Queue:队列接口 SortedSet: ...
- 基于三层交换机和基于路由子接口的vlan间路由
1:通过三层交换机实现vlan间的通信:为三层交换机创建vlan,设置交换机的两个SVI,并配置IP地址. (在二层交换机上只能配置一个SVI端口,用来实现交换机交换机远程管理,在三层交换机上可以配置 ...
- 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)
16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...
- 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口
[源码下载] 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口 作者 ...
随机推荐
- Object-relational mapping
https://en.wikipedia.org/wiki/Object-relational_mapping Object-relational mapping (ORM, O/RM, and O/ ...
- php的异步处理
在PHP Web程序中,发送手机短信.电子邮件.转换视频格式.记录日志.数据挖掘采集等,都是比较耗时的操作. 为了增强用户体验,需要将这些操作转为异步执行 PHP Web程序中的短耗时异步处理 前 ...
- 数据库留言板例题:session和cookie区别
session和cookie区别: <?php session_start(); //session_start();必须写在所有的php代码前边 ?> <!DOCTYPE html ...
- pro8
1.本次课学到的知识点 函数程序设计 结构化程序设计思想 程序解析 局部变量和全局变量 2.实验过程中遇到的问题及解决方法 实验过程中会遇到自定义函数的逻辑错误 与缺少定义变量 从主函数开始理清函数关 ...
- BLE Device Monitor的使用
1 综述 BLE Device Monitor是一个用来显示任意蓝牙低功耗设备服务(services).特征(characteristics).属性(attributes)的windows程序.除了测 ...
- Java科普之加密算法
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 加密比较复杂,但今天公司有需求,就稍微再研究一下,方式只有两种,对称加密和非对称加密.对称加密是指加 ...
- 在VC6.0中编译头文件时产生moc文件
1.在FileView视图中 右键点击需要产生moc文件的头文件(就是类中包含Q_OBJECT宏,如果没有这个宏就不需要产生moc文件) 2.在右键菜单中选择Setting... 3.选择Custom ...
- Ajax返回中文乱码问题(未解决)
(未解决) 暂时使用办法:改用返回Map<String,String>形式的返回值,在ajax中获取json形式的数据.
- 添加事件(jquery)
对盒子内部的盒子添加跟本身盒子相同的事件的时候,需要小心谨慎一点. 诸如: 从表象上看似乎没有什么太大问题,但是却存在一个致命的问题,就是每次点击box的时候,都会给test添加一个点击事件,而添加的 ...
- yii2.0框架中session与cookie的用法
我们在开发项目中南面使用到session给和cookie,那么在yii中有他自己的规则 如下案例: session使用 function actionS1(){ echo $t ...