HttpSession的使用

这篇具有很好参考价值的文章主要介绍了HttpSession的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 HttpSession 概述

在 Java Servlet API 中引入 session 机制来跟踪客户的状态。session 指的是在一段时间内,单个客户与 Web 服务器的一连串相关的交互过程。在一个 session 中,客户可能会多次请求访问同一个网页,也有可能请求访问各种不同的服务器资源。

在 Servlet API 中定义了 javax.servlet.http.HttpSession 接口,Servlet 容器必须实现这个接口。当一个 session 开始时,Servlet 容器创建一个 HttpSession 对象,并同时在内存中为其开辟一个空间,在 HttpSession 对象中可以存放客户状态的信息(例如购物车)。Servlet容器为 HttpSession 分配一个唯一标识符,称为 SessionID。Servlet 容器把 SessionID 保存在客户的浏览器中。每次客户发出 HTTP 请求时,Servlet 容器可以从 HttpRequest 对象中读取SessionID,然后根据 SessionID 找到相应的 HttpSession 对象,从而获取客户的状态信息。

Session 的运行机制如下图所示。

HttpSession的使用,java,hive,hadoop,数据仓库

2 HttpSession 的创建与使用

(1)创建

Servlet 中的 HttpServletRequest 对象为我们提供了以下两种创建和获取 HttpSession 对象的方法:

HttpSession session=request.getSession(boolean value);

HttpSession session=request.getSession();

那么这两种方法有什么区别呢?

在第一种方法中,布尔值为 true 时,如果存在与当前请求关联的会话,就返回该会话。否则创建一个新的会话,并把该会话返回。布尔值为 false 时,如果存在与当前请求关联的会话,就返回该会话。否则返回 null,不再创建会话。

第二种方法等同于第一种方法中的布尔参数值为 true 时的情况。

(2)使用

在 javax.servlet.http.HttpSession 接口中定义的方法,我们常用的是有关进行数据存取的方法。

session.setAttribute(String name,Object value) ;

session.getAttribute(String name);

setAttribute(String name,Object value)是把一个对象 value 保存在 HttpSession 对象中,并为其指定引用名称为 name。当我们想使用已经存储在 session 中的数据时,我们可以使用 session.getAttribute(String name)方法,把数据取出来。其中 name 为我们在存入数据时,指定的引用名称。值得注意的是,session.getAttribute(String name)方法的返回值是 Object类型,所以在取出数据时,我们要对其进行数据类型转换,而且必须与我们存入的数据类型一致。如 String value=(String)session.getAttribute(String name);

3 HttpSession 对象的存在周期

3.1 HttpSession 对象的创建

当客户端浏览器第一次访问服务器时,服务器为每个浏览器创建不同的 HttpSession 对象。在服务器端使用 request.getSession()方法来获得 HttpSession 对象,并以此来使用HttpSession 接口为我们提供的方法。

3.2 HttpSession 对象的使用

在创建 HttpSession 对象后,使用该对象进行数据的存取,以进行数据的传递。在此过程中我们常用的方法如下。

(1)void setAttribute(String name,Object value ):进行数据的保存。

(2)Object getAttribute( String name):进行数据的读取。

3.3 HttpSession 对象的结束

在以下 3 种情况下,可以结束 session。

(1)关闭浏览器,关闭 session。

(2)调用 HttpSession 的 invalidate()方法,删除 HttpSession 对象和数据。

(3)两次访问时间间隔大于 session 定义的非活动时间间隔。

在 session 结束时,服务器会清空当前浏览器相关的数据信息。

4 HttpSession 实现新闻系统的用户登录

UserServlet 为处理用户注册以及登录的 Servlet,其代码如下:

package com.example.demo;

public class UserServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse
            response)throws ServletException, IOException {
        //设置编码格式 
        // response.setContentType("text/html;charset=UTF-8"); 
        // request.setCharacterEncoding("utf-8"); 
        //接收用户信息 
        String userName = request.getParameter("username");
        String password = request.getParameter("password");
        String email = request.getParameter("email");
        String method = request.getParameter("method");
        //调用 Service 方法进行业务逻辑处理 
        UserServiceImpl userService = new UserServiceImpl();
        UserDao userDao = new UserDaoImpl();
        userService.setUserDao(userDao);
        boolean bLogin = false;
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        if (method != null && method.equals("addUser")){
            user.setEmail(email);
            user.setUserType(Constants.USER_TYPE_COMMON);
            bLogin = userService.addUser(user);
        }else{
            bLogin = userService.isLogin(userName, password);
            System.out.println("blogin="+bLogin);
        }
        if (bLogin){
            request.getSession().setAttribute("admin",userName);
            request.getSession().setAttribute("user",user);
        }
        //响应页面 
        request.getRequestDispatcher("index.jsp").forward(request,response);
        // response.sendRedirect("index.jsp"); 
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse
            response) throws ServletException, IOException {
        doGet(request, response);
    }
}

HttpSession的使用,java,hive,hadoop,数据仓库

以上代码的黑体部分就是 HttpSession 的使用,用户登录成功后,将用户信息保存到会话中。文章来源地址https://www.toymoban.com/news/detail-810279.html

到了这里,关于HttpSession的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hive数据仓库工具

    1、hive是一套操作数据仓库的应用工具,通过这个工具可实现mapreduce的功能 2、hive的语言是hql[hive query language] 3、官网hive.apache.org 下载hive软件包地址  Welcome! - The Apache Software Foundation https://archive.apache.org/ 4、hive在管理数据时分为元数据和真数据,其中元数据要保存在数据库中

    2024年02月04日
    浏览(34)
  • Hive数据仓库

    数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。 数据仓库的目的是构建面相分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。 数据仓库本身并不“产生”任何数据,其数据来源不同外部系统; 同时数据仓库

    2024年02月15日
    浏览(39)
  • Hive数据仓库简介

    Hive起源于Facebook,Facebook公司有着大量的日志数据,而Hadoop是实现了MapReduce模式开源的分布式并行计算的框架,可轻松处理大规模数据。然而MapReduce程序对熟悉Java语言的工程师来说容易开发,但对于其他语言使用者则难度较大。因此Facebook开发团队想设计一种使用SQL语言对日

    2024年02月15日
    浏览(55)
  • 数据仓库 & Apache Hive

    目录 一、数据分析 1、数据仓库 1.1、数仓专注分析 1.2、数仓主要特征 1.3、数据仓库主流开发语言--SQL 2、Apache Hive 2.1、为什么使用Hive? 2.2、Hive和Hadoop关系 2.3、Hive架构图、各组件功能 2.4、Hive安装部署 2.4.1、Hive概念介绍 2.4.2、安装前准备     数据仓库 (英语:Data Warehous

    2024年01月22日
    浏览(46)
  • hive数据仓库课后答案

    一、 填空题 1.数据仓库的目的是构建面向     分析         的集成化数据环境。 2.Hive是基于     Hadoop         的一个数据仓库工具。 3.数据仓库分为3层,即      源数据层        、     数据应用层        和数据仓库层。 4.数据仓库层可以细分为      明细层

    2023年04月08日
    浏览(46)
  • 【Hive】——数据仓库

    数据仓库(data warehouse):是一个用于存储,分析,报告的数据系统 目的:是构建面向分析的集成化数据环境,分析结果为企业提供决策支持 特点: 数据仓库本身不产生任何数据,其数据来源于不同外部系统 数据仓库也不需要消费任何的书,其结果开放给各个外部应用使用

    2024年02月04日
    浏览(39)
  • Hive 数据仓库介绍

    目录 ​编辑 一、Hive 概述 1.1 Hive产生的原因 1.2 Hive是什么? 1.3 Hive 特点 1.4 Hive生态链关系 二、Hive架构 2.1 架构图 2.2 架构组件说明 2.2.1 Interface 2.2.1.1 CLI 2.2.1.2 JDBC/ODBC 2.2.1.3 WebUI 2.2.2 MetaData 2.2.3 MetaStore 2.2.4 Hiveserver2 2.2.5 Driver 2.2.5.1 解释器 2.2.5.2 编译器 2.2.5.3 优化器 2.2.5.4 执行

    2024年02月07日
    浏览(40)
  • 安装hive数据仓库

    需要安装部署完成的Hadoop的环境如果不会搭建的可以参考: 卸载Centos7自带的mariadb mariadb-libs-5.5.64-1.el7.x86_64是使用 rpm -qa|grep mariadb 查询出来的名称 安装mysql 安装mysql时可能会出现的问题 1、依赖检测失败 问题很明显了就是依赖的问题,下载他说的依赖就好了 安装hive 上传并且

    2024年02月14日
    浏览(50)
  • Hive数据仓库行转列

    查了很多资料发现网上很多文章都是转发和抄袭,有些问题。这里分享一个自己项目中使用的行转列例子,供大家参考。代码如下: 如果是在SparkSQL或Presto平台,或者阿里云的MaxCompute平台,还可使用如下方式:

    2024年02月21日
    浏览(54)
  • 数据仓库hive的安装说明

    1.按照下面语句顺序依次输入,安装mysql         $sudo apt-get install mysql-server         $sudo apt-get install mysql-client         $sudo apt-get install libmysqlclient-dev 2.连接MySQL数据库 (1)进入mysql         $sudo mysql -u root –p (2)使用mysql         use mysql; (3)修改mysql用户密

    2024年03月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包