导读
1.绝对路径与相对路径
2.会话
3.Cookie—浏览器技术
绝对路径与相对路径
会话
会话是指浏览器第一次打开到关闭的过程,其中可以有多次请求,多次响应
Cookie—浏览器技术
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
⚠️在浏览器里 设置->高级->内容设置->Cookie查看
cookie中置存储英文
实例
demo1
package com.oracleoaec.servlet;
import java.io.IOException;
import java.net.URI;
import java.net.URL;
import java.net.URLEncoder;
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 ServletDemo1 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie cookie = new Cookie("key", "value");//创建cookie,默认路径 当前资源的父路径
//告诉浏览器,保存这条信息
//URLEncoder的作用是将中文转码
resp.addCookie(cookie);
Cookie c2 = new Cookie("name",
URLEncoder.encode("罗玉凤", "utf-8"));
c2.setMaxAge(Integer.MAX_VALUE);
c2.setPath("/");//设置路径/
resp.addCookie(c2);
Cookie c3 = new Cookie("age", "18");
c3.setMaxAge(600);//设置存活时间秒
c3.setPath("/haha");//设置路径/haha
resp.addCookie(c3);
// http://localhost:8888/Day04/haha/doS8
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
路径影响:
应用只能访问自身URL路径下的cookies
根路径:当前应用都能访问--不建议使用
默认路径:当前资源的路径,在这个路径下的所有资源都能访问
指定路径:自己指定的路径,在这个路径下的所有资源都能访问
生存时间:
cookie:maxAge:最大生存时间
负数:Cookie存储在浏览器内容中,浏览器关闭,Cookie失效
0:表示删除Cookie
正数:Cookie存储在本地文件中,以秒为单位,有效期为正数值秒
默认值-1
demo2
package com.oracleoaec.servlet;
import java.io.IOException;
import java.net.URLDecoder;
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 ServletDemo2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//获取请求携带的cookie数据,没有则返回null
Cookie[] cookies = req.getCookies();
//遍历数组
//URLDecoder的作用是解码成中文
for (Cookie c : cookies) {
if("name".equals(c.getName())){
String value = URLDecoder
.decode(c.getValue(), "utf-8");
resp.getWriter().write("key="+c.getName()+",value="+value+"<br/>");
}else{
//输出打印
resp.getWriter().write("key="+c.getName()+",value="+c.getValue()+"<br/>");
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
浏览器端有很多Cookie,都携带哪些?
发送请求时:根据生成Cookie的资源所在的路径进行区分
当请求资源时,如果请求资源在这个路径或者这个路径的子文件夹下,
都会携带这些Cookie