HttpServletRequest常用方法和样例

HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。

HttpServletRequest常用方法

1、HttpServletRequest获得客户端方面的信息

  getRequestURL方法返回客户端发出请求时的完整URL。

  getRequestURI方法返回请求行中的资源名部分。

  getQueryString 方法返回请求行中的参数部分。

  getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。

  getRemoteAddr方法返回发出请求的客户机的IP地址。

  getRemoteHost方法返回发出请求的客户机的完整主机名。

  getRemotePort方法返回客户机所使用的网络端口号。

  getLocalAddr方法返回WEB服务器的IP地址。

getLocalName方法返回WEB服务器的主机名。

2、HttpServletRequest获得客户端请求头文件(header)

getHeader(string name)方法:String

  getHeaders(String name)方法:Enumeration

getHeaderNames()方法

3、HttpServletRequest获得客户端提交的请求参数(数据)

getParameter(String)方法(常用)

getParameterValues(String name)方法(常用)

getParameterNames()方法(不常用)

getParameterMap()方法(编写框架时常用)

4、HttpServletRequest使用的源代码

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.Enumeration;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

/**

*通过request对象获取客户端请求信息

*@author 范芳铭

*/

public class Request extends HttpServlet{

privatestatic final long serialVersionUID = -5936855793838510405L;

publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

//1.获得客户端方面的信息

String requestUrl = request.getRequestURL().toString();//得到请求的URL地址

String requestUri = request.getRequestURI();//得到请求的资源

String queryString = request.getQueryString();//得到请求的URL地址中附带的参数

String remoteAddr = request.getRemoteAddr();//得到来访者的IP地址

String remoteHost = request.getRemoteHost();

int remotePort = request.getRemotePort();

String remoteUser = request.getRemoteUser();

String method = request.getMethod();//得到请求URL地址时使用的方法

String pathInfo = request.getPathInfo();

String localAddr = request.getLocalAddr();//获取WEB服务器的IP地址

String localName = request.getLocalName();//获取WEB服务器的主机名

response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器

//通过设置响应头控制浏览器以UTF-8的编码显示数据,浏览器显示乱码的解决方法

response.setHeader("content-type","text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.write("获得客户端方面的信息如下:");

out.write("<hr/>");

out.write("请求的URL地址:"+requestUrl);

out.write("<br/>");

out.write("请求的资源:"+requestUri);

out.write("<br/>");

out.write("请求的URL地址中附带的参数:"+queryString);

out.write("<br/>");

out.write("来访者的IP地址:"+remoteAddr);

out.write("<br/>");

out.write("来访者的主机名:"+remoteHost);

out.write("<br/>");

out.write("使用的端口号:"+remotePort);

out.write("<br/>");

out.write("remoteUser:"+remoteUser);

out.write("<br/>");

out.write("请求使用的方法:"+method);

out.write("<br/>");

out.write("pathInfo:"+pathInfo);

out.write("<br/>");

out.write("localAddr:"+localAddr);

out.write("<br/>");

out.write("localName:"+localName);

out.write("<br/>");

//2.获得客户端请求头文件(header)

Enumeration<String> reqHeadInfos = request.getHeaderNames();//获取所有的请求头

out.write("获得客户端请求头文件(header):");

out.write("<hr/>");

while (reqHeadInfos.hasMoreElements()) {

String headName = (String)reqHeadInfos.nextElement();

String headValue =request.getHeader(headName);//根据请求头的名字获取对应的请求头的值

out.write(headName+":"+headValue);

out.write("<br/>");

}

out.write("<br/>");

out.write("获取到的客户端Accept-Encoding请求头的值:");

out.write("<hr/>");

String value = request.getHeader("Accept-Encoding");//获取Accept-Encoding请求头对应的值

out.write(value);

Enumeration<String> e =request.getHeaders("Accept-Encoding");

while (e.hasMoreElements()) {

String string = (String)e.nextElement();

out.write(string);

}

//3.获得客户端提交的请求参数(数据)

out.write("<br/>");

String paramA = request.getParameter("paramA");

String[] paramB = request.getParameterValues("paramB");

out.write("获得客户端提交的请求参数(数据):");

out.write("<hr/>");

out.write("参数paramA
:"+paramA);

out.write("<br/>");

out.write("参数paramB
:"+paramB);

out.write("<br/>");

}

public void doPost(HttpServletRequest request, HttpServletResponseresponse)

throws ServletException,IOException {

doGet(request, response);

}

}

5、运行结果

在浏览器输入

http://localhost:8080/webStudy/request?paramA=a&paramB=1%202%203

结果如下:

获得客户端方面的信息如下:

请求的URL地址:http://localhost:8080/webStudy/request

请求的资源:/webStudy/request

请求的URL地址中附带的参数:paramA=a?mB=1%202%203

来访者的IP地址:0:0:0:0:0:0:0:1

来访者的主机名:0:0:0:0:0:0:0:1

使用的端口号:50344

remoteUser:null

请求使用的方法:GET

pathInfo:null

localAddr:0.0.0.0

localName:0.0.0.0获得客户端请求头文件(header):

host:localhost:8080

connection:keep-alive

accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

user-agent:Mozilla/5.0 (Windows NT 6.1)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36

accept-encoding:gzip,deflate,sdch

accept-language:zh-CN,zh;q=0.8

cookie:JSESSIONID=83372ECC1D536CC3586DB8B27CD5013F

获取到的客户端Accept-Encoding请求头的值:

gzip,deflate,sdch获得客户端提交的请求参数(数据):

参数paramA :a

参数paramB :[Ljava.lang.String;@96ad7c

时间: 2024-08-09 20:25:53

HttpServletRequest常用方法和样例的相关文章

使用Dropzone上传图片及回显演示样例

一.图片上传所涉及到的问题 1.HTML页面中引入这么一段代码 <div class="row"> <div class="col-md-12"> <form dropzone2 class="dropzone" enctype="multipart/form-data" method="post"></form> </div> </div&

HTTP基本认证(Basic Authentication)的JAVA演示样例

大家在登录站点的时候.大部分时候是通过一个表单提交登录信息.可是有时候浏览器会弹出一个登录验证的对话框.例如以下图,这就是使用HTTP基本认证.以下来看看一看这个认证的工作过程:第一步:  client发送http request 给server,server验证该用户是否已经登录验证过了,假设没有的话,server会返回一个401 Unauthozied给client,而且在Response 的 header "WWW-Authenticate" 中加入信息. 例如以下图. 第二步:

跨域JSONP原理及调用详细演示样例

上篇博客介绍了同源策略和跨域訪问概念,当中提到跨域经常使用的基本方式:JSONP和CORS. 那这篇博客就介绍JSONP方式. JSONP原理 在同源策略下,在某个server下的页面是无法获取到该server以外的数据的,但img.iframe.script等标签是个例外.这些标签能够通过src属性请求到其它server上的数据. 而JSONP就是通过script节点src调用跨域的请求. 当我们通过JSONP模式请求跨域资源时,server返回给client一段javascript代码,这段

javaEE mvc样例具体解释

一个不错的样例值得细细品味: 以下依照包顺序将代码贴出来供大家參考: IEmpDAO package org.lzch.dao; import java.util.List; import org.lzch.vo.Emp; public interface IEmpDAO { public boolean doCreate(Emp emp)throws Exception; public boolean doUpdate(Emp emp)throws Exception; public bool

从零学scala(七)集合、模式匹配和样例类

一:集合 主要的集合特质 scala集合中重要的特质: Trait(Iterable) Trait(Seq) Trait(Set) Trait(Map) Trait(IndexedSeq) Trait(SoredSet) Trait(SoredMap) Seq是一个有先后次序的值的序列,比如数组和列表.IndexSeq允许我们通过下表快速访问元素,ArrayBuffer是带下标的,但是链表不是. Set是一个没有先后次序的值的序列,SortedSet中,元素以排过序的顺序被访问. Map是一组(

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

使用GPC分解多边形样例(Generic Polygon Clipper)

使用GPC分解多边形 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源) GPC: Generic Polygon Clipper GPC支持分解多边形.多边形求差集.交集,异或.并集 GPC_DIFF,                         /* Difference                        */ GPC_INT,                          /* Intersection    

Apache Tomcat样例目录session操纵漏洞

0x00   背景 前段时间扫到的漏洞,研究了下,感觉挺有意思的,发出来和大家分享下,有啥不对的地方还请各位拍砖指正. Apache Tomcat默认安装包含"/examples"目录,里面存着众多的样例,其中session样例(/examples/servlets/servlet/SessionExample)允许用户对session进行操纵.因为session是全局通用的,所以用户可以通过操纵session获取管理员权限. 案例:http://www.wooyun.org/bugs