java--Cookie应用

来源:互联网 发布:威海手机数据恢复公司 编辑:程序博客网 时间:2024/05/29 02:17
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>Cookie/Session演示</title>  </head>  <body>    <h2>Cookie/Session演示</h2>    <h3>使用Cookie技术实现用户上次登录时间</h3>    <form action="<%=request.getContextPath() %>/servlet/loginServlet" method="post">        姓名:<input type="text" name="name"/><br/>        密码:<input type="password" name="pwd"/><br/>        <input type="submit" value="提交"/>    </form>    <font color="red" size="7"></font>    <h3>用Cookie记录最近访问过的信息</h3>    <a href="jsps/show.jsp">图片浏览</a>  </body></html>

用cookie记录上次访问的时间

package cn.hncu.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");        out.println("<HTML>");        out.println("  <HEAD><TITLE>回显登录时间</TITLE></HEAD>");        out.println("  <BODY>");        String name=request.getParameter("name");        String pwd=request.getParameter("pwd");        System.out.println("调用后台实现正常登陆功能:name:"+name+",pwd:"+pwd);        //实现显示用户上次登陆时间的功能        String showTime=func(request,response);        out.println(name+",您好,"+showTime);        out.println("  </BODY>");        out.println("</HTML>");        out.flush();        out.close();    }    //模块:实现显示用户上次登录的功能    private String func(HttpServletRequest request, HttpServletResponse response) {        //所获客户端的所有cookie        Cookie cs[]=request.getCookies();        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        String showTime="您这是第一次登录...";        if (cs!=null) {            for (Cookie c : cs) {                if(c.getName().equals("loginTime")){                    String tm=c.getValue();                    long t=Long.parseLong(tm);                    Date d=new Date(t);                    String time=sdf.format(d);                    showTime="您上次的登录时间为:"+time;                    System.out.println("上次登录时间:"+time);                    break;                }            }        }        //不管之前是否已经存在该cookie,都要重新添加一次,因为:若没有则要添加新的,若已有则要更新旧的(把新的登录时间记录进去)        //添加一个新的 或 修改旧的 用于记录当前登录时间的cookie---loginTime        Cookie coo=new Cookie("loginTime", ""+new Date().getTime());        coo.setMaxAge(60*60*24*30);//秒为单位   一月的有效期        //'/'==request.getContextPath()设置当前整个应用有效        coo.setPath("/");//一般设在项目根目录,这样项目内的所有servlet都可以访问,但其他项目不可以        response.addCookie(coo);//添加即是写到客户端        return showTime;    }}

这里写图片描述

这里写图片描述

这里写图片描述
用Cookie记录最近访问过的信息
需求:要求记录用户访问过的图片信息。
分析:
当用户点击一张图片时,通过Servlet向他显示图片。用户必须将要查看的图片ID或名称传到Serlvet。
在Serlvet中查询有没有用户查看过图片的Cookie信息,如果没有就创建一个新的,如果有就将本次查看的图片放到Cookie中。
在需要的页面上显示用户最近的访问记录。
实现:
Cookie c = new Cookie(“images”,img);
jsps/show.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>图片浏览</title>  </head>  <body>    <h4>最近浏览</h4>    <!-- 把ShowServlet记录到cookie中的浏览记录读取出来,并显示相应的图片 -->    <%        Cookie cs[]=request.getCookies();        String images=null;        if(cs!=null){            for(Cookie c:cs){                if(c.getName().equals("images")){                    images=c.getValue();                    break;                }            }        }        if(images!=null){            String imgs[]=images.split(",");            for(String img:imgs){    %>        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/<%=img%>"/>    <%            }        }     %>    <h1>图片浏览</h1>     <a href="<%=request.getContextPath()%>/servlet/show?img=1.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/1.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=2.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/2.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=3.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/3.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=4.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/4.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=5.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/5.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=6.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/6.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=7.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/7.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=8.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/8.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=9.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/9.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=10.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/10.jpg"/></a>     <a href="<%=request.getContextPath()%>/servlet/show?img=11.jpg">        <img width="100" height="100" src="<%=request.getContextPath()%>/imgs/11.jpg"/></a>  </body></html>
package cn.hncu.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ShowServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        doPost(request, response);    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        PrintWriter out = response.getWriter();        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");        out.println("<HTML>");        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");        out.println("  <BODY>");        out.println("<a href='"+request.getContextPath()+"/jsps/show.jsp'>返回</a><br/>");        String img=request.getParameter("img");        String html="<img src='"+request.getContextPath()+"/imgs/"+img+"'/>";        out.println(html);        //显示最近浏览的图片        //把浏览信息记录在cookie("images",imgs)中        //imgs="1.jpg,2.jpg";        Cookie cs[]=request.getCookies();        boolean boo=false;        if(cs!=null){            for(Cookie c:cs){                if(c.getName().equals("images")){//以前浏览的                    String imgs=c.getValue();                    //如果记录中已经存在该当前图片信息(之前浏览的)清除                    if (imgs.indexOf(img)>=0) {                        imgs = imgs.replace(img, "");                        if (imgs.indexOf(",") == 0) {//开始处有一个多余“,”号的情况                            imgs = imgs.substring(1);                        }else if (imgs.lastIndexOf(",") == imgs.length() - 1) {//最后处存在一个多余“,”号的情况                            imgs = imgs.substring(0, imgs.length() - 1);                        } else {//中间处有一个多余“,”号的情况                            imgs.replace(",,", ",");                        }                    }                    imgs=img+","+imgs;//更新浏览记录--把这次浏览的图片加到最前面                    //控制只保存最近浏览的3个                    if(imgs.split(",").length>3){                        imgs=imgs.substring(0,imgs.lastIndexOf(","));                    }                    //如果记录中已存在该当前图片信息                    c.setValue(imgs);//把更新浏的记录保存到c中                    c.setMaxAge(60*60*24*31);                    c.setPath("/");                    response.addCookie(c);                    boo=true;                    break;                }            }        }        if(!boo){            Cookie c=new Cookie("images", img);            c.setMaxAge(60*60*24*31);            c.setPath("/");            response.addCookie(c);        }        out.println("  </BODY>");        out.println("</HTML>");        out.flush();        out.close();    }}

这里写图片描述

这里写图片描述
配置文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  <display-name></display-name>  <servlet>    <servlet-name>LoginServlet</servlet-name>    <servlet-class>cn.hncu.servlet.LoginServlet</servlet-class>  </servlet>  <servlet>    <servlet-name>ShowServlet</servlet-name>    <servlet-class>cn.hncu.servlet.ShowServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LoginServlet</servlet-name>    <url-pattern>/servlet/loginServlet</url-pattern>  </servlet-mapping>  <servlet-mapping>    <servlet-name>ShowServlet</servlet-name>    <url-pattern>/servlet/show</url-pattern>  </servlet-mapping>      <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list></web-app>
0 0