除了使用cookie记录用户信息,还会使用Session来记录,Session是运行在服务器端的,当客户在访问服务器的时候,服务器会把客户的信息通过Session记录在服务器上。
用javaWeb书中话就是:如果说cookie是通过检查客户端身上的通行证来确定用户身份,那么Session就是通过检查服务器上面的客户明细表来确定身份。Session相当于程序在服务器端为客户建了一份档案,存在客户明细表中。
Session就是Java 中的HttpSession类,每个用户就是一个Session 的对象。用户的所有信息都保存在这个Session 中,这个Session就是用户在第一次请求时在服务器端创建的,和cookie也是通过字典的方式存储用户信息的。
实现登陆信息代码:
session.jsp:
<%@page import="java.util.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.text.DateFormat"%>
<%@page import="com.session.Person" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
DateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd");
%>
<%
//保存三个数据信息
Person[] persons={
new Person("likang","123456",24,dateformat.parse("1992-01-11")),
new Person("liuming","123456",23,dateformat.parse("1993-02-22")),
new Person("liangxi","123456",21,dateformat.parse("1995-05-21")),
};
String message="";
if(request.getMethod().equals("POST")){
for(Person person:persons){
//如果用户名和密码都正确
if(person.getName().equalsIgnoreCase(request.getParameter("username"))&&person.getPassword().equals(request.getParameter("password"))){
//登陆成功,将用户信息和登陆时间保存在Session中
session.setAttribute("person", person);
session.setAttribute("logintime", new Date());
//跳转到欢迎页面
response.sendRedirect(request.getContextPath()+"/welcome.jsp");
return;
}
}
message="登陆失败";
}
%>
<!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>
<div align="center">
<fieldset>
<legend>登陆</legend>
<form action="session.jsp" method="post">
<table>
<tr>
<td>用户名:</td><td><input name="username" type="text"/></td>
</tr>
<tr>
<td>密码:</td><td><input name="password" type="password"/></td>
</tr>
<tr>
<td></td><td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</fieldset>
</div>
</body>
</html>
welcome.jp:
<%@page import="java.text.DateFormat"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@page import="com.session.Person" %>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%!
DateFormat datefotmat=new SimpleDateFormat("yyyy-MM-dd");
%>
<%
Person person=(Person)session.getAttribute("person");
Date logintime=(Date)session.getAttribute("logintime");
%>
<!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>
<fieldset><legend>个人信息</legend>
<table>
<tr>
<td>您的姓名:</td><td><%=person.getName() %></td>
</tr>
<tr>
<td>登陆时间::</td><td><%=logintime %></td>
</tr>
<tr>
<td>您的年龄:</td><td><%=person.getAge() %></td>
</tr>
<tr>
<td>您的生日:</td><td><%=person.getBrithday()%></td>
</tr>
</table>
</fieldset>
</body>
</html>
还有一个Person的实体类:
package com.session;
import java.util.Date;
public class Person {
private String name;
private String password;
private int age;
private Date brithday;
public Person(String name,String password,int age,Date brithday){
this.name=name;
this.age=age;
this.password=password;
this.brithday=brithday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBrithday() {
return brithday;
}
public void setBrithday(Date brithday) {
this.brithday = brithday;
}
}