Request获取数据,Cookie保存数据

Request获取数据

1.使用getParameter获取数据

// 设置响应的编码格式
        response.setContentType("text/html;charset=UTF-8");
        // 告诉服务器 请求的内容是什么编码格式
        request.setCharacterEncoding("UTF-8");
        // 获取表单中所有提交的数据打印 getParameter接收一个值数据
        String name = request.getParameter("userName");
        String pwd = request.getParameter("userPwd");
        String sex = request.getParameter("sex");
        // 获得复选框传递的值
        String[] hobby = request.getParameterValues("hobby");
        //判断不为空则遍历打印
        if (hobby != null) {
            for (String h : hobby) {
                System.out.println(h);
            }
        }
        String city = request.getParameter("city");
        System.out.println(name);
        System.out.println(pwd);
        System.out.println(sex);
        System.out.println(city);

2.使用getParacterName 获取

// 利用getParacterName打印表单
        Enumeration names = request.getParameterNames();
        while (names.hasMoreElements()) {
            String name = names.nextElement();
            // 根据name取出对应的值
            String[] strings = request.getParameterValues(name);
            for (String value : strings) {
                System.out.println(value);
            }
        }

3.使用map集合获取 创建User类 属性最好与表单名字一致

User user = new User();
        try {
            BeanUtils.populate(user, request.getParameterMap());
            System.out.println(user);
        } catch (IllegalAccessException | InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

请求转发,重定向,包含

1.请求转发

// 请求转发获取转发器
        // 请求转发只是服务器内部的访问
        // 不管怎么写路径始终都在项目路径下
        RequestDispatcher dispatcher = request.getRequestDispatcher("/demo03");
        dispatcher.forward(request, response);

2.请求重定向

// 请求重定向查看是否能获取域中的值
        // 重定向是两次请求 不能获取到request域中的值
        // 重定向既可以访问本地服务器 也可以访问非本地服务器
        response.sendRedirect("http://www.baidu.com");

3.请求包含

// 请求包含
        // 相当于把两个页面的响应合成一个响应返回浏览器
        // 请求转发 浏览器只能响应一个数据
        request.getRequestDispatcher("/demo03").include(request, response);
        // 响应一句话
        out.write("123");

cookie

1.什么是cookie 
cookie是一种 客户端技术 cookie是保存在浏览器中的缓存数据 
发起一个请求 请求一个servlet 进行逻辑处理(添加一个商品进购物车) 处理完成后给客户端一个响应响应中携带着记录了购买的商品 cookie让浏览器保存 可以保存在内存中(结束回话 cookie被清除) 也可以保存在硬盘中(结束回话 依然存在 就是文件) 
当浏览器再一次请求购物车时会携带之前保存的cookie 去访问 每个网站可以保存20个cookie整个浏览器可以保存300个 
第一次访问服务器时不会携带cookie因为cookie没有产生 只有当第一次请求之后的响应中可以把cookie写会到浏览器。

cookie获取数据

举例:在网站中显示上次登录时间 
1.创建cookie

// 创建cookie 记录当前时间
        Cookie cookie = new Cookie("lastTime", System.currentTimeMillis() + "");
        // 设置一下cookie的保存路径 工程名加配置的网址路径
        // 寻找读取cookie时是按照请求的地址寻找cookie的
        // 如果配置请求路径没有一级目录
        // 这样全网站所有的请求都可以找到cookie
        // cookie.setPath("/");
        cookie.setPath("/java-web-servlet-3.28/servlet");
        // 设置cookie存活时间 integer.Maxvalues
        // 负值 表示浏览器关闭cookie消失 正值表示cookie存活时间 0 表示删除
        cookie.setMaxAge(300);
        // 把cookie添加到响应中
        response.addCookie(cookie);

2.读取cookie并且转化为日期格式

// 读取cookie
        Cookie[] cookies = request.getCookies();
        if (cookies != null) {
            // 遍历数组
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals("lastTime")) {
                    // 取出cookie的值
                    String value = cookie.getValue();
                    long time = Long.parseLong(value);
                    // 转成日期date 构建日期对象
                    Date date = new Date(time);
                    // 创建一个显示的日期格式
                    // 参数就是想要现实的日期格式
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    // 格式化时间
                    String lastTime = dateFormat.format(date);
                    // 响应到浏览器显示
                    response.getWriter().write("上次的访问时间是:" + lastTime);
                }
            }
        }

3.xml中配置 

Request获取数据,Cookie保存数据_第1张图片

你可能感兴趣的:(servlet)