动手学servlet(四) cookie和session

Cookie

  cookie是保存在客户端的一个“键值对”,用来存储用户的一些信息

   cookie的应用:

       -在电子商务会话中标识用户

       -对网站进行定制,比如你经常浏览哪些内容,就展示哪些页面给你

       -网站广告,比如百度联盟,你搜索了什么关键字,在各个网站就可以看到那个关键字的广告

  创建cookie

package servletdemo;import java.io.IOException;
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;/*** Servlet implementation class TestCookie*/
@WebServlet("/TestCookie")
public class TestCookie extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public TestCookie() {super();// TODO Auto-generated constructor stub
    }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub//构造函数第一个参数是key,第二个是valueCookie c=new Cookie("name", "henry");        //设置时间,最低级是秒,此处就是60秒乘以60,也就是一个小时c.setMaxAge(60*60);//将创建的cookie添加到客户端
        response.addCookie(c);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
        doGet(request, response);}}
代码

  获取cookie

package servletdemo;import java.io.IOException;
import java.util.Iterator;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;/*** Servlet implementation class TestGetCookie*/
@WebServlet("/TestGetCookie")
public class TestGetCookie extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public TestGetCookie() {super();// TODO Auto-generated constructor stub
    }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubCookie [] cookies=request.getCookies();if(cookies!=null){for(Cookie c:cookies){String name=c.getName();String value=c.getValue();System.out.println(name+":"+value);}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
        doGet(request, response);}}
代码

  运行结果

 

Session

  HTTP协议是无状态的,那么我们如何将对象数据持久化的保存呢,java有两个解决办法,一个是cookie,一个就是session,它是用来跟踪用户状态的一种机制,是针对浏览器和服务器的一对一关系

  Session接口HttpSession,通常我们会使用它,接口的实现由WEB容器来完成

  -可以从HttpServletRequest中获取HttpSession,request.getSession();返回一个HttpSession接口

  -将信息保存在HttpSession中,session.setAttribute("usersession",obj);

  -从HttpSession中获得信息,session.getAttribute("usersession");

  -使session失效,session.invalidate();

  创建session

package servletdemo;import java.io.IOException;
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;/*** Servlet implementation class SetSession*/
@WebServlet("/SetSession")
public class SetSession extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public SetSession() {super();// TODO Auto-generated constructor stub
    }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubHttpSession session=request.getSession();session.setAttribute("session_name", "session_value");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
        doGet(request, response);}}
代码

  获得session

package servletdemo;import java.io.IOException;
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;/*** Servlet implementation class GetSession*/
@WebServlet("/GetSession")
public class GetSession extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public GetSession() {super();// TODO Auto-generated constructor stub
    }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubHttpSession session=request.getSession();String value=(String)session.getAttribute("session_name");System.out.println("value:"+value);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub
        doGet(request, response);}}
代码

转载于:https://www.cnblogs.com/SamFlynn/p/4480202.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

16进制 转为图片 php_Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

前言近期做测试模拟器用到了hex-bytes-str之间的转换bcc码的校验,这里总结了一些方法。实例直接上代码转为十六进制(Hex)字符串def 执行代码:方法:getStringFromNumber(size,value)参数一为生成几个batys,参…

推荐一个国外SaaS产品-Olark

Olark www.olark.com 是国外非常出名的一个在线客服工具。 现在国内很多人创业失败的原因是:什么都想自己做,不利用现有资源,结果造成做出来的东西什么都有,什么都不好用。 我们应该好好学习国外的小团队,他们只做一件…

粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构

1 #include <stdio.h>2 #include <stdlib.h>3 #define N 54 /*N 假定数组长度为5*/5 typedef struct snode6 {7 int data;8 struct snode *next; 9 } SNODE;10 11 /*第一步&#xff0c;添加链表头信息*/12 SNODE *createhead(int a[])13 {14 SNODE *h,…

C# 淘宝商品微信返利助手开发-(二)返利助手开放文档以及帐号申请地址

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

比较难的sql面试题,令我比较郁闷!

一组通话记录&#xff08;总共500万条&#xff09;:ID 主叫号码 被叫号码 通话起始时间 通话结束时间 通话时长1 98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01 09:50:16.000 232 98290000 021546654666 2007-02-01 09:50:29.000 2007-02-01 09:5…

阿里云ESC服务器数据快速转移至轻量应用服务器

ECS服务器的换ECS的服务器已有的数据转换就很简单了&#xff0c;直接创建自定义镜像&#xff0c;创建完成后新服务器直接更换系统盘然后选择你创建的镜像就直接吧你的数据可软件一起直接移到新的ECS的服务器了 可是坑爹的是&#xff0c;新买的轻量应用服务器里面左找右找也找…

js udp通信_nodejs源码分析第十九章 -- udp模块

udp不是面向连接的协议&#xff0c;所以使用上会比tcp简单&#xff0c;他和tcp一样&#xff0c;使用四元组来标记通信的双方&#xff08;单播的情况下&#xff09;。我们看看udp作为服务器和客户端的时候的流程。1 在c语言中使用udp1.1 服务器流程&#xff08;伪代码&#xff0…

SVN 清理失败解决方案

SVN有时因各种不明原因导致清理失败&#xff0c;可以采取如下解决办法进行处理&#xff1a; 方法一&#xff1a; 删除根目录下隐藏文件夹“.svn” 然后在根目录文件夹 外面的空白处 检出。比如你项目文件夹名为“D:/source” 则svn检出时,在“source”外面的D盘(D:/) 空白处上右…

将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释

PD是一款不错的数据库设计工具&#xff0c;我们在项目开发的时候直接采用正向工程&#xff0c;设计好数据库后逆向将数据库导入PD中&#xff0c;并在PD中添加数据库字段的注释&#xff0c;便于新人的理解和学习&#xff0c;PD支持Oracle、SqlServer等数据库&#xff0c;是很强大…

腾讯微博Android客户端开发——自动获取验证码

上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的&#xff0c;使用该种方式能很容易的完成认证&#xff0c;但是该种方式有个弊端&#xff0c;也就是如果使用第三方的浏览器如UC、天天等&#xff0c;输入完QQ账号信息点击“授权”后并不能再次跳转到MainActivit…

put请求方式参数如何传_TP5请求(request)变量

可以通过Request对象完成全局输入变量的检测、获取和安全过滤&#xff0c;支持包括$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量&#xff0c;以及文件上传信息。检测变量是否设置可以使用has方法来检测一个变量参数是否设置&#xff0c;如下&…

python numpy的var std cov研究

var&#xff1a;表示方差&#xff0c; 即各项-均值的平方求和后再除以N &#xff0c; std&#xff1a;表示标准差&#xff0c;是var的平方根。 cov&#xff1a;协方差 ,与var类似&#xff0c;但是除以(N-1) import numpy as np# 构建测试数据&#xff0c;均值为10 sc [9.7, 10…

Vue手动封装实现一个五星评价得效果

我是歌谣 放弃很难 但是坚持一定很酷 微信公众号关注小歌谣 一起学习前后端知识 今天要说得是实现一个vue中实现五星评价得效果 简单来说 就是封装组件把 具体需要我们了解组件间得相互传值 数据绑定等知识 先用脚手架起个项目先 脚手架启动 ​ 安装依赖 包括 npm ins…

LetCode-MSSQL查找重复的电子邮箱

sql的题目如下所示&#xff0c;查询出重复的电子邮箱 解法(1):查询出查询出Email相等 Id不相同的数据具体语句如下所示: select a.Email from Person as a,Person as b where a.Emailb.Email and a.Id!b.Id此时我们可以看到我们的语句中输出了2次结果但是预期结果只输出了1次…

鸿蒙内核是闭源吗_鸿蒙出世,中华有为!

作者&#xff1a;飞翔吧&#xff01;橙哥转载授权(文末留言&#xff0c;或添加微信&#xff1a;mzy2117)8月9日&#xff0c;超强台风“利奇马”登陆中国。当沿海各地的人们都在琢磨下班如何回家的时候&#xff0c;在广东东莞举行的华为2019年开发者大会上&#xff0c;华为正式发…

oracle 添加字段

alter table 表名 add 新增字段名(类型长度);#添加字段alter table asset_orders add remark varchar2(255);#查看describe asset_orders;转载于:https://www.cnblogs.com/zhaojingyu/p/11236747.html

儿童学文字编程python_手把手教你python数字知识

上篇文章讲述了python的数据类型。 我们先回顾一下&#xff1a;包括&#xff1a;数字&#xff0c;字符串&#xff0c;列表&#xff0c;元组&#xff0c;字典。接下来我们详细的介绍这几种类型。 今天要说的是关于数字的教程。 说到数字&#xff0c;可能你的头脑里首先会反应出&…

LetCode-MSSQL超过5名学生的课

此图关键在于去重后使用having count查询出大于5的值 select class from courses group by class having count(distinct student) > 5;

在laravel5.8中集成swoole组件----初步测试

铺垫前提是先安装swoole组件&#xff0c;我采用从pecl-----php扩展组件网下载swoole扩展包&#xff0c;然后切入到解压缩的扩展包中运行phpize命令&#xff0c; phpize是一种编译命令&#xff0c;可以在安装文件中生成configure文件&#xff0c;从而方便我们编译安装&#xff0…