cookie
客户端请求,服务器给客户端的一个标记,数据存储在客户端
一个cookie只能存储一个消息,及一个键值对
一个服务器最多可以给一个浏览器发送300个cookie
package com.wang.CS;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
public class CookieDel extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//the tomcat give you a time tell that you have been here before
//solve the chinese messy code
resp.setContentType("utf-8");
//get the cookie
Cookie[] cookies= req.getCookies();
//determine the cookie whether exists or not
PrintWriter out =resp.getWriter();
if(cookies!=null)
{
out.write("you last access time");
for (int i=0;i< cookies.length;i++){
Cookie cookied=cookies[i];
if(cookied.getName().equals("lastlogintime")){
//let the attribute transform to the time-type
long lastlogintime=Long.parseLong(cookied.getValue());
Date date=new Date(lastlogintime);
out.write(date.toString()+"啥都不知道的时间");//pa
}
}
}
else {
out.write("This is you first time");
}
//server respond to the client
Cookie addc=new Cookie("lastlogintime",System.currentTimeMillis()+"");
//set cookie survival Time
addc.setMaxAge(60*60);
resp.addCookie(addc);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
这个问题乱码问题又出现了,这个问题一直都解决不了,吐血
乱码问题算是解决了,直接加一下几行代码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
删除cookie
关闭浏览器自动删除
有效期已过自动删除
后端设置手动删除(将有效期设置为0)
package com.wang.CS;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Cookiestu extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie=new Cookie("loginlastname",System.currentTimeMillis()+"");
cookie.setMaxAge(0);//instant overdue
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
session
服务器保存用户的相关信息,此信息保存在客户端
session的各种方法
一个简单的Session程序
package com.wang.CS;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
public class StSession extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
HttpSession session= req.getSession();
PrintWriter out=resp.getWriter();
if(session.isNew())
{
out.write("this is your first come"+session.getId());
}
else
out.write("你以前的sessionID"+session.getId());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
手动设置Session的时间:
<session-config>
<session-timeout>1</session-timeout>
</session-config>
Session与Cookie的区别
cookie 由浏览器保存,session由服务器创建由服务器保存
session重要的是可以存储一个对象,而cookie只能存储字符串