Context的内置对象session

概述


1、与Context(上下文)有关的内置对象包括session、application和pageContext;

(1)session对象表示浏览器与服务器的会话上下文环境

(2)application对象表示应用程序的上下文环境

(3)pageContext对象表示当前JSP页面上下文环境 

session对象

1、session对象即会话对象,表示浏览器与服务器之间的一次会话

☞一次会话的含义是:从客户端浏览器连接服务器开始,在关闭浏览器或主动退出后,绘会话结束。这个过程可以包含浏览器与服务器之间的多次请求与响应。

2、session对象的类型为javax.servlet.http.HttpSession,session对象具有HttpSession接口的所有方法,其常用方法如下:

☞void setAttribute(String name,Object value) 以名/值对的方式存储session域属

☞Object getAttribute(String name) 根据属性名获取属性值

☞void Invalidate()使session对象失效,释放所有的属性空间

注:考虑session本身的目的,通常应该把与用户会话状态相关的信息放入session范围内,而不要因一次请求资源间的信息传递就将信息放入session范围,这样会加大服务器端的开销;对于一次请求资源的信息传递,应该把该信息放入request范围内,然后通过请求转发实现,

实例演示 


 演示使用setAttribute()方法对用户登陆验证成功后的用户名进行保存;在重定向的用户页面中使用getAttribute()方法获取用户名;在用户界面中实现安全退出


login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//从请求属性erroMsg中获取错误信息
String error = (String)request.getAttribute("errorMsg");

if(error != null)
	out.print("<font color='red'>"+ error+"</font>");
%>
<form action="loginValidate.jsp" method="post">
	<p>用户名:<input name="username" type="text"/></p>
	<p>密&nbsp;&nbsp;码:<input name="password" type="password"/></p>
	<p><input name="submit" type="submit" value="登陆">
</form>
</body>
</html>

loginValidate.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
	//设置POST请求编码
	request.setCharacterEncoding("UTF-8");
	//获取请求参数
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	out.print(username);
	out.print(password);
	
	StringBuffer errorMsg = new StringBuffer();
	//参数信息验证
	if("".equals(username)){
		errorMsg.append("用户名不能为空!<br>");
	}
	if("".equals(password)){
		errorMsg.append("密码不能为空<br>");
	}else if(password.length() < 6 || password.length() > 12)
		errorMsg.append("密码长度在6-12位之间,<br>");
	//将错误信息爆保存在请求域属性errorMsg中
	request.setAttribute("errorMsg", errorMsg.toString());
	
	if(errorMsg.toString().equals("")){
		session.setAttribute("username", username);
		response.sendRedirect("main.jsp");
	}else{
%>
<jsp:forward page="login.jsp"></jsp:forward>
<%
	}
%>


</body>
</html>

main.jsp:

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%-- 
<%=session.getAttribute("username")%>
<a href="logout.jsp">安全退出</a>
</body>
</html>

logout.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.invalidate();
%>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_39021393/article/details/81144290