本文共 2435 字,大约阅读时间需要 8 分钟。
http协议的特点:称之为无状态
, 请求与请求之间不会记录状态(状态就包括请求参数等信息)
本意是小甜点, 可以用来记录多个请求之间的联系,保存服务器的状态
实现一个记住用户名的功能
Cookie c = new Cookie("名字", "值"); // 创建cookie
c.setMaxAge(整数); // 设置cookie的寿命,单位是秒,没有设置寿命的是会话cookie浏览器关闭就删除 c.setMaxAge(0); // 设置寿命为0,意味着删除此cookie response.addCookie(c); // 通过响应对象,把创建的cookie返回给浏览器浏览器每次发送请求时,就会根据域名进行检查,把该域名下的所有cookie发给服务器
Cookie[] cookies = request.getCookies(); // 获取请求中所有的cookie
URLEncoder.encode(中文, "utf-8"); // 将编码后的中文存入cookie的值
URLDecoder.decode("编码后的内容", "utf-8"); // 把编码后的内容进行解码el的语法:
${cookie.cookie的名称.value}浏览器每个域名下能够包含30~50个cookie
每个cookie的长度大约是4k左右session也是用来存储多次请求之间的状态信息,session是把这些信息存在服务器的内容当中
HttpSession session = request.getSession();
// 首次调用getSession方法就是创建session对象 // 后续再调用getSession方法是获取第一次创建好的session对象存入内容
session.setAttribute("变量名", 任意信息); 获取内容 Obejct 信息 = session.getAttribute("变量名"); 删除内容 Obejct 信息 = session.removeAttribute("变量名"); 让session失效(会清空session中所有内容) session.invalidate();${sessionScope.变量名}
session 必须针对同一个浏览器,才能实现在请求存储信息,在之后的请求获取信息的效果
每个用户访问服务器时,服务器会为他们创建一个独立的session
JSESSIONID=session的唯一标识
的特殊cookie 这个JSESSIONID=1
就会随着响应返回给浏览器对比session和cookie
请求转发:
request.getRequestDispatcher("目录路径").forward(request,response);请求重定向:
response.sendRedirect("目录路径");区别:
1) 请求转发时,地址栏不会改变(是第一个servlet的地址) 重定向,地址栏会发生变化(是最后一个servlet的地址) 2) 请求转发时一次请求,跳转发生在服务器内部 重定向是两次请求,第一次请求会返回302的状态码和目标地址, 浏览器根据目标地址发送第二次请求,才完成整个流程 3) 重定向是两次请求,所以不能利用request作用域存值取值 但可以使用session作用域来存值取值 请求转发因为是同一次请求,所以可以使用request作用域存值取值 4) 请求转发的目标只能是本项目的servlet或jsp 重定向跳转的目标可以是任意的查询
servlet --> jsp // 关系密切的跳转使用请求转发 forward() 删除 删除servlet --> 查询列表servlet // 关系不密切的跳转使用重定向 redirect()select ... from ... limit n; // 每次最多查询n条记录
select ... from ... limit m, n; // 从m开始(m从0开始),每次最多查询n条记录每页10条记录
1 页 limit 0, 10; 2 页 limit 10, 10; 3 页 limit 20, 10; ... page(页号), size(每页记录数)m=(page-1)*size
n=size转载地址:http://vhksi.baihongyu.com/