又是一个人的一天,老师今天打电话来说明天的组会不开了,反正也没打算去呢。老师问我什么时候回去,。。。。我什么时候回去啊,我也不知道啊。哎,不知道学什么好。
今天学了JAVA的servlet中的cookie,编写了一个浏览历史纪录的程序
有4个文件,一个对象类,一个处理类,一个servlet显示,一个增加cookie
//实体对象.java
package cn.cookieTest;
public class Entity {
private String Id;
private String Name;
private String Ttype;
private double Price;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getTtype() {
return Ttype;
}
public void setTtype(String ttype) {
Ttype = ttype;
}
public double getPrice() {
return Price;
}
public void setPrice(double price) {
Price = price;
}
@Override
public String toString() {
return "Entity [Id=" + Id + ", Name=" + Name + ", Ttype=" + Ttype + ", Price=" + Price + "]";
}
public Entity(String id, String name, String ttype, double price) {
super();
Id = id;
Name = name;
Ttype = ttype;
Price = price;
}
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public Entity() {
super();
// TODO Auto-generated constructor stub
}
}
//数据处理.java
package cn.cookieTest;
import java.util.ArrayList;
import java.util.List;
/***
* 存放对实体内容的CRUD
*
* @author reimu
*
*/
public class DAO {
/***
* 模拟数据库
*/
private static List<Entity> data=new ArrayList<Entity>();
//只执行一次
static{
for(int i=1;i<=10;i++){
data.add(new Entity(""+i,"sp"+i,"type"+i,i));
}
}
/***
* 提供查寻方法
*/
public Entity findById(String i){
for(Entity e:data){
if(e.getId().equals(i))
return e;
}
return null;
}
public List<Entity> findAll(){
return data;
}
}
//servlet显示.java
package cn.cookieTest;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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;
/**
* Servlet implementation class ListServlet
*/
@WebServlet("/ListServlet")
public class ListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ListServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
response.setContentType("text/html;charset=utf-8");
/**
* 模拟流量过的商品
*/
//
// Cookie cookie=new Cookie("hid", "3,2,1");
// response.addCookie(cookie);
DAO dao=new DAO();
List<Entity> list=dao.findAll();
//显示到屏幕上
PrintWriter writer = response.getWriter();
String str="";
for(Entity e:list){
str+=("<a href='"+request.getContextPath()+"/dataServlet?id="+e.getId()+"'>"+e.toString()+"</a>"+"</br>");
}
/***
* 最近浏览的商品
*
*/
str+="最近浏览的商品有:</br>";
String hid=" ";
Cookie[] cookies=request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
if(cookies[i].getName().equals("hid")){
hid=cookies[i].getValue();
String[] ids=hid.split(",");
//显示
for(String id:ids){
Entity et=dao.findById((id));
str+=("</br>"+et.toString());
}
}
}
writer.write(str);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
//增加cookie.java
package cn.cookieTest;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
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;
/**
* Servlet implementation class dataServlet
*/
@WebServlet("/dataServlet")
public class dataServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public dataServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
public String creatCookie(HttpServletRequest request,String id){
String hidval=null;
Cookie[] cookies = request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
if(cookies[i].getName().equals("hid")){
hidval=cookies[i].getValue();
break;
}
}
if(hidval==null){
return id;
}
//String->String[]->Collection
String[] str=hidval.split(",");
Collection cols=Arrays.asList(str);
//LinkedList 方便CRUD
LinkedList<String> ll=new LinkedList<>(cols);
//不超过3个
if(ll.size()<3){
if(ll.contains(id)){
ll.remove(id);
ll.addFirst(id);
}else{
ll.add(id);
}
}else{
if(ll.contains(id)){
ll.remove(id);
ll.addFirst(id);
}else{
ll.addFirst(id);
ll.removeLast();
}
}
StringBuffer sb=new StringBuffer();
for(String ob:ll){
sb.append(ob+",");
}
String s=sb.toString();
return s.substring(0, s.length()-1);
//return str;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
response.setContentType("text/html;charset=utf-8");
String id=request.getParameter("id");
Cookie c=new Cookie("hid", creatCookie(request, id));
c.setMaxAge(3600);
response.addCookie(c);
String str="<a href='"+request.getContextPath()+"/ListServlet'>点击返回</a>";
response.getWriter().write(str);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}