Cookie中图片的浏览记录与cookie读取servle时路径的设置(文字描述)
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>");
out.println("<hr/>");
String img = request.getParameter("img");//1.jpg
String html = "<img src='"+request.getContextPath()+"/imgs/"+img+"'/>";
out.println(html);
//显示最近浏览的图片
//把浏览信息记录在cookie("images",imgs)中
//imgs = "1.jpg,2.jpg,3.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 = imgs.replaceAll(",,", ",");
}
}
imgs = img+","+imgs;//更新浏览记录。把这次浏览的图片加到最前面
//控制只保存最近浏览的3个
if(imgs.split(",").length>3){
imgs = imgs.substring(0, imgs.lastIndexOf(","));
}
//把更新后的记录保存到c中
c.setValue(imgs);
c.setMaxAge(60*60*24*30);//30天
c.setPath("/");
response.addCookie(c);
boo = true;
break;
}
}
}
if(boo==false){//不存在图片记录的cookie,这是第一次访问,new一个cookie
Cookie c = new Cookie("images",img);
c.setMaxAge(60*60*24*30);//30天
c.setPath("/");
response.addCookie(c);
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
----------------------------------------------------------------------------------------------------------------------------------
<a href="jsps/show.jsp">利用cookie技术实现显示用户最近浏览的图片</a>
----------------------------------------------------------------------------------------------------------------------------------
<%@ 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>
<h2>图片浏览</h2>
<p>浏览过的图片</p>
<!-- 把ShowServlet记录到cookie中的浏览记录读取出来,并显示相应的图片 -->
<%
//jsp1: html+java
//jsp2: html+jstl+EL
String str=null;
Cookie cs[] = request.getCookies();
if(cs!=null){
for(Cookie c:cs ){
if(c.getName().equals("images")){
str = c.getValue();
break;
}
}
}
if(str!=null){
String strs[] = str.split(",");
for(String s:strs){//s=1.jpg
%>
<img width=50 height=50 src="<%=request.getContextPath()%>/imgs/<%=s%>"/>
<%
}
}
%>
<hr/>
<a href="<%=request.getContextPath()%>/ShowServlet?img=1.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/1.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=2.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/2.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=3.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/3.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=4.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/4.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=5.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/5.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=6.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/6.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=7.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/7.jpg"/>
</a>
<a href="<%=request.getContextPath()%>/ShowServlet?img=8.jpg">
<img width=100 height=100 src="<%=request.getContextPath()%>/imgs/8.jpg"/>
</a>
</body>
</html>
-------------------------------------------------------------------------------------------------------------------------------------------
------
<!--
cookie权限(相同路径可以读取。子路径的servlet可以读上级路径的cookie,反之不行!):
※说明: cookie的path(路径): 通过 coo.setPath()来设置的
servlet的路径: 在web.xml中用<url-pattern>来配置
1)可以读取---相同路径
cookie设置的path= reqeust.getContextPath() ---等价于“/”
读取cookie的servlet的路径: /
2)下面的也可以读---子路径的servlet 可以读 上级路径的cookie
cookie设置的path= reqeust.getContextPath() ---等价于“/”
读取cookie的servlet的路径: /servlet
3)下面的不可以读
cookie设置的path= reqeust.getContextPath()/servlet ---等价于“/servlet”
读取cookie的servlet的路径: /
-->
----------------------------------------------------------------------------------------------------------------------------
Cookie中图片的浏览记录与cookie读取servle时路径的设置(文字描述)的更多相关文章
- 用JS中的cookie实现商品的浏览记录
最近在做一个购物车效果,为了实现商品的浏览记录效果可是让我百般周折,避免以后忘记特写此随笔与大家共享,希望博友们看后有所收获. 第一步:在一个公用的js文件下getCookie(“liulan”),c ...
- js操作Cookie,实现历史浏览记录
/** * history_teacher.jsp中的js,最近浏览名师 * @version: 1.0 * @author: mingming */ $(function(){ getHistory ...
- Chrome 中删除单条浏览记录
悲伤...之前用非隐私窗口观看了小电影.于是打开 chrome://settings/ ...... 现在才知道 windows 上使用 shift + del 即可删除该浏览记录 ....... 以 ...
- if;脚本中退出语句:exit 数字,用$?查时为exit设置的数字,此数字为程序执行完后的返回数据,可以通过此方法自动设定
if [ 条件 ];then 代码 fi if [ 条件 ] then 代码 fi [root@localhost ~]# df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda5 % ...
- 使用cookie实现打印浏览记录的功能
可以用cookie知识来实现打印浏览记录.这里面用到的思路是将浏览记录以字符串的方式保存到cookie中,当浏览记录增加时,再将其转化为数组. $uri=$_SERVER['REQUEST_URI'] ...
- 使用modle1(jsp+javabeans)及cookie技术实现商品展示和浏览记录
步骤1:创建dbHelper工具类,该类主要用于获取数据库连接,采用单例模式. 步骤2:创建实体类商品类,商品表,在dao实现数据的封装处理. 步骤3:在jsp页面导入实体类,调用DAO的静态方案获取 ...
- 使用Cookie实现用户商品历史浏览记录
该功能分为四个模块: 1. 获取所有商品并以链接的形式显示 out.write("网站商品: <br/>"); Map<String, Book> book ...
- Cookie实现商品浏览记录--方式一:Java实现
方式一:Java代码方式实现:此种方式实现思路较为顺畅.难点在于,如何实现将最近浏览的产品显示在最前面:实现方式是借助LinkedList提供的remove()方法,先将此id从列表中移除,然后再借助 ...
- destoon系统开发-最新利用浏览器的cookie 做历史浏览记录
注意: 代码 放在要显示的为 (一般放在详情页),注意本教程不入库,直接利用浏览器的 cookie 缓存判断 <!--历史浏览记录 S--> <div class=&quo ...
随机推荐
- leetcode面试准备:Sliding Window Maximum
leetcode面试准备:Sliding Window Maximum 1 题目 Given an array nums, there is a sliding window of size k wh ...
- 【HDOJ】3509 Buge's Fibonacci Number Problem
快速矩阵幂,系数矩阵由多个二项分布组成.第1列是(0,(a+b)^k)第2列是(0,(a+b)^(k-1),0)第3列是(0,(a+b)^(k-2),0,0)以此类推. /* 3509 */ #inc ...
- dom操作之开关灯
<!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/h ...
- jQuery的几个Grid插件简单比较
目标:实现一个类似于Excel功能的Grid数据维护功能,并且就地编辑在乎的是Cell编辑而不是行编辑 候选者:easy-ui之datagrid, jqgrid, flexigrid 使用环境:jqu ...
- 使用 Windows PowerShell 管理Windows Azure映像
你可以使用 Azure PowerShell 模块中的 cmdlet 管理可供你的 Azure 订阅使用的映像.这包括 Azure 提供的映像以及你上载的映像.对于某些映像任务,你还可以使用 Azur ...
- ndk-gdb of NDK r9d modified to *always* debug the ":remote"-process of your app
https://gist.github.com/TomTasche/9690186 ndk-gdb of NDK r9d modified to *always* debug the ":r ...
- Codeforces Round #341 (Div. 2) ABCDE
http://www.cnblogs.com/wenruo/p/5176375.html A. Wet Shark and Odd and Even 题意:输入n个数,选择其中任意个数,使和最大且为奇 ...
- CodeForces 352D. Jeff and Furik
题意:给n个数,第一个人选取相邻两个递降的数交换顺序,第二个人一半的概率选取相邻两个递降的数交换顺序,一半的概率选取相邻两个递增的数交换顺序.两个人轮流操作,求整个数列变成递增数列所需交换次数的期望. ...
- mongodb集成spring
1:首先需要下载mongodb的java驱动包 https://github.com/mongodb/mongo-java-driver/downloads 2:需要下载spring集成mongodb ...
- NSDictionary或NSArray与JSON字符串相互转换
在iOS 5 中,苹果引入了一个解析JSON串的NSJSONSerialization类.通过该类,我们可以完成JSON数据与NSDictionary和NSArray之间的转化. 以前,我记得我用的是 ...