您的位置:首页 > 编程语言 > Java开发

JavaWeb---Cookie---浏览图片---显示最近浏览图片

2016-09-09 12:39 465 查看
改程序实现的功能有:浏览服务器中的图片、点击看大图并记录、显示最近浏览的三张图片并且同一张图片连续浏览多次的不重复显示

如下:



servlet的入口在图片点击的超链接处,点击后进入servlet中查看大图并进行最近浏览的处理并保存到cookie中

这个程序很简单,里面的技术看上去很粗糙,图片的浏览也用了比较暴力的方式逐个访问的,如果图片较多那就显得太笨拙了,后面我还会讲,就不会用这个笨拙的方法了,还有就是在jsp中使用<%%>写java代码这种在以后是很少使用的,但是这个程序还是有值得学习的地方的

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>

<body>

<a href="jsps/show.jsp">看风景--利用Cookie技术显示用户最近浏览的若干个图片</a><br/>

</body>
</html>


show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<style type="text/css">
img{
border:0;
width:100;
height:90;
}
.img{
border:0;
width:50;
height:45;
}
</style>
</head>

<body>
<h1>看风景--利用Cookie技术显示用户最近浏览的若干个图片</h1>

<a href="show.jsp">看风景--利用Cookie技术显示用户最近浏览的若干个图片</a><br/>
<h3>最近浏览的图片</h3>
<%
String str=null;
Cookie cs[]=request.getCookies();
if (cs!=null){
for (Cookie c:cs){
if (c.getName().equals("recentImages")){
str=c.getValue();
break;
}
}
}
if (str!=null){
String strs[]=str.split(",");
for (String s:strs){
%>
<img class="img" src="<%=request.getContextPath()%>/imgs/<%=s %>">
<%
}
}
%>

<hr/>
<a href="<%=request.getContextPath()%>/showServlet?img=1.jpg">
<img src="<%=request.getContextPath()%>/imgs/1.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=2.jpg">
<img src="<%=request.getContextPath()%>/imgs/2.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=3.jpg">
<img src="<%=request.getContextPath()%>/imgs/3.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=4.jpg">
<img src="<%=request.getContextPath()%>/imgs/4.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=5.jpg">
<img src="<%=request.getContextPath()%>/imgs/5.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=6.jpg">
<img src="<%=request.getContextPath()%>/imgs/6.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=7.jpg">
<img src="<%=request.getContextPath()%>/imgs/7.jpg" />
</a>
<a href="<%=request.getContextPath()%>/showServlet?img=8.jpg">
<img src="<%=request.getContextPath()%>/imgs/8.jpg" />
</a>

</body>
</html>


ShowServlet.java
package cn.hncu.servlets;

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 {

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>");

String img=request.getParameter("img");
String htmlStr="<img src='"+request.getContextPath()+"/imgs/"+img+"'/>";
out.print(htmlStr);

//用Cookie记录用户访问过的图片信息
Cookie cs[]=request.getCookies();
boolean boo=false;
if (cs!=null){
for (Cookie cookie:cs){
if (cookie.getName().equals("recentImages")){
String imgs=cookie.getValue();
if (!imgs.substring(0, imgs.indexOf(",")).equals(img)){
imgs=img+","+imgs;
}
if (imgs.split(",").length>3){
imgs=imgs.substring(0, imgs.lastIndexOf(","));
}
cookie.setValue(imgs);
cookie.setMaxAge(60*60*24);
cookie.setPath("/");
response.addCookie(cookie);
boo=true;
break;
}
}
}
if (boo==false){//首次访问(浏览器中没有图片浏览的cookie)
Cookie c=new Cookie("recentImages", img);
c.setMaxAge(60*60*24);
c.setPath("/");
response.addCookie(c);
}

out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息