Cookie简单例子,以及请求转发乱码处理
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.URLDecoder;
import java.net.URLEncoder;
import java.util.Date;
public class CookoeDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//请求响应编码
resp.setContentType("text/html");
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter out = resp.getWriter();
Cookie[] cookies = req.getCookies();
if(cookies!=null){
out.write("你上次访问的时间是:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if(cookie.getName().equals("lasttime")){
long l = Long.parseLong(cookie.getValue());
Date date = new Date(l);
out.write(URLDecoder.decode(date.toLocaleString()));
}
}
}else {
out.write("这是你第一次访问!");
}
//获得cookie解决cookie乱码
Cookie cookie = new Cookie("lasttime", URLEncoder.encode(System.currentTimeMillis()+"","UTF-8"));
resp.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
运行后发现界面乱码,添加request和response编码格式
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
发现依旧乱码,于是解决cookie乱码,利用URLEncoder.encode和URLDecoder.decode进行转码和解码运行后发现依旧乱码
于是想到添加响应头
resp.setContentType("text/html");
完美解决。