## request功能
1.获取请求消息数据
1.获取请求行数据:
※GET /day14/demo1?name =zhangsan HTTP/1.1
※方法:
1.获取请求方式:GET
※String getMethod()
2.(※)获取虚拟目录:/day14.
※String getContextPath()
3.获取Servlet路径:/demo1.
※String getServletpath()
4.获取get方式请求参数:name =zhangsan
※String getQueryString()
5.(*)获取请求的URI:/day14/demo1
※String getRequestURI():/day14/demo1
※StringBuffer
※getRequestURL():http://localhost/day14/demo1
※URL:统一资源定位符:中华人民共和国
※URI: 统一资源标识符: 共和国
(区别:范围,比如URL比作中华人民共和国,URI比作共和国,第一个只代表一个国家,就是中国,然而共和国范围更大,不只是一个,只要是共和国结尾的)
6.获取协议及版本:HTTP/1.1
※String getProtocol()
7.获取客户机的IP地址:
※String getRemoteAddr()
//1.获取请求方式::GET
String method = request.getMethod();
System.out.println(method);
//2.(*)获取虚拟目录:/day14
String contextPath = request.getContextPath();
System.out.println(contextPath);
//3.获取Servlet路径:/demo1
String servletPath = request.getServletPath();
System.out.println(servletPath);
//4.获取get方式请求参数:name =zhangsan
String queryString = request.getQueryString();
System.out.println(queryString);
//5.1(*)获取请求的URI:/day14/demo1
String requestURI = request.getRequestURI();
System.out.println(requestURI);
//5.2*StringBuffer getRequestURL():http://localhost/day14/demo1
StringBuffer requestURL = request.getRequestURL();
System.out.println(requestURL);
//6获取协议及版本:HTTP/1.1
String protocol = request.getProtocol();
System.out.println(protocol);
//7.获取客户机的IP地址:
String remoteAddr = request.getRemoteAddr();
System.out.println(remoteAddr);
(首先第一个getMethod()方法,这个方法之前说过在HttpServlet里边有个Service方法,那么这个Service方法里边可以去判断他的请求方式的不同来做方法的分发,那么这个getMethod()方法在内部已经使用了,我们将来使用的几率比较少,第二个虚拟目录的方法getContextPath()很重要,先记住,后边会讲,第三个getServletPath()方法也了解一下就好,第四个getQuerySting()方法,现在也有个印象就行,以后也不会用这个方法获取请求参数,会去用更加高级的方式,第五个看上面,后面的方法了解一下就行)
2.获取请求头数据:
※方法:
※(※)String getHeader(String name):通过请求获取头的名称获取请求头的值
※Enumberation <String>getHeaderNames():获取所有的请求头名称
@WebServlet("/requestDemo2")
public class RequestDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取所有请求头名称
Enumeration<String> headerNames = request.getHeaderNames();
//2.遍历
while (headerNames.hasMoreElements()){
String name = headerNames.nextElement();
//根据头的名称获取头的值
String value = request.getHeader(name);
System.out.println(name+ "--"+value);
}
}
}
@WebServlet("/requestDemo3")
public class RequestDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取所有请求头名称
String agent = request.getHeader("user-agent");
//判断agent浏览器 版本
if(agent.contains("chrome")){
//谷歌
System.out.println("谷歌浏览器来访问....");
}else if(agent.contains("Firefox")){
//火狐
System.out.println("火狐浏览器来访");
}
}
}
@WebServlet("/requestDemo4")
public class RequestDemo4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取所有请求头名称:referer
String referer = request.getHeader("referer");
System.out.println(referer);//http://localhost/day14/login.html
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/demo3" method="GET">
<input name="username">
<input type="submit" value="登录">
</form>
<hr>
<a href="/day14/requestDemo4">demo4...</a>
</body>
</html>
@WebServlet("/requestDemo4")
public class RequestDemo4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取所有请求头名称:referer
String referer = request.getHeader("referer");
System.out.println(referer);//http://localhost/day14/login.html
//防盗链
if(referer!=null){
if(referer.contains("/day14")){
//正常访问
System.out.println("播放电影...");
}else{
//盗链
System.out.println("想看电影吗?来优酷吧...");
}
}
}
}
(只要包含/day14就正常播放电影)