Jsp&Servlet08
Request 封装客户端所有的请求数据结构:
请求行
请求头
空行
请求体(get媒体)
获取常用信息:
获取客户端IPrequest.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));
}
页:
[1]