JavaWeb之request中信息的提取和Cookie的学习

request中信息的提取
当浏览器访问servlet类的时候,传输过来的request中包含了一些从浏览器端传输过来的信息
request可以分为
1. 请求行:里面主要包含了请求的地址链接和应用层的数据传输协议,请求数据的方式
2.请求头:请求头中包含了一些浏览器中传过来的参数
3.请求体
我们在提取request携带过来的一些请求参数的时候,因为浏览器传输过来的参数是以键值对的形式传递过来的,可以采用多种方法:

    //方法一:直接通过key值来逐一提取信息
    String userName = request.getParameter("userName");//括号中的值均为键值对中的key
    String password = request.getParameter("password");
    //方法二:获取传递过来的键值对中的key值集合
    //获得的是所有的key的集合
          Enumeration<String> parameterNames = request.getParameterNames();
    //将key集合遍历取出对应的value值
          while (parameterNames.hasMoreElements()) {
          String key = parameterNames.nextElement();
    //用数组来接收value值的集合
          String[] values =request.getParameterValues(key);//因为key值对应的也可能是多个字符串
          for (String string : values) {
                System.out.println(string);
            }
        };
    //第三种方式是将参数信息全部装入一个符合javaBean的对象中
        Student student = new Student();
        student.setUserName(request.getParameter("userName"));
        student.setPassword(request.getParameter("password"));

请求转发,请求重定向和请求包含的区别:
请求转发:整个过程只有一次请求,所以整个过程也只有一次响应,在响应一次之后就不会再处理后面的响应了,并且请求转发不能请求外网的地址,只能转发在服务器内部的访问
请求重定向:整个过程有两次请求和两次响应,并且在请求重定向中,可以访问外网的地址
请求包含:请求包含虽然也只有一次请求,但是可以将两个页面的响应合并发送给浏览器,其余的和请求转发没有区别

//请求转发:请求转发是通过请求转发器来转发的
//获得请求转发器的方式有两种:
This.getServletContext().getRequestDispatcher("/demo01").forward(request, response);
//第二种是通过request来获取转发器
request.getRequestDispatcher("/demo01").forward(request, response);
//请求重定向:请求重定向的方法也有两种
//1.通过设置响应头来重定向
response.setHeader("location","/demo01");
//2.通过响应直接重定向
response.sendRedirect("/demo01");
//请求包含:
request.getRequestDispatcher("/demo03").include(request, response);

request和servletContext都是域对象.不同的是context对象的生命周期是从程序的开始到程序的销毁
request的生命周期是开始于一次请求到该次请求的结束

Cookie

浏览器与服务器之间的会话:是指客户端与浏览器进行交互,只有当浏览器关闭的时候,会话才会结束
会话中,用来保存请求过程中的一些数据,可以使用cookie,cookie是将数据保存在浏览器中的
Cookie的工作原理:当浏览器发送一个请求的时候,请求的servlet将一些信息保存在cookie中,然后将cookie添加到response中,随着服务器响应浏览器,将cookie响应给浏览器,然后浏览器将cookie存储到浏览器中,当浏览器再一次访问这个servlet的时候,request会携带着cookie去访问的,我们可以获取cookie中包含的信息;需要注意的是,第一次发送请求的时候,是没有cookie的.cookie是在第一次响应的时候创建的,再次请求的时候,cookie包含在request中的.
下面我们来看一下服务器将数据存储在cookie中,通过response来讲cookie传输给浏览器

//Cookie我们可以看成一个键值对
Cookie cookie = new Cookie("userName", "张三");//创建一个cookie
//设置cookie的保存路径
cookie.setPath("/sh-web-servlet03/");//代表只有/sh-web-servlet03路径下面的程序才能访问这个cookie
cookie.setPath("/");代表的是整个根目录下的程序都可以访问这个cookie
//设置cookie的存活事件:负值代表浏览器关闭的时候cookie被清除,正值表示的是存活的时间,0表示的是删除cookie
cookie.setMaxAge(300);
//把cookie添加到响应当中
response.addCookie(cookie);

下面我们来看一下再次访问时候,request携带着cookie请求的时候,获取cookie中数据

//通过请求直接获取request中包含的所有的cookie
Cookie[] cookies = request.getCookies();
//遍历所有的cookie,然后根据cookie的key值来获取value值
if (cookies!=null) {
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("userName")) {
                  userName = cookie.getValue();
                  System.out.println(userName);
                }
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值