|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Request 封装客户端所有的请求数据
结构:
请求行
请求头
空行
请求体(get媒体)
获取常用信息:
获取客户端IP request.getRemoteAddr()
获取请求方式 request.getMethod() post或者get
获取(http)请求头
String getHeader(String name) 适用于单值头
Int getIntHeader(String name) 适用于单值INT类型的请求头
Long getDateHeader(String naem) 适用于单值毫秒类型的请求头
Enumeration<String> getHeaders(String) 适用于多值请求头
通过User-Agent得到用户信息
大多数请求都是get ,表单默认也是get,设置为post,请求才为post
总结操作:
获取客户端的IP地址,获取请求方式,获取User-Agent,得到客户端信息
String addr=request.getRemoteAddr();
System.out.println("IP: "+addr);
System.out.println("请求方式: "+request.getMethod());
String userAgent=request.getHeader("User-Agent");
System.out.println(userAgent);
//Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36
if(userAgent.toLowerCase().contains("chrome")){
System.out.println(addr+": ,你使用的是谷歌");
}else if(userAgent.toLowerCase().contains("firefox")){
System.out.println(addr+":你使用的是火狐");
}
获取请求URL
Http://localhost:8080/day10_1/Aservlet?username=xxx&password=yyy
String getScheme(): 获取协议 Http
String getServerName(): 获取服务器名, localhost
String getServerPort(): 获取端口 8080
String getContextPath(): 获取项目名 /day10_2
String getServletPath(): 获取Servlet路径 /Aservlet
String getQueryString(): 获取参数部分,即问号后面部分 username=xxx&password=yyy
String getRequestURI(): 获取请求URI 等于项目名+Servlet路径 /day10_2/Aservlet
String getRequestURL():获取请求URL 等于不包含参数的整个请求路径 Http://localhost:8080/day10_1/Aservlet
防盗链
使用Referer请求头,来防盗链
String referer =request.getHeader("Referer");
System.out.println(referer);
if(referer==null||!referer.contains("localhost")){
response.sendRedirect("http://www.baidu.com");
}else{
System.out.println("Hello!!");
}
获取请求参数:请求参数是由客户端发送给服务器的
String getParameter(String name):获取指定名称的请求参数值,单值请求参数
Enumeraiotn<String> getParameterNames();获取所有请求参数的名称
String[] getParameterValues(String name):获取指定名称的请求参数值,适用于多值请求参数 一个参数对应多个值
Map<String,String[]> getParameterMap():获取所有请求参数
实现:
String username=req.getParameter("username");
String password=req.getParameter("password");
String[] hobby=req.getParameterValues("hobby");
System.out.println(username+", "+password+", "+Arrays.toString(hobby));将字符串数组转为字符串
Enumeration names=req.getParameterNames(); //枚举类型数据集合
while(names.hasMoreElements()){
System.out.println(names.nextElement());
}
获取所有请求参数,封装到Map中 map集合类型之一
Map<String,String[]>map=req.getParameterMap();
System.out.println(map);
}
或者:
Map<String,String[]>map=req.getParameterMap();
//遍历
for(String name:map.keySet()){
String[] values=map.get(name);
System.out.println(name+"="+Arrays.toString(values));
}
|
评分
-
查看全部评分
|