cookie和数据响应问题

数据响应:⭐⭐⭐

	getWriter()获取字符流(只能响应回字符)
	getOutputStream()获取字节流(可以响应一切数据)
	两者不可以同时使用

乱码问题:⭐⭐

设置服务端编码:response.setCharaterEncoding("UTF-8")
设置客户端编码:response.setHeader("content-type" , text/html ; charset="UTF-8")

以上两句可以同一句话设置:
response.setContentType("text/html;charset="UTF-8")(同时设置服务端和客户端)

响应图片:⭐

request.getServletContext().getRealPath("图片路径");

重定向⭐⭐⭐:request.sendRedirect(“路径”);

设置request域对象:request.setAttribute(" name “,” zhangsan ");
获取域对象:request.getAttribute(“name”);
请求转发:request.getRequestDispatcher(“资源名/路径”).forward(request,response)
区别:请求转发一次请求;服务端跳转;地址栏不改变;域对象可以共享;绝对地址定位在站点后(只能请求当前资源下的路径)
重定向二次请求;客户端跳转;地址栏改变;域对象不可以共享;可以任意地址

Cookie的创建和发送⭐⭐⭐(默认关闭浏览器即失效)

response.setContentType("text/html;charset="UTF-8");
Cookie cookie = new Cookie("name","value");
response.addCookie(cookie);

Cookie的获取⭐⭐⭐:

先获取cookie数组:getCookie();
再获取name和value:getName()和getValue();

Cookie到期时间的设定⭐⭐⭐

setMaxAge=-1:不保存
	     0:删除
	  > 0:单位为秒,表示存活秒数

Cookie的注意点⭐:不能存中文

           只存在本机电脑,不跨浏览器
           同名cookie会覆盖
           如果存中文:获取cookie时通过URLDecoder.decode("name"/"value")进行编码

Cookie的路径:只要访问的路径中包含cookie的path才能访问到该cookie

       cookie的默认值时当前站点名下
       使用setPath("/"):设置cookie的路径为服务器路径

Session: 表示一次回话,会话可以保留指定时间长度,且在一次会话期间共享数据

创建session对象:request.getSession();//不存在就新建,存在就获取
常用方法:getId();getCreationTime();getLastAccessedTime();inNew();
底层:以来cookie实现,默认关闭浏览器即失效

Session域对象:设置:setAttribute();获取:setAttribute();

        即使是重定向,作用于也不会失效

Session的失效:浏览器关闭;

        服务器关闭(非正常关闭才会销毁,session对象在正常关闭时会钝化到本地磁盘中)
        手动销毁:session.invalidate();
        默认最大不活动时间:setMaxInactiveInterval(),单位为秒
		        getMaxInactiveInterval()

你可能感兴趣的:(cookie和数据响应问题)