Session是服务器临时建立的服务器保存用户信息一个对象。比如用户名,你的购物清单等。当用户购物时,用户的购物清单被放置在这个session中临时保存,当用户确认时,这些保存在session中的数据才被提交至数据库。session是由服务器自动建立的,有一个唯一的id,生命周期从用户打开浏览器访问服务器到到关闭浏览器离开服务器为止。
使用session最大的一个作用就是验证登陆,比如在welcom.jsp中就可以直接获得用户名等信息了。而且只要用户不关闭浏览器(可以关闭页面)这些信息就会一直存在,使用自己找个类来保存当然无法做到这一点。
<%@ page language="java" import="org.test.*" 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>
<h3>
session:<%=session.getId()%></h3>
</body>
</html>
只要你不关闭浏览器,仅仅是关闭页面不会造成session消失。
使用session的一个作用就是登陆验证。代码如下
Index.jsp:
<%@ page language="java" import="org.test.*" 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>
<form action="index.jsp" method="post">
姓名:<input type="text" name="username"><br>
年龄:<input type="text" name="userage"><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
<%
String username=request.getParameter("username");
String userage=request.getParameter("uerage");
if(username!=null&&username.equals("hello")&&userage!=null&&userage.equals("12345"))
{
session.setAttribute("username", username);
session.setAttribute("userage", userage);
%>
<h3>用户登录成功!</h3>
<%
}
else{
%>
<h3>用户登录失败</h3>
<%} %>
</body>
</html>
这里容易出现一个问题,就是:不是username!=null,而是等于空的字符串,等于空与等于空的字符串是不同的!
此外:
username.equals("hello")与"hello".equals(username)也是不同的。因为username可能是为空的,一旦为空就会出错,出现所谓的空指针异常。
正确的做法是:
<%@ page language="java" import="org.test.*" 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>
<form action="index.jsp" method="post">
姓名:<input type="text" name="username"><br>
年龄:<input type="text" name="userage"><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
<%
String username=request.getParameter("username");
String userage=request.getParameter("userage");
if(!"".equals(username)&&!"".equals(userage)){
if("hello".equals(username)&&"12345".equals(userage))
{
session.setAttribute("username", username);
session.setAttribute("userage", userage);
%>
<h3>用户登录成功!</h3>
<%
}}
else{
%>
<h3>用户登录失败</h3>
<% }%>
</body>
</html>
Welcome.Jsp:
<%@ page language="java" import="org.test.*" 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>
<%
if(session.getAttribute("username")!=null) {
%>
<h3>欢迎<%=session.getAttribute("username") %>进入本系统,点击这里可以<a href="logout.jsp">注销</a></h3>
<%}
else{
%>
<h3>您还没有登陆,点击这里<a href="index.jsp">登陆</a></h3>
<%} %>
</body>
</html>
Logout.Jsp:
<%@ page language="java" import="org.test.*" 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>
<%
if(session.getAttribute("username")!=null) {
session.invalidate();
%>
<h3>您已经注销</h3>
<%} %>
</body>
</html>