java用servlet、cookie实现一个阅读记录

效果如图


代码1

package com.xiaostudy.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Cookie_1")
public class Cookie_1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		response.setContentType("text/html;charset=UTF-8");
		
		out.print("<a href=" + request.getContextPath() + "/Cookie_2?book=java>java</a><br/>");
		out.print("<a href=" + request.getContextPath() + "/Cookie_2?book=python>python</a><br/>");
		out.print("<a href=" + request.getContextPath() + "/Cookie_2?book=c#>c#</a><br/>");
		out.print("<a href=" + request.getContextPath() + "/Cookie_2?book=php>php</a><br/>");
		out.print("<hr/>");
		Cookie[] cookies = request.getCookies();//获取cookie集合
		for(int i=0; cookies!=null && i<cookies.length; i++) {//循环cookie集合
			if("book".equals(cookies[i].getName())) {//判断cookie是否有自己存放的name和value
				String[] books = cookies[i].getValue().split("-");//拿到所有的点击value集合
				for(int j=0; j<books.length; j++) {//循环输出显示
					out.print(books[j] + "<br/>");
				}
			}
		}
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

代码2

package com.xiaostudy.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Cookie_2")
public class Cookie_2 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out = response.getWriter();
		String book = (String)request.getParameter("book");
		String str = book;
		Cookie[] cookies = request.getCookies();//得到cookie的集合数组
		for(int i=0; cookies!=null && i<cookies.length; i++) {//循环cookie
			if("book".equals(cookies[i].getName())) {//看看以前有没有放过
				String[] books = cookies[i].getValue().split("-");//做切割
				for(int j=0; j<books.length; j++) {//循环元素
					if(!book.equals(books[j])) {//排除已经点击过的
						str = str + "-" + books[j];
					}
				}
			}
		}
		Cookie ck = new Cookie("book", str);//创建一个cookie,并且添加name和value
		ck.setPath("/");//说明为当前的应用
		ck.setMaxAge(5);//保存cookie的时间,单位为秒
		response.addCookie(ck);//服务器向浏览器添加cookie
		out.print("成功添加书籍:" + book + "<br/>2秒后返回主页。。。");//输出到浏览器的信息
		
		//响应消息头,2秒后跳转到指定页面
		response.setHeader("refresh", "2;url=" + request.getContextPath() + "/Cookie_1");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

猜你喜欢

转载自www.cnblogs.com/xiaostudy/p/9362485.html
今日推荐