HttpSession

模拟购物车页面页面

package cn.soldier.session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
 * 模拟购物车页面页面
 * */
@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession();
        session.setAttribute("buy", "电视机");

        /*
         * encodeUrl
         *
         * 为url构造JSESESSIONID,防止用户禁用cookie后,session失效。
         * 第一次访问时encodeUrl会构造JSESESSIONID,
         *  当判断到用户浏览器没有禁用cookie会关闭构造JSESESSIONID
         */
        String url1 = response.encodeUrl("ServletDemo/sessionDemo1");
        String url2 = response.encodeUrl("ServletDemo/sessionDemo2");

        out.write("<a href=‘" + url1 + "‘>购买</a></br><a href=‘" + url2
                + "‘>结账</a>");

        // 使session失效
        /* session.invalidate(); */

    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);

    }
}

模拟结账页面

package cn.soldier.session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 模拟结账页面
 */
@WebServlet("/sessionDemo2")
public class SessionDemo2 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        HttpSession session = request.getSession();
        String sessionId = session.getId();
        //设置cookie 是为了防止浏览器关闭用户丢失Session。
        Cookie cookie = new Cookie("JSESESSIONID",sessionId);
        cookie.setPath("day07");
        cookie.setMaxAge(60*30);
        response.addCookie(cookie);

        String product = (String) session.getAttribute("buy");
        out.write("您购买了" + product+"<br />");

        String url1 =response.encodeUrl("ServletDemo/sessionDemo1");
        String url2 =response.encodeUrl("ServletDemo/sessionDemo2");

        out.write("<a href=‘"+url1+"‘>购买</a></br><a href=‘"+url2+"‘>结账</a>");

    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

    }
}
时间: 2024-08-28 01:22:58

HttpSession的相关文章

servlet的HttpSession与HibernateSession的区别

一.javax.servlet.http.HttpSession是一个抽象接口 它的产生:J2EE的Web程序在运行的时候,会给每一个新的访问者建立一个HttpSession,这个Session是用户身份的唯一表示.注意,是容器(Tomcat,Resin)自动创建的. 用途:存放这个用户的一些经常被用到的信息,例如:用户名,权限.例如在购物车程序里,存放用户买的商品. 销毁:一定时间(跟容器有关)内,用户无任何动作,session自动销毁. 得到的方法: HttpSession session

WebSocket之获取HttpSession

WebSocket之获取HttpSession 由于WebSocket与Http协议的不同,故在使用常用的HttpSession方面就存在了一些问题.通过google翻阅到了在onOpen方法下使用HttpSession的方法. 新建一个GetHttpSessionConfigurator类并继承Configurator类 package per.zww.web; import javax.servlet.http.HttpSession; import javax.websocket.Hand

HttpSession状态的转换

HttpSession状态的转换: [新建状态] ↓ ↓ 钝化(搁置) 第一次调用 ↓ 对用户来说是透明的 request.getSession() ↓ 1.当前管理的HttpSession对象太多 ↓ 2.某些HttpSession对象长时间没有用了 ↓ 3.服务器或应用重启或重新加载了 / 持久化生成的文件: ↓ / SESSIONS.ser [运行状态] ―――――――――――――――――――――――――――――――――> [持久化状态] ↓ <―――――――――――――――――――――

java使用websocket,并且获取HttpSession,源码分析

一:本文使用范围 此文不仅仅局限于spring boot,普通的spring工程,甚至是servlet工程,都是一样的,只不过配置一些监听器的方法不同而已. 本文经过作者实践,确认完美运行. 二:Spring boot使用websocket 2.1:依赖包 websocket本身是servlet容器所提供的服务,所以需要在web容器中运行,像我们所使用的tomcat,当然,spring boot中已经内嵌了tomcat. websocket遵循了javaee规范,所以需要引入javaee的包 <

客户端技术:Cookie 服务端技术:HttpSession

客户端技术:Cookie 服务端技术:HttpSession 07. 五 / android基础 / 没有评论 一.会话技术1.什么是会话:客户打开浏览器访问一个网站,访问完毕之后,关闭浏览器.这个过程称之为一个会话.就如同打电话.2.会话在编程中主要解决的问题是:保存各个用户的数据信息.3.保存用户各自数据的主要技术:客户端技术:Cookie服务端技术:HttpSession 二.Cookie1.获取Cookie采用request.getCookies()2.设置Cookie采用respons

The confusion about jsp four scopes and ServletContext,HttpSession,HttpServletReqest,PageContext

The jsp four scopes are same with ServletContext,HttpSession,HttpServletRequest,PageContext? How servlet is initialized by servlet container,is also order? In a jsp or servlet,getSession method  what can get, and how could put variable into scope(How

HttpSession详解

session的机制 http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现会话跟踪呢?session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端,通过SessionID来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为JSESSIONID的输出返回给客户端Cookie保存. 保存session id的几种方式 A.保存se

httpSession实现方式(摘取)

本文讨论的语境是java EE servlet. 我们都知道session的实现主要两种方式:cookie与url重写,而cookie是首选(默认)的方式,因为各种现代浏览器都默认开通cookie功能,但是每种浏览器也都有允许cookie失效的设置. 由于浏览器默认启动cookie功能,而且普通客户一般都不会取消cookie功能.久而久之,我们写代码的时候,也就不会在意session的具体实现,其实这里面还是有很多值得注意的地方,尤其在用户取消cookie功能的情况下. 一 servlet se

JSP中的 HttpSession、pageContext对象

pageContext 隐含对象对应javax.servlet.jsp.PageContext,都自动的被加入至pageContext中, 您可以由它来取得与JSP相关的对应之Servlet对象,像是getRequest()可以取得ServletRequest, getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等. 提供取得隐含物件对应之Servlet物件并不是pageContext的主要作用,它的主要功能在提供一个

Struts2中获取HttpServletRequest,HttpSession等的几种方式

转自:http://www.kaifajie.cn/struts/8944.html package com.log; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import o