Request的功能_获取请求行数据和获取请求头数据

## 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就正常播放电影)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值