笔记-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" % ...
随机推荐
- 在VC++空工程中使用MFC类,采用Unicode字符集后,运行工程程序报错的解决方案
创建一个VC++空工程,将Project Properties->General->Use of MFC改为Use MFC in a Shared DLL 新建一个源文件,内容如下 #in ...
- [自动化平台系列] - 初次使用 Macaca-前端自动化测试(2)
接一下来讲一讲api的使用 http://macacajs.github.io/macaca-wd/api/ var _config = { //本程序的host host: 'http://te ...
- 1 Maven简介
一.构建(build) 清理.编译.测试.打包.部署等一系列操作. 二.maven介绍: maven是一个强大的构建工具,能够帮助我们自动化构建过程:从清理(clean).编译(com ...
- vim实现代码缩进和可视区域的字符串替换
今天2014年9月12号,实现了vim下的代码自动缩进和替换可视区域的字符串,之前一直在用vim这个强大的编辑器,它的强大只有用了的人才知道,现在把这两个很强大的功能展示出来,有个这两个功能,即使你写 ...
- POj 3253 Fence Repair(修农场栅栏,锯木板)(小根堆 + 哈弗曼建树得最小权值思想 )
Fence Repair Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 28359 Accepted: 9213 Des ...
- Codeforces Round #369 (Div. 2) D. Directed Roads —— DFS找环 + 快速幂
题目链接:http://codeforces.com/problemset/problem/711/D D. Directed Roads time limit per test 2 seconds ...
- fatal error C1902: 程序数据库管理器不匹配;请检查安装解决
http://blog.sina.com.cn/s/blog_9f4bc8e301015uhz.html 1.错误提示:VS2008编译错误fatal error C1902: 程序数据库管理器不匹配 ...
- 【Selenium】跳转问题
/** * rewrite the get method, adding user defined log</BR> * 地址跳转方法,使用WebDriver原生get方法,加入失败重试的 ...
- kallsyms
kallsyms 在v2.6.0的内核中,为了更好地调试内核,引入新的功能kallsyms.kallsyms把内核用到的所有函数地址和名称连接进内核文件,当内核启动后,同时加载到内存中.
- vue-cli脚手架搭建Vue.js项目
前提条件: 一.node.js 下载 https://nodejs.org/zh-cn/download/ 二.webpack 安装 npm install webpack -g PS:-g 就是 ...