会话技术

Cookie:客户端会话技术,将数据保存到客户端

package com.data.Cookie;

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 java.io.IOException; @WebServlet("/CookieDemo1")
public class CookieDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建Cookie对象
Cookie cookie = new Cookie("msg","hello");
//发送Cookie
response.addCookie(cookie);
//当访问CookieDemo1的Servlet的时候,会创建一个Cookie对象
//然后把绑定的数据发送给浏览器
}
}
package com.data.Cookie;

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 java.io.IOException; @WebServlet("/CookieDemo2")
public class CookieDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取Cookie
Cookie[] cs = request.getCookies();
if( cs != null){
//遍历cs,拿到每一个cookie对象
for(Cookie c : cs){
String name = c.getName();
String value = c.getValue();
System.out.println(name+":"+value);
}
} }
}
输出结果
msg:hello
Idea-a0bb733:23efa255-9ce7-42d9-8d0b-9853348226b8

会话技术原理分析

JSP

概念:Java Server Pages : java服务器端页面,可以理解为一个特殊的页面,其中既可以定义Html标签,又可以定义java代码

JSP的脚本:JSP定义代码的方式

1.<% 代码 %>: 定义的代码,在service方法中。

2.<%! 代码 %>:定义的java代码,在jsp转换后的java类的成员文字

3.<%+ 代码 %>:定义的java代码,会输出到页面上

会话技术_Session

概念:在服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession

package com.data.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
@WebServlet("/sessionDemo1")
public class SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取HttpSession对象
HttpSession session = req.getSession();
//当客户端关闭后,服务器不关闭,两次获取的session不是同一个对象
//如果需要相同,可以创建Cookie对象,设置id值,因为session的实现依赖于cookie,只要id值不变就是同一个对象
Cookie cookie = new Cookie("JSESSIONID",session.getId());//JSESSIONID=226E48B3AD9F203B2BCBFCA2E6EA5D71
cookie.setMaxAge(60*60);//一个小时内关闭客户端都是同一个对象,因为他们的ID值相同
resp.addCookie(cookie);
//在服务器端存储数据
session.setAttribute("msg","hello,Session");
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
package com.data.session;

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;
import java.io.IOException;
@WebServlet("/sessionDemo2")
public class SessionDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建对象
HttpSession session = req.getSession();
//通过键获取值
Object msg = session.getAttribute("msg");
System.out.println(msg);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}

session原理:Session的实现依赖于Cookie的,服务在一次会话范围内,多次获取的Session对象是同一个。

session细节

客户端关闭后,服务器不关闭,两次获取session不是同一个对象,如需相同,可以创建Cookie,设置属性。

客户端不关闭,服务器关闭后,两次获取的session不是同一个对象,

session在服务器被关闭时销毁,在调用invalidata()时也会销毁,默认失效时间是30分钟

session特点

session用于存储异常会话的多次请求数据,存在服务器端,session可以存储任意类型,任意大小的数据

session与cookie的区别:

session存储数据在服务器端,cookie在客户端

session没有数据大小限制,cookie有

session数据安全,cookie相对于不安全

验证码案列 写了4个小时 ,得到的结果500错误,尚没有找到bug,明天再看吧,

笔记-JavaWeb学习之旅12的更多相关文章

  1. 笔记-JavaWeb学习之旅7

    JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...

  2. 笔记-JavaWeb学习之旅5

    CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...

  3. 笔记-JavaWeb学习之旅8

    Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  4. 笔记-JavaWeb学习之旅19

    Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...

  5. 笔记-JavaWeb学习之旅18

    AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...

  6. 笔记-JavaWeb学习之旅17

    1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...

  7. 笔记-JavaWeb学习之旅16

    增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...

  8. 笔记-JavaWeb学习之旅15

    Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...

  9. 笔记-JavaWeb学习之旅14

    JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...

随机推荐

  1. 页面滚动tab监听

    页面 需求,顶部固定,左侧固定,右侧内容滚动 所以给右侧内容高度,内容里面滚动(使用固定定位的话,右侧内容总会给head部分遮挡,比较坑) 1.左侧是侧边栏,点击li,右侧内容显示当前 右侧内容滚动, ...

  2. bluebird-api简介及demo

    var Promise = require("bluebird"); var fs = require("fs"); //方法Promise化 var read ...

  3. [P2769] 猴子上树

    题目描述 在猴村有一条笔直的山路,这条山路很窄,宽度忽略不计.有 n只猴子正站在山路上静静地观望今天来参加比赛的各位同学.用一个正整数Xi表示第i只猴子所站位置,任意两只猴子的所站位置互不相同.在这条 ...

  4. qt使用中的一些问题(linux)

    ui_xxx.h的问题 工程中(工作空间)中包含的ui_xxx.h文件是系统自动生成的.这个是xxx.ui的创建文件来的,xxx.ui界面上的都是ui_xxx.h在控制的,在项目里是不显示这个头文件的 ...

  5. linux 脚本统计代码行数

    由于实际需求,需要统计开源产品的代码行数,so,以下命令统计*.c的行数. .h,.java  .同理 find . -name *.c|xargs wc -l

  6. Ext rowcontextmenu回调

    今天栽了大跟头,,,, EXT js右键可以获取到选中的那一列的索引值,只需在回调函数中取到那一列的数据就可以ok,不用再费尽心思的费用执行click的事件 grid.on("rowcont ...

  7. CentOS(Linux) - 安装软件笔记(总) - 开发环境安装顺序及汇总

    1.安装java环境 参考文章 CentOS7.1 使用资源搜集 2.需要可视化管理服务器时,需要先安装VPSmate 参考文章 CentOS(Linux) - 安装软件笔记(一) - VPSMate ...

  8. Dubbo与Zookeeper、SpringMVC整合与使用(干货-理论放一遍。。。还未完结!)

    Dubbo跟Zookeeper的简介分享两个不错的链接: Dubbo简介:http://shiyanjun.cn/archives/325.html Zookeeper简介:http://www.op ...

  9. JavaScript中浮点数的保留小数位数的问题

    方法一 简介:如题! 繁琐版... 代码如下: var significantFigure= function(value,figure){                 var arr=(valu ...

  10. Yii的缓存机制之片段缓存

      一.首先在main.php配置缓存组件 在components里面添加cache项.代码如下: // application components 'components'=>array( ...