ServletRequest接口和HttpServletRequest接口

简述:

在Servlet接口中的service(ServletRequest request , ServletResponse response)方法中有一个ServletRequest类型的参数。ServletRequest类表示来自客户端的请求。当Servlet容器接收到客户端要求访问特定Servlet的请求时,容器先解析客户端的原始请求数据,把它包装成一个ServletRequest对象。当容器调用Servlet对象的service()方法时,就可以把ServletRequest对象作为参数传给service()方法。

请求对象方法

ServletRequest接口提供了一系列用于读取客户端请求数据的方法,如下:
1)getContentLength():返回请求正文的长度。如果请求正文的长度位置,则返回-1.
2)getContentType():获得请求正文的MIME类型。如果请求正文的类型未知,则返回null。
3)getInputStram():返回用于读取请求正文的输入流。
4)getLocalAddr():返回服务器短短的IP地址。
5)getLocalName():返回服务器端的主机名。
6)getLocalPort():返回服务器端的FTP端口号。
7)getParameter(String name):根据给定的请求参数名,返回来自客户请求中的匹配的请求参数值。
8) getProtocal():返回客户端和服务器端通信所用的协议的名称及版本号。
9)getReader():返回用户读取字符串形式的请求正文的BufferedReader对象。
10)getRemoteAddr():返回客户端的IP地址。
11)getRemoteHost():返回客户端的主机名。
12)getRemotePort():返回客户端的FTP端口号。
下面三个方法用户在请求范围内存取共享数据的方法:
1)setAttribute(String name , java.lang.Object object):在请求范围内保存一个属性,参数name标识属性名,参数object标识属性值。
2)getAttribute(String name):根据name参数给定的属性名,返回请求范围内的匹配的属性值。
3)removeAttribute(String name):从请求范围内删除一个属性。

HttpServletRequest接口

HttpServletRequest接口是ServletRequest接口的子接口。
HttpServlet类的重载service()方法及doGet()和doPost()等方法都有一个HttpServletRequest类型的参数,如:
  1. protected void service(HttpServletRequest req, HttpServletResponse resp)
  2. throws ServletException, IOException{........}

响应方法

HttpServletRequest接口提供了用于读取HTTP请求中的相关信息的方法:
1)getContextPath():返回客户端所请求访问的web应用的URL入口。例如,如果客户端访问的URL为http://localhost:8080/helloapp/info,那么该发放返回“/helloapp”。
2)getCookies():返回HTTP请求中的所有的Cookie。
3)getHeader(String name):返回HTTP请求头部的特定项。
4)getHeaderNames():返回一个Enumeration对象,它包含了HTTP请求头部的所有项目名。
5)getMethod():返回HTTP请求方式,如post,或get。
6)getRequestURI():返回HTTP请求的头部的第1行中的URI。
7)getQueryString():返回HTTP请求中的查询字符串,即UTL中的“?”后面的内容。例如,如果客户端访问的URL为
http://localhost:8080/htlloapp/info?username=tom
,那么该方法返回“username=tome”。

根据SUN的Servlet API来创建的Servlet,无需费力的解析原始HTTP请求。解析原始HTTP请求的工作完全由Servlet容器来代劳。Servlet容器把HTTP请求包装成HttpServletRequest对象,Servlet只需调用该对象的getXXX()方法,节能轻轻松松地读取到HTTP请求中的各种数据。
posted @ 2018-07-25 14:56  麻爪棒棒鸡  阅读(677)  评论(0编辑  收藏  举报