笔记-JavaWeb学习之旅12
会话技术
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的更多相关文章
- 笔记-JavaWeb学习之旅7
		
JavaScript基础 概念:一门客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎,是一个脚本语言,不需要编译,直接就可以被浏览器解析执行. JavaScript ...
 - 笔记-JavaWeb学习之旅5
		
CP30的演示 package cn.itcast.datasourcejdbc; import com.mchange.v2.c3p0.ComboPooledDataSource; import j ...
 - 笔记-JavaWeb学习之旅8
		
Window对象-定时器方法 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
 - 笔记-JavaWeb学习之旅19
		
Redis:redis是一款高性能的NOSQL系列的非关系型数据库 NOSQL: Not Only SQL ,意即"不仅仅是SQL",是一项全新的数据库理念,泛指非关系型数据库 r ...
 - 笔记-JavaWeb学习之旅18
		
AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和XML 异步和同步:客户端和服务器端相互通信的基础上 同步:客户端操作后必须等待服务器端的响应, ...
 - 笔记-JavaWeb学习之旅17
		
1.过滤选择器 首元素选择器:first 获得选择的元素中的第一个元素 尾元素选择器:last获得选择元素中的最后一个元素 非元素选择器:not(selector) 不包括指定内容的元素 偶数选择器: ...
 - 笔记-JavaWeb学习之旅16
		
增强对象的功能 动态代理:在内存中形成代理类 实现步骤: 代理对象和真实对象实现相同的接口 代理对象 = Proxy.newProxyInstance(); 使用代理对象调用真实对象的方法 增强方法 ...
 - 笔记-JavaWeb学习之旅15
		
Filter:过滤器 概念:当访问服务器的资源是,过滤器可以将请求拦截下来,完成一些特殊的功能 快速入门: 步骤: 定义一个类,实现接口Filter 复写方法 配置拦截路径 package com.d ...
 - 笔记-JavaWeb学习之旅14
		
JSTL:JavaServer Pages Tag Library JSP标准标签库 if标签 <%@ page import="java.util.ArrayList" % ...
 
随机推荐
- HTML 常用组件
			
1.下拉选择 <select id="select" name="select" class="form-control"> & ...
 - Java服务器端 API 错误码设计总结
			
1.对于API结果返回,定义BaseResult 类 拥有success,errorCode,errorMsg个3个基本参数,success使用Boolean类型,errorCode使用Integer ...
 - wireshark 学习 1
			
wireshark 调试WiFi 安装之后的启动脚步. #!/bin/bash iw dev mon0 del iw dev wlp3s0 interface add mon0 type monito ...
 - iOS反射机制:objc_property_t的使用
			
#import <objc/runtime.h> 需要导入这个头文件. 动态获取一个自定义类对象中的所有属性 - (NSDictionary *)allProperties { NSMut ...
 - Python类的特殊属性
			
Python中的特殊属性 定义如下类: class Foo(object): """Foo class definition""" 类的特殊 ...
 - codeforces   B. Ping-Pong (Easy Version)   解题报告
			
题目链接:http://codeforces.com/problemset/problem/320/B 题目意思:有两种操作:"1 x y" (x < y) 和 " ...
 - bzoj2132【圈地计划】
			
题面 思路: 一开始以为和为了博多一样,两边连一样的,后来发现中间连负边的话根本不会割,即割断两块收益为负,所以WA的起飞…… 正解是先黑白染色,每个点和它周围的点连边方式不同.对于黑点A,S--&g ...
 - spring配置数据库连接池
			
1. jdbcConfig.properties文件中 jdbc.jdbcUrl=jdbc:mysql:///ssm-crudjdbc.driverClass=com.mysql.jdbc.Drive ...
 - Vue.js style(内联样式)
			
Vue.js style(内联样式) 我们可以在 v-bind:style 直接设置样式: <div id="app"> <div v-bind:style=&q ...
 - Jmeter 在什么情况下定义多个thread group?
			
Jmeter里面有三种线程组:setUp thread group, TearDown thread group, thread group. 如果想定义100个用户登录系统,60个用户做A操作,40 ...