使用Servlet处理HTTP请求.docx

上传人:b****6 文档编号:5808456 上传时间:2023-01-01 格式:DOCX 页数:4 大小:16.44KB
下载 相关 举报
使用Servlet处理HTTP请求.docx_第1页
第1页 / 共4页
使用Servlet处理HTTP请求.docx_第2页
第2页 / 共4页
使用Servlet处理HTTP请求.docx_第3页
第3页 / 共4页
使用Servlet处理HTTP请求.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

使用Servlet处理HTTP请求.docx

《使用Servlet处理HTTP请求.docx》由会员分享,可在线阅读,更多相关《使用Servlet处理HTTP请求.docx(4页珍藏版)》请在冰豆网上搜索。

使用Servlet处理HTTP请求.docx

使用Servlet处理HTTP请求

使用Servlet处理HTTP请求

当服务器接收到一个HTTP请求,判断请求的是静态网页还是动态网页

如果是静态网页则由服务器查询资源文件并响应给客户端,如果是动态,交由web容器处理

web容器找到对应的Servlet,调用HttpServlet的service(),再调用一个实例对象的service(),再具体调用doXXX方法

如果能处理,就将响应XMLHttpResponse对象的属性处理,不能处理就将请求转发(需要得到一个具体路径的RequestDispatcher对象)。

具体方法如下:

请求行相关方法:

getMethod()获得请求行的方法,如:

get,post等

getRequestURI()获得请求的统一资源标识符(相对的,不包含QueryString)(URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relativeURL,则是针对另一个absoluteURL,本质上还是绝对的。

),例如/lovo/index.html

getRequestURL()获得统一资源定位符(用于绝对位置定位,即不知道根目录也能定位,可以有?

和后面的数据)例如http:

//127.0.0.1:

8080/lovo/index.html?

name=string。

getProtocol()获取协议及版本。

getContextPath()获得上下文路径,即虚拟路径,web应用的供外部访问的根路径,如http:

//localhost:

8080/sun的/sun

getServletPath()获取Servlet的映射路径。

请求头相关方法:

 

getHeader(Stringname)返回指定的请求头的值,如request.getHeader("Accept");访问Accept的HTTP头;request.getHeader("Host")输出:

192.168.0.1:

8080;request.getHeader("Referer");request.getHeader("Accept-Language");request.getHeader("Accept-Encoding");request.getHeader("User-Agent");request.getHeader("Connection");request.getHeader("Cookie")

 

getHeaderNames()该方法获得一个Enumeration包含特定请求中接受到的所有请求头的名称

 

getIntHeader(Stringname)获取特定请求头的值,并转化为INT类型

 

getDateHeader(Stringname)获得特定请求头的值,并转化为Date类型

 

消息体相关方法:

getParameter(Stringname)获取表单参数的值

getParameterValues(StringparameterName)获取同一个参数名的多个参数值返回字符串数组对象

getParameterNames()以枚举的方式返回请求中所有的表单参数名列表

  

请求转发和请求范围:

请求转发:

getRequestDispatcher(Stringpath)返回给定路径的RequestDispatcher对象

getNamedDispatcher(Stringname)返回某个名称的Servlet的RequestDispatcher对象

forward(ServletReqeust,ServletResponse)派发请求和响应对象到RequestDispatcher对象所确定的新资源

include(ServletReqeust,ServletResponse)类似forward()不过有一些限制,该方法包含服务器端得资源,被包含的资源不能改变响应状态代码或设置头信息

请求范围:

请求范围仅仅作用在与一个请求相关的两个资源之间,如果需要继续传递到第三个或者更多的Servlet,应当继续调用HttpServletRequest对象的setAttribute()和getAttribute()方法

附:

request方法大全:

  协议:

request.getProtocol()

输出:

HTTP/1.1服务器信息getServletConfig().getServletContext().getServerInfo()

输出:

JavaServerWebDevKit/1.0EA(JSP1.0;Servlet2.1;Java1.2;WindowsNT5.0x86;java.vendor=SunMicrosystemsInc.)客户端IP:

request.getRemoteAddr()

输出:

192.168.0.106客户端主机名:

request.getRemoteHost()

输出:

abc编码:

request.getCharacterEncoding()

输出:

GB2312所发送的字节数:

request.getContentLength()

输出:

-1数据类型:

request.getContentType()

输出:

nullAuthorization头:

request.getAuthType()

输出:

basic或者digest请求类型:

request.getMethod()

输出:

通常是GET或者POST。

但偶尔也会出现HEAD,PUT,Delete,OPTIONS,或者TRACE.URL中的附加路径信息:

request.getPathInfo()

输出:

URL中Servlet路径之后、查询字符串之前的那部分。

request.getPathTranslated()

映射到服务器实际路径之后的路径信息。

request.getQueryString()

这是字符串形式的附加到URL后面的查询字符串,数据仍旧是URL编码的。

在Servlet中很少需要用到未经解码的数据,一般使用getParameter访问各个参数。

request.getRemoteUser()

如果提供了Authorization头,则代表其用户部分。

它代表发出请求的用户的名字。

request.getRequestedSessionId()

输出SessionIdrequest.getRequestURI()

请求URLrequest.getServletPath()

URL中调用Servlet的那一部分,不包含附加路径信息和查询字符串。

request.getHeader("Accept")

访问Accept的HTTP头。

request.getHeader("Host")

输出:

192.168.0.1:

8080request.getHeader("Referer")

request.getHeader("Accept-Language")request.getHeader("Accept-Encoding")request.getHeader("User-Agent")request.getHeader("Connection")request.getHeader("Cookie")

返回协议名称:

request.getScheme()

输出:

HTTPWeb服务器名字:

request.getServerName()

输出:

192.168.0.1服务器监听的端口:

request.getServerPort()

输出:

8080原文地址:

获取request里的所有参数名及其参数值作者:

橡皮擦

request里有两个方法

request.getParameterMap();

request.getParameterNames();

我想用这两种方法获取。

1。

用request.getParameterNames();

Enumerationenu=request.getParameterNames();

while(enu.hasMoreElements()){

StringparaName=(String)enu.nextElement();

System.out.println(paraName+":

"+request.getParameter(paraName));

}2。

request.getParameterMap();

访问URL:

http:

//127.0.0.1:

8080/test.jsp?

a=1&b=2&c=3

test代码:

Mapmap=request.getParameterMap();

SetkeSet=map.entrySet();

for(Iteratoritr=keSet.iterator();itr.hasNext();){

Map.Entryme=(Map.Entry)itr.next();

Objectok=me.getKey();

Objectov=me.getValue();

String[]value=newString[1];

if(ovinstanceofString[]){

value=(String[])ov;

}else{

value[0]=ov.toString();

}for(intk=0;k<value.length;k++){

System.out.println(ok+"="+value[k]);

}

}

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1