void session.invalidate();对整个session进行注销操作
session.removeAttribute(“要去除元素”);去除session中的特定元素
String getId(); 获取sessionId
示例代码:
a、login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname"><br/>
密码:<input type="password" name="upwd"><br/>
<input type="submit" value="登陆"><br/>
</form>
</body>
</html>
b、check.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String uname=request.getParameter("uname");
String upwd=request.getParameter("upwd");
if(uname.equals("wsy")&&upwd.equals("123")){
//登录成功
//session是内置对象,因此不需要new实例化
//只有登陆成功,才能将用户名和密码放入session
session.setAttribute("uname",uname);
session.setAttribute("upwd",upwd);
//跳转到服务台,打印sessionId
System.out.println("sessionId:"+session.getId());
//服务端产生Cookie,并且发送给客户端
Cookie cookie=new Cookie(uname,"uname");
response.addCookie(cookie);
//登陆成功,跳转到欢迎页面
//request.getRequestDispatcher("请求转发页面").forward(request,response);
request.getRequestDispatcher("welcome.jsp").forward(request,response);
}
else{
//登录失败重新登录(重定向)
response.sendRedirect("login.jsp");
}
%>
</body>
</html>
c、welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎您:
<%
//将session中的uname取出
String name=(String)session.getAttribute("uname");
if(name==null){
//未经登录就进入
response.sendRedirect("login.jsp");
}
else{
out.print(name);
%>
<a href="invalidate.jsp">注销</a>
<%
}
%>
</body>
</html>
d、invalidate.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//对整个session进行注销操作
session.invalidate();
//session.removeAttribute("uname"); 移除session中的某个元素信息
//注销后返回登录页面
response.sendRedirect("login.jsp");
%>
</body>
</html>
e、a.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//客户端
out.print(session.getAttribute("uname"));
//取得Cookie
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
if(cookie.getName().equals("JSESSIONID")){
System.out.println("JSESSIONID:"+cookie.getValue());
}
}
%>
</body>
</html>
cookie和session的区别
1、保存的位置
cookie:客户端
session:服务端
2、安全性
相对来说,服务器(session)比本地(cookie)安全
3、保存内容
cookie:key和value都是String类型的
session:key是String类型,value是Object类型
4、内置对象
cookie:不是内置对象!需要new
session:内置对象
JSP九大内置对象:
request 请求对象
response 响应对象
session 会话对象
application 全局对象
pageContext JSP页面容器
config 配置对象(服务器配置信息)
out 输出对象
page 当前JSP页面对象(相当于java中的this)
exception 异常对象
application 全局对象
String getContextPath(); 获取虚拟路径
String getRealPath(); 获取绝对路径(虚拟路径相对的绝对路径)