servlet如何利用request来获取http请求中的主体信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet如何利用request来获取http请求中的主体信息?相关的知识,希望对你有一定的参考价值。

参考技术A

    getProtocol():获取请求使用的通信协议,如http/1.1

    getServletPath():获取请求的JSP也面所在的目录。

    getContentLength():获取HTTP请求的长度。

    getMethod():获取表单提交信息的方式,如POST或者GET。

    getHeader(String s):获取请求中头的值。一般来说,S参数可取的头名有accept,referrer、

    accept-language、content-type、accept-encoding、user-agent、host、cookie等;

    getHeaderNames():获取头名字的一个枚举。

    getHeaders(String s):获取头的全部值的一个枚举。

    getRemoteAddr():获取客户的IP地址。

说一下Servlet里面得request和response

当一个servlet被调用的时候,我们一般继承带协议的httpServlet,大方向上是下图这样

在这里面request和response起了什么作用呢?

来细究一下。

request:
1.封装了客户端所有的请求数据:

请求行,请求头,请求体(get没体)

2.而当涉及到http协议时,我们还可以利用request获取协议的信息:

获取客户端ip:request.getRemoteAddr()

获取请求方式:request.getMethod()

 获取http请求头:

String getHeader(String name) ,适用于单值头

int getIntHeader(String name),适用于单值int类型的请求头

long getDateHeader(String name) ,适用于单值毫秒型的请求头

Enumeration<String> getHeaders(String name) 适用于多只请求头

获取请求url

getRequestURL():获取请求url,等于不包含参数的整个请求路径

getScheme():获取请求协议

getServerName():获取服务器名

getServerPort():获取服务器端口号

getContextPath():获取项目名

getServletPath():获取Servlet路径

getRequestURI():获取请求URI,等于项目名加Servlet路径

getQueryString():获取请求参数

3.获取请求参数,请求参数有一个值或多个值的。

String getParameter(String name) 获取单值参数

String[] getParameterValues(String name) 获取多值参数

Enumeration<String> getParameterNames() 获取所有参数名

Map<String,String[]> getParameterMap() 获取所有参数,key为参数名,value为参数值

4.请求转发和请求包含

  需要使用

   RequestDispatcher rd=request.getRequestDispatcher(\'\'/MyServlet\'\');

请求转发:rd.forward(request,response);

请求包含:rd.include(request,response):

有时候一个客户端要求分给A和B两个Servlet干同一件事,但是A和B都做不了,A是怎么做的呢,他和C说,我把这件事给你做,我设置设置响应头,你把响应体给我写了,你别告诉头,然后C做完了把响应体返回给A,A就拿着去交差了,这就是请求转发;而B呢,他会和C说,我自己做不了这件事,你和我一起做吧,我把响应头和响应体分分,你写一些我写一些,两者一起做完了,B拿着去交差了,这就是请求包含。

 

 

5.request域

在同一个请求内使用request.setAttribute(),request.getAttribute()来传值,前一个存,后一个取。

response

涉及到http协议时,

1.可以通过response发送状态码:200(成功),404(资源未找到),302(转发重定向,会伴着一个URL一起发送回去),304(浏览器有缓存),500(服务器端错误)

response.sendErr(int sc)

response.sendErr(int sc,String ms)

response.setStatus(int sc)

2.响应头

response.setHeader(String name,String value)

response.addHeader(String name,String value)

response.setIntHeader(String name,int value)

response.addIntHeader(String name,int value)

response.setDateHeader(String name,long value)

response.addDateHeader(String name,long value)

3.respone的两个流

ServletOutputStream:用来向客户端发送字节数据

PrintWriter:用来向客户端发送字符数据,需要设置编码

4.重定向

respone.sendRedirect("地址") 重定向

相当于

  response.setHeader("Location","地址");

 response.setStatus(302);

 

以上是关于servlet如何利用request来获取http请求中的主体信息?的主要内容,如果未能解决你的问题,请参考以下文章

说一下Servlet里面得request和response

servlet 怎么获取http post 的body

Servlet第四篇Request总结

如何在servlet打印http request 流

HTTP请求是如何被转换成request对象的?

JSP隐式对象