创建cookieLoginTime继承HttpServlet
重写doGet,doPost方法就不再赘述,我们的侧重点是在使用cookie记录信息
cookie是由一个个的键值对组成,就类似哈希,或者数组(一个下标对一个数据)
cookie无法直接搜索到name就直接删除,操作cookie只是添加和修改倒是问题不大
我先简单写一下doget和dopost
然后去web.xml里定义映射
然后开始写doget的细节
几个问题:1乱码,2cookie的value增加
乱码在前面加
resp.setHeader("Content-Type", "text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");
若果不设置cookie的path,则名字相同的cookie视为相同的cookie,后面的覆盖前面的,注意:大小写敏感
参考:https://blog.csdn.net/czh500/article/details/80420061
所以我们可以用这个特点获取然后添加cookie
package top.sehnsucht;
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 cookieLoginTime extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("Content-Type", "text/html;charset=UTF-8");
req.setCharacterEncoding("UTF-8");
cookie[] cookies = req.getcookies();
for (cookie cookie : cookies) {
if ("time".equals(cookie.getName())) {
int time = Integer.parseInt(cookie.getValue()) + 1;
resp.getWriter().println("这是您第" + time + "次访问本站");
resp.addcookie(new cookie(cookie.getName(), Integer.toString(time)));
return;
}
}
cookie cookie = new cookie("time", "1");
resp.getWriter().println("这是您第" + cookie.getValue() + "次访问本站");
resp.addcookie(cookie);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
web.xml
Archetype Created Web Application hello top.sehnsucht.HelloServlet hello /hello loginTime top.sehnsucht.cookieLoginTime loginTime /time



