一、httprvletrequest介绍
httprvletrequest对象代表客户端的请求,当客户端通过http协议访问服务器时,http请求头中的所有信息都封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
二、request常用方法
2.1、获得客户机信息
getrequesturl方法返回客户端发出请求时的完整url。
getrequesturi方法返回请求行中的资源名部分。
getquerystring 方法返回请求行中的参数部分。
getpathinfo方法返回请求url中的额外路径信息。额外路径信息是请求url中的位于rvlet的路径之后和查询参数之前的内容,它以“/”开头。
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.rvlet.rvletexception;
5 import javax.rvlet.http.httprvlet;
6 import javax.rvlet.http.httprvletrequest;
7 import javax.rvlet.http.httprvletrespon;
8 /**
9 * @author gacl
10 * 通过request对象获取客户端请求信息
11 */
12 public class requestdemo01 extends httprvlet {
13
14 public void doget(httprvletrequest request, httprvletrespon respon)
15 throws rvletexception, 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 remoteur = request.getremoteur();
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 respon.tcharacterencoding(“utf-8”);//设置将字符以”utf-8”编码输出到客户端
31 //通过设置响应头控制浏览器以utf-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码
32 respon.theader(“content-type”, “text/html;chart=utf-8”);
33 printwriter out = respon.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(“remoteur:”+remoteur);
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(httprvletrequest request, httprvletrespon respon)
60 throws rvletexception, ioexception {
61 doget(request, respon);
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.rvlet.rvletexception;
6 import j360手柄avax.rvlet.http.httprvlet;
7 import javax.rvlet.http.httprvletrequest;
8 import javax.rvlet.http.httprvletrespon;
9 /**
10 * @author gacl
11 * 获取客户端请求头信息
12 * 客户端请求头:
13 *
14 */
15 public class requestdemo02 extends httprvlet {
16
17 public void doget(httprvletrequest request, httprvletrespon respon)
18 throws rvletexception, ioexception {
19 respon.tcharacterencoding(“utf-8”);//设置将字符以”utf-8”八月十五短信祝福编码输出到客户端浏览器
20 //通过设置响应头控制浏览器以utf-8的编码显示数据
21 respon.theader(“content-type”, “text/html;chart=utf-8”);
22 printwriter out = respon.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(httprvletrequest request, httprvletrespon respon)
46 throws rvletexception, ioexception {
47 doget(request, respon);
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这个rvlet进行处理,填写的表单数据如下:
在服务器端使用getparameter方法和getparametervalues方法接收表单参数,代码如下:
复制代码
1 package gacl.request.study;
2 import java.io.ioexception;
3 import java.text.messageformat;
4 import javax.rvlet.rvletexception;
5 import javax.rvlet.http.httprvlet;
6 import javax.rvlet.http.httprvletrequest;
7 import javax.rvlet.http.httprvletrespon;
8 /**
9 * @author gacl
10 * 获取客户端通过form表单提交上来的参数
11 */
12 public class requestdemo03 extends httprvlet {
13
14 public void doget(httprvletrequest request, httprvletrespon respon)
15 throws rvletexception, ioexception {
16 //客户端是以utf-8编码提交表单数据的,所以需要设置服务器端以utf-8的编码进行接收,否则对于中文数据就会产生乱码
17 request.tcharacterencoding(“utf-8”);
18 /**
19 * 编号(文本框):
20
21 */
22 string urid = request.getparameter(“urid”);//获取填写的编号,urid是文本框的名字,
23 /**
24 * 用户名(文本框):
25 */
26 string urname = request.getparame中国医学院校排名ter(“urname”);//获取填写的用户名
27 /**
28 * 密码(密码框):
29 */
30 string urpass = request.getparameter(“urpass”);//获取填写的密码
31 string x = request.getparameter(“x”);//获取选中的性别
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 }el {
46 inststr+=insts[i]+”,”;
47 }
48 }
49
50 string htmlstr = “
” +
51 “” +
52 “” +
53 “” +
54 “” +
55 “” +
56 “” +
57 “” +
58 “” +
59 “
“;
60 htmlstr = messageformat.format(htmlstr, urid,urname,urpass,x,dept,inststr,note,hiddenfield);
61
62 respon.tcharacterencoding(“utf-8”);//设置服务器端以utf-8编码输出数据到客户端
63 respon.tcontenttype(“text/html;chart=utf-8”);//设置客户端浏览器以utf-8编码解析数据
64 respon.getwriter().write(htmlstr);//输出htmlstr里面的内容到客户端浏览器显示
65 }
66
67 public void dopost(httprvletrequest request, httprvletrespon respon)
68 throws rvletexception, ioexception {
69 doget(request, respon);
70 }
71 }
复制代码
运行结果如下:
在服务器端使用getparameternames方法接收表单参数,代码如下:
1 enumeration paramnames = request.getparameternames();//获取所有的参数名
2 while (paramnames.hasmoreelements()) {
3 string name = paramnames.next辛亥革命历史意义element();//得到参数名
4 string value = request.getparameter(name);//通过参数名获取对应的值
5 system.out.println(messageformat.format(“{0}={1}”, name,value));
6 }
运行结果如下:
在服务器端使用getparametermap方法接收表单参数,代码如下:
复制代码
1 //request对象封装的参数是以map的形式存储的
2 map
本文发布于:2023-04-06 06:26:51,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f6d9711b67b118b87466ef5b520cb9c1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:HttpServletRequest介绍、Request常用方法.doc
本文 PDF 下载地址:HttpServletRequest介绍、Request常用方法.pdf
留言与评论(共有 0 条评论) |