当前位置: 移动技术网 > IT编程>网页制作>CSS > HttpServletRequest介绍、Request常用方法

HttpServletRequest介绍、Request常用方法

2019年06月13日  | 移动技术网IT编程  | 我要评论

rosanna arquette,明月港湾幼儿园,武平二手房出售

一、httpservletrequest介绍

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

二、request常用方法

2.1、获得客户机信息

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

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

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

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

getremoteaddr方法返回发出请求的客户机的ip地址。

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

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

getlocaladdr方法返回web服务器的ip地址。

getlocalname方法返回web服务器的主机名。

范例:通过request对象获取客户端请求信息

复制代码
1 package gacl.request.study;
2 import java.io.ioexception;
3 import java.io.printwriter;
4 import javax.servlet.servletexception;
5 import javax.servlet.http.httpservlet;
6 import javax.servlet.http.httpservletrequest;
7 import javax.servlet.http.httpservletresponse;
8 /**
9 * @author gacl
10 * 通过request对象获取客户端请求信息
11 */
12 public class requestdemo01 extends httpservlet {
13
14 public void doget(httpservletrequest request, httpservletresponse response)
15 throws servletexception, ioexception {
16 /**
17 * 1.获得客户机信息
18 */
19 string requesturl = request.getrequesturl().tostring();//得到请求的url地址
20 string requesturi = request.getrequesturi();//得到请求的资源
21 string querystring = request.getquerystring();//得到请求的url地址中附带的参数
22 string remoteaddr = request.getremoteaddr();//得到来访者的ip地址
23 string remotehost = request.getremotehost();
24 int remoteport = request.getremoteport();
25 string remoteuser = request.getremoteuser();
26 string method = request.getmethod();//得到请求url地址时使用的方法
27 string pathinfo = request.getpathinfo();
28 string localaddr = request.getlocaladdr();//获取web服务器的ip地址
29 string localname = request.getlocalname();//获取web服务器的主机名
30 response.setcharacterencoding(“utf-8”);//设置将字符以”utf-8”编码输出到客户端
31 //通过设置响应头控制浏览器以utf-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
32 response.setheader(“content-type”, “text/html;charset=utf-8”);
33 printwriter out = response.getwriter();
34 out.write(“获取到的客户机信息如下:”);
35 out.write(“


”);
36 out.write(“请求的url地址:”+requesturl);
37 out.write(“
”);
38 out.write(“请求的资源:”+requesturi);
39 out.write(“
”);
40 out.write(“请求的url地址中附带的参数:”+querystring);
41 out.write(“
”);
42 out.write(“来访者的ip地址:”+remoteaddr);
43 out.write(“
”);
44 out.write(“来访者的主机名:”+remotehost);
45 out.write(“
”);
46 out.write(“使用的端口号:”+remoteport);
47 out.write(“
”);
48 out.write(“remoteuser:”+remoteuser);
49 out.write(“
”);
50 out.write(“请求使用的方法:”+method);
51 out.write(“
”);
52 out.write(“pathinfo:”+pathinfo);
53 out.write(“
”);
54 out.write(“localaddr:”+localaddr);
55 out.write(“
”);
56 out.write(“localname:”+localname);
57 }
58
59 public void dopost(httpservletrequest request, httpservletresponse response)
60 throws servletexception, ioexception {
61 doget(request, response);
62 }
63
64 }
复制代码
运行结果:

 

2.2、获得客户机请求头

  getheader(string name)方法:string
  getheaders(string name)方法:enumeration
  getheadernames()方法

范例:通过request对象获取客户端请求头信息

复制代码
1 package gacl.request.study;
2 import java.io.ioexception;
3 import java.io.printwriter;
4 import java.util.enumeration;
5 import javax.servlet.servletexception;
6 import javax.servlet.http.httpservlet;
7 import javax.servlet.http.httpservletrequest;
8 import javax.servlet.http.httpservletresponse;
9 /**
10 * @author gacl
11 * 获取客户端请求头信息
12 * 客户端请求头:
13 *
14 */
15 public class requestdemo02 extends httpservlet {
16
17 public void doget(httpservletrequest request, httpservletresponse response)
18 throws servletexception, ioexception {
19 response.setcharacterencoding(“utf-8”);//设置将字符以”utf-8”编码输出到客户端浏览器
20 //通过设置响应头控制浏览器以utf-8的编码显示数据
21 response.setheader(“content-type”, “text/html;charset=utf-8”);
22 printwriter out = response.getwriter();
23 enumeration reqheadinfos = request.getheadernames();//获取所有的请求头
24 out.write(“获取到的客户端所有的请求头信息如下:”);
25 out.write(“


”);
26 while (reqheadinfos.hasmoreelements()) {
27 string headname = (string) reqheadinfos.nextelement();
28 string headvalue = request.getheader(headname);//根据请求头的名字获取对应的请求头的值
29 out.write(headname+”:”+headvalue);
30 out.write(“
”);
31 }
32 out.write(“
”);
33 out.write(“获取到的客户端accept-encoding请求头的值:”);
34 out.write(“
”);
35 string value = request.getheader(“accept-encoding”);//获取accept-encoding请求头对应的值
36 out.write(value);
37
38 enumeration e = request.getheaders(“accept-encoding”);
39 while (e.hasmoreelements()) {
40 string string = (string) e.nextelement();
41 system.out.println(string);
42 }
43 }
44
45 public void dopost(httpservletrequest request, httpservletresponse response)
46 throws servletexception, ioexception {
47 doget(request, response);
48 }
49
50 }
复制代码
运行结果如下:

 

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

getparameter(string)方法(常用)
getparametervalues(string name)方法(常用)
getparameternames()方法(不常用)
getparametermap()方法(编写框架时常用)
比如现在有如下的form表单

复制代码
1 <%@ page language=”java” import=”java.util.*” pageencoding=”utf-8”%>
2
3
4
5 html的form表单元素
6
7
8 html的form表单元素
9
10
11
12 编号(文本框):
13
14
15 用户名(文本框):
16
17 密码(密码框):
18
19
20
21 性别(单选框):
22 男
23 女
24
25 部门(下拉框):
26
27 技术部
28 销售部
29 财务部
30
31
32 兴趣(复选框):
33 唱歌
34 游泳
35 跳舞
36
37 上网
38
39
40 说明(文本域):
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
复制代码
  在form表单中填写数据,然后提交到requestdemo03这个servlet进行处理,填写的表单数据如下:

在服务器端使用getparameter方法和getparametervalues方法接收表单参数,代码如下:

复制代码
1 package gacl.request.study;
2 import java.io.ioexception;
3 import java.text.messageformat;
4 import javax.servlet.servletexception;
5 import javax.servlet.http.httpservlet;
6 import javax.servlet.http.httpservletrequest;
7 import javax.servlet.http.httpservletresponse;
8 /**
9 * @author gacl
10 * 获取客户端通过form表单提交上来的参数
11 */
12 public class requestdemo03 extends httpservlet {
13
14 public void doget(httpservletrequest request, httpservletresponse response)
15 throws servletexception, ioexception {
16 //客户端是以utf-8编码提交表单数据的,所以需要设置服务器端以utf-8的编码进行接收,否则对于中文数据就会产生乱码
17 request.setcharacterencoding(“utf-8”);
18 /**
19 * 编号(文本框):
20
21 */
22 string userid = request.getparameter(“userid”);//获取填写的编号,userid是文本框的名字,
23 /**
24 * 用户名(文本框):
25 */
26 string username = request.getparameter(“username”);//获取填写的用户名
27 /**
28 * 密码(密码框):
29 */
30 string userpass = request.getparameter(“userpass”);//获取填写的密码
31 string sex = request.getparameter(“sex”);//获取选中的性别
32 string dept = request.getparameter(“dept”);//获取选中的部门
33 //获取选中的兴趣,因为可以选中多个值,所以获取到的值是一个字符串数组,因此需要使用getparametervalues方法来获取
34 string[] insts = request.getparametervalues(“inst”);
35 string note = request.getparameter(“note”);//获取填写的说明信息
36 string hiddenfield = request.getparameter(“hiddenfield”);//获取隐藏域的内容
37
38 string inststr=”“;
39 /**
40 * 获取数组数据的技巧,可以避免insts数组为null时引发的空指针异常错误!
41 */
42 for (int i = 0; insts!=null && i < insts.length; i++) {
43 if (i == insts.length-1) {
44 inststr+=insts[i];
45 }else {
46 inststr+=insts[i]+”,”;
47 }
48 }
49
50 string htmlstr = “

” +
51 “” +
52 “” +
53 “” +
54 “” +
55 “” +
56 “” +
57 “” +
58 “” +
59 “
填写的编号: {0}
填写的用户名: {1}
填写的密码: {2}
选中的性别: {3}
选中的部门: {4}
选中的兴趣: {5}
填写的说明: {6}
隐藏域的内容: {7}
“;
60 htmlstr = messageformat.format(htmlstr, userid,username,userpass,sex,dept,inststr,note,hiddenfield);
61
62 response.setcharacterencoding(“utf-8”);//设置服务器端以utf-8编码输出数据到客户端
63 response.setcontenttype(“text/html;charset=utf-8”);//设置客户端浏览器以utf-8编码解析数据
64 response.getwriter().write(htmlstr);//输出htmlstr里面的内容到客户端浏览器显示
65 }
66
67 public void dopost(httpservletrequest request, httpservletresponse response)
68 throws servletexception, ioexception {
69 doget(request, response);
70 }
71 }
复制代码
运行结果如下:

 

在服务器端使用getparameternames方法接收表单参数,代码如下:

1 enumeration paramnames = request.getparameternames();//获取所有的参数名
2 while (paramnames.hasmoreelements()) {
3 string name = paramnames.nextelement();//得到参数名
4 string value = request.getparameter(name);//通过参数名获取对应的值
5 system.out.println(messageformat.format(“{0}={1}”, name,value));
6 }
运行结果如下:

在服务器端使用getparametermap方法接收表单参数,代码如下:

复制代码
1 //request对象封装的参数是以map的形式存储的
2 map

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网