2021SC@SDUSC
这次博客我还是主要分析environment文件夹(下)。
这个文件夹设计了Request,Response,Session等进行请求,响应和会话控制一些可能用到的方法。
分析core文件夹(三)- BackgroundRequest.java
- 1.总结:
- 2.属性:
- 3.方法:
- 4.其他说明:
- 构造函数:
- 静态嵌套类
这个文件通过命令行的使用来进行特定servlet请求模拟。
继承自AbstractRequest
2.属性://属于类的变量且只能赋值一次,声明一个空枚举类型 private static final EmptyEnumeration SHARED_EMPTY_ENUMERATION = new EmptyEnumeration(); //环境变量 private Environment env; //上下文路径 private String contextPath; //servlet路径 private String servletPath; //路径信息 private String pathInfo; //全局属性 private Map globalAttributes; //属性 private Map attributes; //变量 private Map parameters; //请求头 private Map headers; //字符串编码方式 private String characterEncoding;3.方法:
这个类包含了很多方法,但是大部分方法都没有被实现,只有简单的名字、参数、返回值。
- public Object get(String name)
- 返回命名参数的值作为Object,如果指定名称的参数不存在则返回null。
- public String getContextPath()
- 得到上下文信息。
- public String getServletPath()
- 得到servlet路径。
- public String getPathInfo()
- 得到路径信息。
- public String getRequestURI()
- 返回HTTP请求第一行中从协议名称到查询字符串的部分请求的URL。
- public String getSitemapURI()
- 返回由站点地图解释的请求资源的URI。
- public String getSitemapURIPrefix()
- 返回站点地图所挂载的请求资源的URI前缀。
- public String getSitemapPath()
- 返回由站点地图解释的请求资源的站点地图的路径。
- public String getQueryString()
- 返回路径后的请求URL中包含的查询字符串。
- public String getPathTranslated()
- 返回servlet名称之后、查询字符串之前的任何额外路径信息,并将其转换为真实路径。
- 与 Attribute 有关
- public Object getAttribute(String name)
- 获取请求属性的Map视图的实用程序方法。
- public Enumeration getAttributeNames()
- 返回一个枚举类型,其中包含此请求全局可用的属性的名称。
- public void setAttribute(String name, Object value)
- 在GLOBAL_SCOPE中存储此请求中的属性。
- public void removeAttribute(String name)
- 从此请求全局移除属性。
- public Object getAttribute(String name)
- 与 Local Attribute 有关
- public Object getLocalAttribute(String name)
- 从LOCAL_SCOPE返回命名属性的值作为一个对象,如果给定名称的属性不存在,则返回null。
- public Enumeration getLocalAttributeNames()
- 返回一个枚举类型,其中包含此本地请求可用的属性的名称。
- public void setLocalAttribute(String name, Object value)
- 在本地存储此请求中的属性。
- public void removeLocalAttribute(String name)
- 在GLOBAL_SCOPE中从这个请求中删除属性。
- public Object getLocalAttribute(String name)
- 与 Parameter 有关
- public String getParameter(String name)
- 以字符串的形式返回请求参数的值。
- public Enumeration getParameterNames()
- 返回String对象的枚举,其中包含此请求中包含的参数的名称。
- public String[] getParameterValues(String name)
- 返回一个String对象数组,其中包含给定请求参数的所有值,如果参数不存在则为空。
- public String getParameter(String name)
- 与 Header 有关
- public String getHeader(String name)
- 以字符串的形式返回指定请求头的值。
- public int getIntHeader(String name)
- 返回指定请求头的值。
- public long getDateHeader(String name)
- 返回指定请求头的值。
- public Enumeration getHeaders(String name)
- 返回指定请求头的所有值作为String对象的枚举。
- public Enumeration getHeaderNames()
- 返回此请求包含的所有头名称的枚举。
- public String getHeader(String name)
- public String getCharacterEncoding()
- 返回请求体中使用的字符编码的名称。
- public int getContentLength()
- 返回请求体的长度,以字节为单位。
- public String getContentType()
- 返回请求体的MIME类型。
- public String getProtocol()
- 返回请求使用的协议的名称和版本,格式为protocol/majorVersion。
- public String getScheme()
- 返回用于发出此请求的方案的名称,例如http、https或ftp。
- public String getServerName()
- 返回接收请求的服务器的主机名。
- public int getServerPort()
- 返回接收此请求的端口号。
- public String getRemoteAddr()
- 返回发送请求的客户端的Internet协议(IP)地址。
- public String getRemoteHost()
- 返回发送请求的客户机的完全限定名称,如果无法确定该名称,则返回客户机的IP地址。
- public String getMethod()
- 返回发出此请求的HTTP方法的名称,例如GET、POST或PUT。
- public String getRemoteUser()
- 如果用户已通过身份验证,则返回发出此请求的用户的登录;如果用户尚未通过身份验证,则返回null。
- 与 cookie 有关
- public javax.servlet.http.cookie[] getcookies()
- 返回一个数组,其中包含客户端随请求发送的所有cookie对象。
- public Map getcookieMap()
- 返回客户端与此请求一起发送的cookie对象的映射,按名称索引。
- public javax.servlet.http.cookie[] getcookies()
- 与 Session 有关
- public HttpSession getSession()
- 返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个会话。
- public HttpSession getSession(boolean create)
- 返回与此请求关联的当前HttpSession,如果没有当前会话且create为true,则返回一个新会话。
- public String getRequestedSessionId()
- 返回客户端指定的会话ID。
- public boolean isRequestedSessionIdValid()
- 检查请求的会话ID是否仍然有效。
- public boolean isRequestedSessionIdFromcookie()
- 检查请求的会话ID是否作为cookie传入。
- public boolean isRequestedSessionIdFromURL()
- 检查请求的会话ID是否作为请求URL的一部分传入。
- public HttpSession getSession()
- public Locale getLocale()
- 返回客户端根据accept - language头接受内容的首选区域设置。
- public Enumeration getLocales()
- 返回Locale对象的Enumeration,根据Accept-Language头指示客户端可接受的区域设置(从首选区域设置开始,按递减顺序)。
- public String getAuthType()
- 返回用于保护servlet的身份验证方案的名称,例如,“BASIC”或“SSL”,如果servlet没有受到保护,则返回null。
- public boolean isSecure()
- 返回一个布尔值,指示此请求是否使用安全通道(如HTTPS)发出。
- public boolean isUserInRole(String role)
- 检查当前登录的用户是否在指定的角色中。
- public java.security.Principal getUserPrincipal()
- 如果用户已通过身份验证,则返回发出此请求的用户的登录;如果用户尚未通过身份验证,则返回null。
- public void setCharacterEncoding(java.lang.String env)
- 覆盖参数的字符编码。
- public StringBuffer getRequestURL()
- 返回请求的URL地址。
- public ServletInputStream getInputStream()
- 使用InputStream检索请求体作为二进制数据。
- public Object searchAttribute(String name)
- 返回以Object形式搜索两个作用域的命名属性的值,如果给定名称的属性不存在,则返回null。
在这个类中一共有四个构造函数
public BackgroundRequest(Environment env,
String contextPath,
String servletPath,
String pathInfo) {
this(env, contextPath, servletPath, pathInfo, null, null, null);
}
public BackgroundRequest(Environment env,
String contextPath,
String servletPath,
String pathInfo,
Map attributes) {
this(env, contextPath, servletPath, pathInfo, attributes, null, null);
}
public BackgroundRequest(Environment env,
String contextPath,
String servletPath,
String pathInfo,
Map attributes,
Map parameters) {
this(env, contextPath, servletPath, pathInfo, attributes, parameters, null);
}
public BackgroundRequest(Environment env,
String contextPath,
String servletPath,
String pathInfo,
Map attributes,
Map parameters,
Map headers) {
this.env = env;
this.contextPath = contextPath;
this.servletPath = servletPath;
this.pathInfo = pathInfo;
this.globalAttributes = (attributes == null ? new HashMap() : attributes);
this.attributes = new HashMap();
this.parameters = parameters;
this.headers = headers;
}
对于BackgroundRequest来说,环境,上下文路径,servlet路径和路径信息是不可以缺少的;如果全局属性为空,就new一个HashMap否则将传入的参数赋给
静态嵌套类private static final class EmptyEnumeration implements Enumeration {
public EmptyEnumeration() {
// nothing to do};
}
public boolean hasMoreElements() {
return false;
}
public Object nextElement() {
return null;
}
}
在该java文件中定义了一个静态嵌套类,用于判断枚举类型内是否还有元素。



