Cookie
为什么要有这个Cookie
http的请求是无状态。 客户端与服务器在通讯的时候,是无状态的,其实就是客户端在第二次来访的时候,服务器根本就不知道这个客户端以前有没有来访问过。 为了更好的用户体验,更好的交互 (自动登录)。
Cookie cookie=new Cookie("username",username);
response.addCookie(cookie);
获取Cookie
Cookie[] coo=request.getCookies();
if(coo!=null)
{
for(Cookie c:coo)
{
System.out.println(c.getName()+"dd"+c.getValue());
}
}
//关闭浏览器后,cookie就没有了。 ---> 针对没有设置cookie的有效期。
// expiry: 有效 以秒计算。
//正值 : 表示 在这个数字过后,cookie将会失效。
//负值: 关闭浏览器,那么cookie就失效, 默认值是 -1
cookie.setMaxAge(60 * 60 * 24 * 7);
//赋值新的值
//cookie.setValue(newValue);
//用于指定只有请求了指定的域名,才会带上该cookie
cookie.setDomain(".itheima.com");
//只有访问该域名下的cookieDemo的这个路径地址才会带cookie
cookie.setPath("/CookieDemo");
通过Cookie获取上次登陆时间
//response.getWriter().append("Served at: ").append(request.getContextPath());
//System.out.println(request.getParameter("username"));
String name=getServletContext().getInitParameter("name");
//response.setCharacterEncoding("UTF-8");
//response.setHeader("Content-Type","text/html;charSet=UTF-8" );
response.setContentType("text/html;charSet=UTF-8");
//System.out.println(name);
Cookie[] coo=request.getCookies();
long lastTime=0;
if(coo!=null)
{
for(Cookie c:coo)
{
if(c.getName().equals("last"))
{
lastTime=Long.parseLong(c.getValue());
}
if(lastTime!=0)
{
//response.addCookie("last",System.currentTimeMillis()+"");
response.getWriter().write("最后一次登陆时间"+new Date(lastTime));
c.setValue((System.currentTimeMillis()+""));
response.addCookie(c);
}else
{
Cookie timeCokie=new Cookie("last",System.currentTimeMillis()+"");
response.addCookie(timeCokie);
}
System.out.println(c.getName()+"dd"+c.getValue());
}
}
if(name.equals("nie"))
{
//Connection con=JDBC.setConnetcion();
Driver driver = null;
Connection con = null;
Statement state = null;
ResultSet result = null;
try {
driver = new Driver();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
// 注册驱动
DriverManager.registerDriver(driver);
// 建立连接
con = DriverManager.getConnection("jdbc:mysql://localhost/store", "root", "sasa");
// 创建statement对象
state = con.createStatement();
// 执行查询
String username=request.getParameter("username");
String sql = "SELECT username,PASSWORD FROM USER";
result = state.executeQuery(sql);
Boolean foo=false;
while (result.next()) {
String names=result.getString("username");
if(names.equals(username))
{
System.out.println("success");
foo=true;
Cookie cookie=new Cookie("username",username);
cookie.setMaxAge(60);
response.addCookie(cookie);
//response.sendRedirect("FileDownLoad.html");
//request.getRequestDispatcher("FileDownLoad.html").forward(request, response);
break;
}
}
if(!foo)
{
System.out.println("faile");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (result != null) {
result.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (state != null) {
state.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (con != null) {
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Session
Session是基于Cookie的一种会话机制。 Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。 Session是,数据存放在服务器端。
//常用方法
//得到会话ID
String id = session.getId();
//存值
session.setAttribute(name, value);
//取值
session.getAttribute(name);
//移除值
session.removeAttribute(name);