session 的工作原理以及使用细节和url编码
/**********************************************模拟页面************************************************************/
package session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SessionDemo1 extends HttpServlet {
//session底层封装了cookie所以,如果,浏览器禁用了cookie那么sessionID就没法带过去了
//解决的办法就是,通过超链接的形式将sessionId带过去,此时超链接的url地址要经过编码
//这样就保证,即使你把浏览器的cookie禁用掉,我也能将sessionId带过去
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//模拟这种场景
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;chatset=UTF-8");
PrintWriter out = response.getWriter();
request.getSession();
//对url进行编码
String url1 = response.encodeURL("/day07/SessionDemo2");
String url2 = response.encodeURL("/day07/SessionDemo3");
out.print("<a href='"+url1+"'>购物</a> ");
out.print("<a href='"+url2+"'>结帐</a>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
/********************************************************购买页面***************************************************************/
package session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionDemo2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;chatset=UTF-8");
HttpSession session = request.getSession();
session.setAttribute("good", "电视机");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
/*******************************************************8结帐页面******************************************************************/
package session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionDemo3 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;chatset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(false);
String value = (String) session.getAttribute("good");
out.print("您购买的商品是"+value);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
session 的工作原理以及使用细节和url编码的更多相关文章
- session的工作原理
asp中Session的工作原理:asp的Session是具有进程依赖性的.ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序.所以当inetinfo.exe进程崩溃 ...
- Cookie和Session的工作原理及比较
一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...
- session的工作原理、django的超时时间设置及session过期判断
1.session原理 cookie是保存在用户浏览器端的键值对 session是保存在服务器端的键值对 session服务端中存在的数据为: session = { 随机字符串1:{ 用户1的相关信 ...
- session 的工作原理
session.cookie_domain session.cookie_path session.name session.save_path session.use_cokies session_ ...
- session的工作原理与session用法
一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...
- 会话(cookie的使用,路径和Session的工作原理,使用)
1.状态管理----Cookie 1.1 为什么需要状态管理 HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就丢掉了. 如果用户发来一个新的请 ...
- Web的基本工作原理、HTTP协议和URL说明
Web工作原理 客户端和Web服务器通过HTTP协议进行通信.Web服务器有是也叫HTTP服务器或Web容器.HTTP协议采用的是请求/响应模式.即客户端发起HTTP请求,web服务器接收并解析处理H ...
- ???Struts2框架03 session的使用、登录逻辑【session工作原理】
1 登录逻辑 1.1 获取登录数据(例如:用户名.密码) 1.2 在控制层调用业务层来验证数据信息 1.3 登录成功:保存用户信息(服务器用session.浏览器用cookie),跳转到主页面 1.4 ...
- Session的生命周期和工作原理
一.什么是Session,如何使用?Session是用于存放用户与web服务器之间的会话,即服务器为客户端开辟的存储空间. 由于客户端与服务器之间的会话是无状态的机制,Session则可用于关联访问, ...
随机推荐
- BootLoader的一些知识
在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境.在嵌入 ...
- Program "D:\AndroidDevelopment\android-ndk-r9\ndk-build.cmd" not found in PATH
1.问题描述 2.解决方法:修改ndk-build.cmd的配置路径, 修改成本地ndk-build.cmd所在路径,如下
- (一)为什么要学习docker
一.docker的历史与现状 1.PAAS平台的范围和内容 1.确定产品定位和需求,确定首次迭代的范围. 2.制作界面原型. 以下是 paas 范畴 .技术选型,然后根据技术选型为每个开发者搭建开发环 ...
- 前端优化之Combo Handler
Combo Handler来合并CSS/JS文件 背景 Combo Handler是Yahoo!开发的一个Apache模块,它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件, ...
- KMP算法之我见
预备谈谈下面这些,可能有补充 KMP算法的用途: KMP算法之前的暴力: KMP算法预备知识与概念: KMP算法模板: KMP算法的习题. 1.KMP算法的用途: 主要用于模式匹配(字符串匹配).给定 ...
- 2016集训测试赛(二十一)Problem C: 虫子
题目大意 给你一棵树, 每个点有一个点权. 有两种操作: link / cut 修改某个点的点权 每次操作后, 你要输出以下答案: 在整棵树中任意选两个点, 这两个点的LCA的期望权值. Soluti ...
- CTAS都能带走源表的哪些属性
CREATE TABLE ... AS SELECT statement(CTAS):用CTAS语句可以根据一个存在的表创建一个新的表,而且能够根据对应的过滤条件将源表部分或者全部数据插入到新表当中. ...
- SecureCRT使用Ctrl+D快速关闭Tab
- Mac outlook设置自动回复
outlook是公司必不可少的软件, 在mac下开发,当然用的是mac版的outlook,今天介绍一下如何设置mac下outlook的自动回复. 有两种方式的帐号,一种是Exchange accoun ...
- 动态设置表格[GridView]在编辑时 只读。
找到GridView的CellEditorInitalize事件. protected void agv_main_CellEditorInitialize(object sender, ASPxGr ...