servletContext(上下文对象)为Serlvet中最大的接口
获得servletContext实例的方法: servletContext getServletContext();
返回包含资源目录中子目录和文件的路径名称的一个Set集合:Set getResourcePaths(String path);
获取文件在服务器上的真实路径(绝对路径):String getRealPath(String path);
获取某个资源文件映射的URL对象:URL getRealPath(String path);
获取某个资源文件映射的InputStream的输入流对象: InputStream getResourceAsStream(String path);
向servletContext中存取、删、除数据
public void setAttribute(String name,Object object);
public Object getAttribute(String name);
public void removeAttribute(String name);
servletConfig是servlet的配置对象
获得Servlet在web.xml中配置的name的值:public String getServletName();
获得Servlet的初始化参数:public String getInitParamenter(String name);
获得所有Servlet的初始化参数的名称:public Enumeration getInitParameterNames();
request与response(请求与响应)
设置字符编码:setCharacterEncoding(String 编码类型);
响应编码:response.setContetType("text/html;charset = 编码类型");
输出流:(字符) response.getWriter();
(字节) response.getOutputStream();
返回请求行中的资源名部分:String getResquestURI();
返回请求行中的参数部分(路径后面 ? 以后的所有内容):String getQueryString();
返回请求消息中的请求方式:String getMethod();
获取请求行中的协议名和版本:String getProtocol();
获取请求属于WEB程序的路径:String getContextPath();
获取Servlet的名称或Servlet所映射的路径:String getServletPath();
获取请求的协议名:String getScheme();
返回客户端发出请求时的完整URL : StringBuffer getResquestURL();
返回发出请求的客户端IP:String getRemoteAddr();
返回发出请求的客户端完整主机名(如果无法解析主机名则会返回该客户端的IP地址):String RemoteHost();
返回客户端使用的网络端口:int getRemotePort();
返回服务器的IP地址:String getLocalAddr();
返回服务器的主机名:String getLocalName();
返回服务器的端口号:int getLocalProt();
返回当前请求所指向的主机名:String getServerName();
返回当前请求所连接的服务器端口:int getServerName()
设置响应头的相关方法:
【add在后面追加,set直接覆盖】
一个key对应多个value的响应头:
addHeader(String name,String value);
addDateHeader(String name,long date);
addIntHeader(String name,int value);
一个key对应一个value的响应头:
setHeader(String name,String value);
setDateHeader(String name,long date);
setIntHeader(String name,int value);
获取请求头的相关方法:
获取一个指定头字段的值:String getHeader(String name);
返回一个由请求消息中出现的某个指定的所有头字段的Enumeration集合对象:Enumeration getHeaders(String name);
获取指定名称的头字段,并将值转为int类型(头字段不存在返回-1,值无法转为int类型则产生NumberFormatException异常):int getIntHeader(String name);
获取指定头字段的值,并按GMT时间格式转化成毫秒值:Long getDateHeader(String name);
获取Content-Type头字段的值:String getContentType();
获取Content-Length头字段的值:int getContentLength();
返回请求消息实体部分的字符集编码:String getCharacterEncoding();
获取请求参数的相关方法:
获取某个指定名称的参数值:String getParameter(String name);
获取请求消息中多个相同名称的参数:String[] getParameter Values(String name);
返回请求消息中的所有参数名和值以Map对象返回:Map getParameterMap();
发送状态码相关方法:
该方法用户设置HTTP响应消息的状态码,并生成响应状态:setStatus(int status);
表示错误信息的发送状态码方法:
(仅代表发送错误信息的状态码):
void sendError(int code) throws java.io.IOEception
(除了发送状态码外,还可以增加一条用于提示说明的文本信息发送给客户端正文内容中显示):
void sendError(int code , String message) throws java.io.IOEception
RequestDispatcher接口:
返回封装了某个路径所指定的RequestDispatcher对象:getRequetsDispatcher(String Path);
该方法将请求从一个Servlet传递给另外一个Web资源:forward(ServletRequest,ServletResponse response);
该方法用于将其他的资源作为当前响应内容包含进来:include(ServletResquest request,ServletResponse response);
类加载器读取文件:
InputStream inputStream = (className).class.getClassLoader().getResourceAsStream(String FileName || String configName);
properties文件:
Properties prop = new Properties();
prop.load(InputStream inputStream);
//获得所有请求头
Enumertion<String> allName = request.getHeaderNames();
while(allName.hasMoreElements){
//获得每一个请求头的名称
String name = allName.nextElement();
//通过请求头获得对应的信息
String value = response.getHeader(name);
}
/*
获得一组请求头以Enumeration集合返回:
public Enumerations<String> getHeaderNames();
获得每一个请求头的名称:
public String nextElement();
通过请求头获得信息:
public String getHeader(String headerName);
*/
HTTP请求详解:
HTTP 请求格式:请求行、请求头、请求体(GET请求抓包数据与POST请求抓包数据略微不同)
请求行:
请求行必须在HTTP请求格式的第一行;
请求行格式:请求方式 资源路径 协议/版本
请求方式:协议规定7种,常用分为两种:GET/POST
GET请求:
将请求参数追加在URL后面(URL?key=value&key=value),不安全;
URL有长度限制,GET请求方式的数据有限制;
没有请求体;
POST请求:
请求参数显示请求体处,较安全;
请求数据大小没有显示
请求头:
请求头从第二行开始到第一个空行结束(请求头和请求体之间存在一个空行);
请求头通常以键值对(key:value)方式传递;
key为规范规定的值;
value为key对应的取值,通常是一个值,可能也是一组;
常见请求头 | 描述 |
Referer | 浏览器通知服务器,当前请求来自何处,如果是直接访问,则不会有这个请求头;常用于:防盗链 |
If-Modifide-Since | 浏览器通知服务器本地缓存的最后变更时间,与另一个响应头组合控制浏览器页面的缓存。 |
Cookie | 与会话有关技术,用于存放浏览器的cookie信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息。 |
Connection | 保持连接状态;Keep-Alive连接中,close已关闭。 |
Host | 请求的服务器主机名 |
Content-Length | 请求体的长度 |
Content-Type | 如果是POST请求则会有这个请求头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码 |
Accept |
浏览器可支持的MIME类型,文件类型的一种描述方式;
MIME格式:大类型/小类型;参数
|
Accept-Encoding | 浏览器通知服务器,浏览器支持的数据压缩格式。如GZIP压缩 |
Accept-Language | 浏览器通知服务器,浏览器支持的语言 |
请求体:
通常情况下,只有post请求方式才会使用到请求体,请求体中都是用户表单提交的数据,每一项数据都使用键值对(k=v),多组值使用&连接
HTTP响应详解:
HTTP响应格式:响应行、响应头、响应体
响应行:
格式:协议/版本 状态码 状态码描述
例如:HTTP/1.1 200 OK
状态码:服务器与浏览器用于确定状态固定的数字号码
200 : 请求成功
302 : 请求重定向
304 : 请求资源没有改变,访问本地缓存
404 : 请求资源不存在,通常是用户路径编写错误,也可能是服务器资源已删除
500 : 服务器内部错误,通常程序抛异常
响应头:
响应头也使用键值对k:v
服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同
常见响应头 | 描述 |
Location | 指定响应的路径,需要与状态码302配合使用,完成跳转 |
Content-Type |
响应正文的类型(MIME类型)
取值:text/html;charset=UTF-8
|
Content-Disposition |
通过浏览器以下载方式解析正文
取值:attachment;filename=zz.zip
|
Set-Cookie | 与会话相关技术,服务器向浏览器写入Cookie |
Content-Encoding |
服务器使用的压缩格式
取值:GZIP
|
Content-Length | 响应正文的长度 |
Refresh |
定时刷新,格式:秒数;url=路径。url可省略,默认值为当前页
取值:3;url=www.itcast.cn//三秒刷新页面到www.itcast.cn
|
Server | 指的是服务器名称,默认值:Apach-Coyote/1.1。可以用过conf/server.xml配置进行修改。 |
Last-Modified | 服务器通知浏览器,文件的最后修改时间,与If-Modified-Since一起使用 |
响应体:
响应体就是服务器发送给浏览器的正文。