您的位置:首页 > 编程语言 > Java开发

javaweb之Session简单例子(两个页面一个存数据,一个取数据)和session的一些基本内容

2014-03-10 09:21 627 查看
package test.session;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

//购买servlet
public class SessionDemo1 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
String sessionId = session.getId();
// 将回写给浏览器的Cookie覆盖,设置上有效期,那么这个session也就有有效期了
Cookie cookie = new Cookie("JSESSIONID", sessionId);
cookie.setPath("/day07");
// 设置有效期为30分钟
cookie.setMaxAge(60 * 30);
response.addCookie(cookie);

session.setAttribute("name", "洗衣机");

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}
package test.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;

//结账servelt
public class SessionDemo2 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-type", "text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

HttpSession session = request.getSession();
String product = (String) session.getAttribute("name");
out.print("您购买的商品是:" + product);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}
// 第一次执行getSession创建Session
// 关闭浏览器后sesson没死,三十分钟没人用才死
// session也是服务器中的web资源,session的配置要在web.xml中配置
/*
* 配置session60分钟没人用摧毁 <session-config> <session-timeout>60</session-timeout>
* </session-config>
*/
// 程序中摧毁session session.invalidate();
/*
* request.getSession(false);不创建session,只获取session,性能稍微高点,这个在购买的时候用,比如用户购买用的request
* .getSession();这个得到session
* 但是到购物车查看就不要重新创建session了,直接request.getSession(false);
* ,如果用request.getSession();的话,用户直接点购物车也会创建session
*/
// session是基于cookie的。服务器为浏览器创建的session的id,会通过cookie回写给浏览器,这个cookie是没有设置有效期的,浏览器一关就失效了
// 设置session的有效期,就是设置回写给浏览器的cookie的有效期。这个Cookie叫JSESSIONID
// 没有设置有效期的时候打开浏览器做一些session操作,然后重开一个浏览器 拿到的session是没有原来的操作的
// 没有设置有效期的session,也就是浏览器进程的session,在浏览器中新开选项卡和基于本浏览器打开新的浏览器是一个窗口(根据不同浏览器而言是不同的IE7打开两个窗口session的id是不同的,IE8打开两个窗口session的id就相同)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>

<body>
<a href="/day07/servlet/SessionDemo1">购买</a>
<a href="/day07/servlet/SessionDemo2">结账</a>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐