这里我们是在servlet中实现的,客户端也是servlet
下面客户端,我们有一个简单的登陆界面。
我们会在登陆一次后接收到服务器端传来的cookie。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String v = "";
String checked = "";
Cookie[] cks = request.getCookies();
if(cks!=null)
{
for(int i=0;i<cks.length;i++){
if("uName".equals(cks[i].getName())){
v = cks[i].getValue();
checked="checked=checked";
}
}
}
out.println("<form action='/day35_cookie/servlet/dologin' method='post'>");
out.println("用户名:<input type='text' name='username' value='"+v+"'>");
out.println("密码:<input type='password' name='pwd'>");
out.println("记住用户名:<input type='checkbox' name='rem' "+checked+">");
out.println("<input type='submit' value='登陆'>");
out.println("</form>");
}
下面我们在看一下服务器端是如何实现的
我们接收到客户端传过来的数据,然后为用户名穿件cookie,但是其生命周期我们需要看其是否选择了记住用户名。
当用户选择了记住用户名那么我们就将cookie的存活时间蛇者为最大,否则设置为立即销毁。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String name = request.getParameter("username");
String pass = request.getParameter("pwd");
String rem = request.getParameter("rem");
Cookie cookie = new Cookie("uName",name);
cookie.setPath(request.getContextPath());
if("admin".equals(name) && "123".equals(pass))
{
//复选框被选中
if(rem!=null){
cookie.setMaxAge(Integer.MAX_VALUE);
}
else
cookie.setMaxAge(0);
response.addCookie(cookie);
out.println("<h2>登陆成功<h2>");
}
else
{
out.println("用户名或密码错误,3秒后回到登陆页面");
response.setHeader("refresh", "3;url='"+request.getContextPath()+"/servlet/login'");
}
}