Java-ServletRequestWrapper
/**
*
* Provides a convenient implementation of the ServletRequest interface that
* can be subclassed by developers wishing to adapt the request to a Servlet.
* This class implements the Wrapper or Decorator pattern. Methods default to
* calling through to the wrapped request object.
* @since v 2.3
*
*
*
* @see javax.servlet.ServletRequest
*
*/
//实现了ServletRequest接口
public class ServletRequestWrapper implements ServletRequest {
private ServletRequest request;
/**
* Creates a ServletRequest adaptor wrapping the given request object.
* @throws java.lang.IllegalArgumentException if the request is null
*/
//构造函数,ServletRequest适配器
public ServletRequestWrapper(ServletRequest request) {
if (request == null) {
throw new IllegalArgumentException("Request cannot be null");
}
this.request = request;
}
/**
* Return the wrapped request object.
*/
//获得Request
public ServletRequest getRequest() {
return this.request;
}
/**
* Sets the request object being wrapped.
* @throws java.lang.IllegalArgumentException if the request is null.
*/
//设置ServletRequest
public void setRequest(ServletRequest request) {
if (request == null) {
throw new IllegalArgumentException("Request cannot be null");
}
this.request = request;
}
/**
* The default behavior of this method is to call getAttribute(String name)
* on the wrapped request object.
*/
//获取ServletRequest的name属性
public Object getAttribute(String name) {
return this.request.getAttribute(name);
}
/**
* The default behavior of this method is to return getAttributeNames()
* on the wrapped request object.
*/
//获得所有属性name的枚举
public Enumeration getAttributeNames() {
return this.request.getAttributeNames();
}
/**
* The default behavior of this method is to return getCharacterEncoding()
* on the wrapped request object.
*/
//获得字符类型
public String getCharacterEncoding() {
return this.request.getCharacterEncoding();
}
/**
* The default behavior of this method is to set the character encoding
* on the wrapped request object.
*/
//设置字符类型
public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException {
this.request.setCharacterEncoding(enc);
}
/**
* The default behavior of this method is to return getContentLength()
* on the wrapped request object.
*/
//获得Request请求body的二进制数据的长度
public int getContentLength() {
return this.request.getContentLength();
}
/**
* The default behavior of this method is to return getContentType()
* on the wrapped request object.
*/
//获得Request请求body的文件类型
public String getContentType() {
return this.request.getContentType();
}
/**
* The default behavior of this method is to return getInputStream()
* on the wrapped request object.
*/
//获得InputStream
public ServletInputStream getInputStream() throws IOException {
return this.request.getInputStream();
}
/**
* The default behavior of this method is to return getParameter(String name)
* on the wrapped request object.
*/
//获得参数name
public String getParameter(String name) {
return this.request.getParameter(name);
}
/**
* The default behavior of this method is to return getParameterMap()
* on the wrapped request object.
*/
public Map getParameterMap() {
return this.request.getParameterMap();
}
/**
* The default behavior of this method is to return getParameterNames()
* on the wrapped request object.
*/
//获得属性name的枚举
public Enumeration getParameterNames() {
return this.request.getParameterNames();
}
/**
* The default behavior of this method is to return getParameterValues(String name)
* on the wrapped request object.
*/
//获得属性name的所有值
public String[] getParameterValues(String name) {
return this.request.getParameterValues(name);
}
/**
* The default behavior of this method is to return getProtocol()
* on the wrapped request object.
*/
//获取协议
public String getProtocol() {
return this.request.getProtocol();
}
/**
* The default behavior of this method is to return getScheme()
* on the wrapped request object.
*/
//返回协议名称 http、https、ftp
public String getScheme() {
return this.request.getScheme();
}
/**
* The default behavior of this method is to return getServerName()
* on the wrapped request object.
*/
//获得请求发送的服务器名称
public String getServerName() {
return this.request.getServerName();
}
/**
* The default behavior of this method is to return getServerPort()
* on the wrapped request object.
*/
//获得请求发送的端口
public int getServerPort() {
return this.request.getServerPort();
}
/**
* The default behavior of this method is to return getReader()
* on the wrapped request object.
*/
//检索请求body数据作为字符数据使用bufferedReader
public BufferedReader getReader() throws IOException {
return this.request.getReader();
}
/**
* The default behavior of this method is to return getRemoteAddr()
* on the wrapped request object.
*/
//获得远程主机IP
public String getRemoteAddr() {
return this.request.getRemoteAddr();
}
/**
* The default behavior of this method is to return getRemoteHost()
* on the wrapped request object.
*/
//获得发送请求的主机名或最后一次代理的主机名
public String getRemoteHost() {
return this.request.getRemoteHost();
}
/**
* The default behavior of this method is to return setAttribute(String name, Object o)
* on the wrapped request object.
*/
//在请求中设置一个属性
public void setAttribute(String name, Object o) {
this.request.setAttribute(name, o);
}
/**
* The default behavior of this method is to call removeAttribute(String name)
* on the wrapped request object.
*/
//删除请求的属性name
public void removeAttribute(String name) {
this.request.removeAttribute(name);
}
/**
* The default behavior of this method is to return getLocale()
* on the wrapped request object.
*/
public Locale getLocale() {
return this.request.getLocale();
}
/**
* The default behavior of this method is to return getLocales()
* on the wrapped request object.
*/
public Enumeration getLocales() {
return this.request.getLocales();
}
/**
* The default behavior of this method is to return isSecure()
* on the wrapped request object.
*/
//判断是否使用的安全协议https
public boolean isSecure() {
return this.request.isSecure();
}
/**
* The default behavior of this method is to return getRequestDispatcher(String path)
* on the wrapped request object.
*/
//获得path的分发器
public RequestDispatcher getRequestDispatcher(String path) {
return this.request.getRequestDispatcher(path);
}
/**
* The default behavior of this method is to return getRealPath(String path)
* on the wrapped request object.
*/
public String getRealPath(String path) {
return this.request.getRealPath(path);
}
/**
* The default behavior of this method is to return
* getRemotePort() on the wrapped request object.
*
* @since 2.4
*/
//端口
public int getRemotePort(){
return this.request.getRemotePort();
}
/**
* The default behavior of this method is to return
* getLocalName() on the wrapped request object.
*
* @since 2.4
*/
//获得Request的服务器名
public String getLocalName(){
return this.request.getLocalName();
}
/**
* The default behavior of this method is to return
* getLocalAddr() on the wrapped request object.
*
* @since 2.4
*/
//获得Request的服务器IP地址
public String getLocalAddr(){
return this.request.getLocalAddr();
}
/**
* The default behavior of this method is to return
* getLocalPort() on the wrapped request object.
*
* @since 2.4
*/
//端口
public int getLocalPort(){
return this.request.getLocalPort();
}
}
Java-ServletRequestWrapper的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- java.lang.ClassCastException: $Proxy0 cannot be cast to javax.servlet.ServletRequestWrapper
我是在myeclipse 8.5使用代理的时候遇到这个问题的.因为我是跟着视频敲的,所以按道理代码是不会有问题..最后经过我百折不挠的折腾,我发现问题的根源 是 myeclipse自带的tomcat. ...
- java web学习总结(十八) -------------------过滤器的高级使用
在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目 ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- [javaweb]Java过滤器与包装设计模式的实用案例.
在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可以使用Decorator(装饰器)模式对request.response对象进行包装,再把包装对象传给目 ...
- 【转】学习JAVA的步骤
好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...
- java web servlet
一.什么是Servlet Servlet是一种小型的Java程序,它扩展了Web服务器的功能.作为一种服务器端的应用,他是运行在Servlet容器当中,例如Tomcat就是一种流行的Servlet容器 ...
- java专业规划(转载)
1. Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础 ...
- 【转】安卓必备Java基础
[转]http://www.zhihu.com/question/19937886(里面提到的知识点的链接) 1. Java 语言基础 谈到Java 语言基础学习的书籍,大家肯定会推荐Bruce Ec ...
- java学习书籍推荐
1. Java 语言基础 谈到Java 语言基础学习的书籍,大家肯定会推荐Bruce Eckel 的<Thinking in Java >.它是一本写的相当深刻的技术书籍,Java 语言基 ...
随机推荐
- Android简易实战教程--第四十话《Spinner》
对于Spinner控件的介绍和使用方法,可以先看之前写过的一篇博客:Spinner控件详解 本篇就基于这个知识点完成一个简单的小案例: 根据介绍,先写一个布局: <?xml version=&q ...
- EBS开发性能优化之查找需要优化的程序
1.登陆数据库LINUX环境 使用 top 命令查看进程状况 [oratest@ebsdb~]$top top - 15:58:59 up 8 days, 22:04, 1 user, load ...
- Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...
- Spring配置优化_构造器注入+自动装配
2014-05-16 09:01:08上课内容: 依赖注入的第二种注入方式:构造器注入 创建带参数的构造方法,参数类型为注入类的类型 项目要先添加Spring支持: package com; publ ...
- Servlet之HTTP状态码
HTTP 请求和 HTTP 响应消息的格式是类似的,结构如下: 初始状态行 + 回车换行符(回车+换行) 零个或多个标题行+回车换行符 一个空白行,即回车换行符 一个可选的消息主体,比如文件.查询数据 ...
- Oracle使用游标删除所有用户数据表中的所有记录脚本
应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自 ...
- android api 镜像站
项目地址:https://github.com/msdx/androiddoc 访问短址: http://androiddoc.qiniudn.com/
- (七十四)iOS8之前使socket可以后台运行的方法
对于使用socket通信的应用程序,常常希望App位于后台时仍然可以进行网络通信,这在iOS8和以后的版本是被默认允许的,socket可以直接在后台运行,而对于iOS8之前的版本就不行,需要进行两步设 ...
- java开源项目之IQQ学习记录之单例模式与log4j日志记录
作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/18992741 打开IQQ项目,打开包iqq.app中的 ...
- Linux多线程实践(9) --简单线程池的设计与实现
线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收.所以 ...