计算机系统

一.session对象和application对象不同,application对象只有一个,它可以绑定若干个类似于全局变量的参数或者java对象,而session对象是系统为每一个登陆的用户创建的,是独一无二的,相当于局部参数或者Java对象。session是javax.servlet.http.HttpSession接口的实例对象。

page:当前页面,也就是只要挑到别的页面就失效了,可以近似理解为java的this对象

因此,session的方法就相当于是javax.servlet.http.HttpSession接口的方法。

request:一次会话,简单的理解就是一次请求范围内有效,例如如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值,再例如如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,request中的值会消失

二.获取session对象常用的方法

session:浏览器进程,只要当前页面没有被关闭(没有被浏览器强制清除),不管怎么跳转都是有效的(也可以说是存在一个会话周期中)

1)

application:服务器,只要服务器没有重启(没有被程序强制清除),数据就有效

使用session关键字直接引用session

pageScope.jsp

<%
session.Method();
%>

 

2)通过request对象的getSession方法,不过,这个获取的HttpSession对象不可以命名为request。

<%@ page language="java" contentType="text/html; charset=utf-8"

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
 HttpSession mysession=request.getSession(true);
 out.println(mysession.getId());
 out.println("<br>");
 out.println(session.getId());
%>
</body>
</html>  

    pageEncoding="utf-8"%>

3)使用pageContext对象的getSession()方法

<%@ page import="java.util."* %>

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
 HttpSession mysession=request.getSession();
 HttpSession mysession2=pageContext.getSession();
 out.println(mysession.getId()+"<br>");
 out.println(session.getId()+"<br>");
 out.println(mysession2.getId()+"<br>");
%>
</body>
</html>  

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

三.session的主要方法

<html>

1)getValue(String name)

<head>

有些类似于getAttribute(),可以通过putValue()存储变量的值,removeValue()删除变量。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<%
String username=(String)session.getValueNames("username");
Vector vector=(Vector)session.getValue("vector");
%>

<title>Insert title here</title>

2)getValueNames()

</head>

该方法可以返回和当前session绑定在一起的参数或者Java对象的名字,该方法返回的是一个字符串数组。

<body>

3)getCreationName()

<body>

该方法可以返回当前session对象创建的时间单位以毫秒作为单位,从1970年1月1日开始。

<%

4)getID()

//设置两个page范围的数据key->value

系统每生成一个session,都会赋予其一个ID,通过ID来鉴定不同的用户。

pageContext.setAttribute("name","page_barry");

5)getLastAccessedTime()

pageContext.setAttribute("age",21);

该方法返回当前session最后一次被操作的时间。

%>

6)getMaxInactiveInterval()

<%

该方法可以获得当前的session对象的最大休眠时间。

//取值

7)setMaxInactiveInterval()

String name=(String)pageContext.getAttribute("name");

设定最大的休眠时间,通常和getMaxInactiveInterval()搭配使用。

int age=(Integer)pageContext.getAttribute("age");

8)removeValue(String name)

%>

将某个参数或者Java对象和session解除绑定。

<font>姓 名:<%=name %></font>

9)invaliate()

<font>年 龄:<%=age %></font>

清除当前的session对象,将所有的参数或者Java对象与session解除绑定。

 

</body>

</html>

 

pageContext01.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<%@ page import="java.util."* %>

<%@ page errorPage="error.jsp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<%

pageContext.setAttribute("name0","pageInfo");

request.setAttribute("name1","requestInfo");

session.setAttribute("name2","sessionInfo");

application.setAttribute("name3","applicationInfo");

 

out.println("使用pageContext<br/>");

out.println("page中的属性值:"+pageContext.getAttribute("name0")+"<br/>");

out.println("request中的属性值:"+pageContext.getRequest().getAttribute("name1")+"<br/>");

out.println("session中的属性值:"+pageContext.getSession().getAttribute("name2")+"<br/>");

out.println("application中的属性值:"+pageContext.getServletContext().getAttribute("name3")+"<br/>");

%>

</body>

</html>

 

pageScope_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<%@ page import="java.util."* %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<body>

<%

//设置两个page范围的数据key->value

pageContext.setAttribute("name","page_barry");

pageContext.setAttribute("age",21);

%>

 

<jsp:forward page="pageTarget_2.jsp"></jsp:forward>

</body>

</html>

 

pageTarget_2.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<%@ page import="java.util."* %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<body>

 

<%

//取值

String name=(String)pageContext.getAttribute("name");

int age=(Integer)pageContext.getAttribute("age");

%>

<font>姓 名:<%=name %></font>

<font>年 龄:<%=age %></font>

 

</body>

</html>

 

requestScope.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//设置两个request范围的数据key->value

request.setAttribute("name","request_barry");

request.setAttribute("age",12);

%>

 

<jsp:forward page="requestTarget.jsp"></jsp:forward>

</body>

</html>

requestTarget.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

    pageEncoding="utf-8"%>

<%@ page import="java.util."* %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ";

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<%

//取值

String name=(String)request.getAttribute("name");

int age=(Integer)request.getAttribute("age");

//获取头信息

Enumeration enu=request.getHeaderNames();

while(enu.hasMoreElements()){

String headerName=(String)enu.nextElement();

其他新闻
  • AndroidStudio 本身就慢,启动时还自动打开上次的项目,然后如果不是自己要的项目,又得Close Project。 1、设置成Eclipse快捷键 设置成Eclipse快捷键 Settings -Keymap,在Keymaps下拉列表中选择...
    2020-01-17
  • Android 日期时间-new Date() 及其格式化、System.currentTimeMillis() Android 日期时间-new Date()的坑 Android 日期时间-Calendar 代替 new Date()仍有坑 Android日期时间-日期与字符串相互转换的坑 一、...
    2020-01-17
  • 程序在手机上调试运行成功,签名生成APK 也成功,但是在手机上安装居然失败。 android studio 升级2.3之后,签名打包需要选择Signature versions,如下图 原来签名时,Signature Versions 不能只...
    2020-01-17
友情链接

公司名称巴黎人电玩
版权所有:Copyright © 2015-2019 http://www.zhongqiangjy.com. 巴黎人电玩有限公司 版权所有

友情链接

Copyright © 2015-2019 http://www.zhongqiangjy.com. 巴黎人电玩有限公司 版权所有
公司地址http://www.zhongqiangjy.com