Cookie小案例(2)

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;

import java.util.List;

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 CookieDemo4 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

//根据用户带过来的id,显示相应的详细信息

response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String id=request.getParameter("id");
Book book=(Book)Db.getAll().get(id);
out.write(book.getId()+"<br/>");
out.write(book.getName()+"<br/>");
out.write(book.getAuthor()+"<br/>");
out.write(book.getDescription()+"<br/>");
//2.构建cookie,回写给浏览器;
String cookieValue=buildCookie(id,request);
Cookie cookie=new Cookie("bookHistory",cookieValue);
cookie.setMaxAge(1*30*24*3600);//1 个月
cookie.setPath("/day07");
response.addCookie(cookie);
}
private String buildCookie(String id, HttpServletRequest request) {
//bookHistory =null   1    1
//bookHistory=2,5,1   1    1,2,5
//bookHistory=2,5,4   1    1,2,5
//bookHistroy=2,5     1    1,2,5   // 假如列表最多3个
String bookHistroy=null;
Cookie cookies[]=request.getCookies();
for(int i=0;cookies!=null && i<cookies.length;i++){
if(cookies[i].getName().equals("bookHistory")){
bookHistroy=cookies[i].getValue();
}
}
if(bookHistroy==null)
return id;
//if(bookHistroy.contains(id))不能这样  21,23 也包括1
List<String> list=Arrays.asList(bookHistroy.split("\\,"));
LinkedList <String>linkedlist=new LinkedList<String>(list);
if(list.contains(id)){
linkedlist.remove(id);
linkedlist.addFirst(id);
}else{
if(list.size()>=3){
linkedlist.removeLast();
linkedlist.addFirst(id);
}else
linkedlist.addFirst(id);
}
StringBuffer sb=new StringBuffer();
for(String bid : linkedlist){
sb.append(bid+",");
}
return sb.deleteCharAt(sb.length()-1).toString();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wkhtmltopdf是一个开源的HTML到PDF转换器,它可以通过命令行工具在Linux、Windows和Mac OS X上运行。在使用wkhtmltopdf的过程中,我们有时需要在请求HTML页面的时候带上cookie,以便获取页面的权限或者获取登录后的数据。下面是一个完整的案例,演示如何在使用wkhtmltopdf的时候带上cookie。 1.安装wkhtmltopdf 在使用wkhtmltopdf之前,我们需要先安装它。wkhtmltopdf官网提供了各个平台下的安装包,可以直接下载安装。你也可以通过包管理工具进行安装,比如在Ubuntu上可以通过以下命令安装: ``` sudo apt-get install wkhtmltopdf ``` 2.创建一个测试的HTML页面 在本地创建一个测试的HTML页面,可以用任何文本编辑器创建一个名为`test.html`的文件,内容可以是任意的HTML代码,比如: ``` <!DOCTYPE html> <html> <head> <title>Test Page</title> </head> <body> <h1>Hello, World!</h1> </body> </html> ``` 3.设置cookie 假设我们需要在请求`test.html`页面的时候带上一个名为`auth_token`的cookie,那么我们可以通过以下命令将cookie保存到一个名为`cookie.txt`的文件中: ``` echo "auth_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" > cookie.txt ``` 在这里我们将`auth_token`的值设置为`XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,你需要将其替换成你自己的值。 4.使用wkhtmltopdf生成PDF文件 现在我们可以使用wkhtmltopdf来生成PDF文件了,需要使用的命令行参数有两个:`--cookie-jar`和`--cookie`。`--cookie-jar`用于指定cookie文件的路径,`--cookie`用于指定需要传递的cookie,格式为`name value`,其中`name`是cookie的名称,`value`是cookie的值。 以下是生成PDF文件的命令: ``` wkhtmltopdf --cookie-jar cookie.txt --cookie auth_token XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX test.html test.pdf ``` 其中`XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`为你设置的`auth_token`值。这个命令将使用`cookie.txt`文件中的cookie,并将生成的PDF文件保存为`test.pdf`。 5.验证PDF文件 现在可以使用PDF阅读器打开`test.pdf`文件,验证是否成功生成。如果一切正常,你应该可以看到一个包含`Hello, World!`标题的PDF文件。 以上就是使用wkhtmltopdf带cookie的完整案例

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值