http请求包含三部分:请求行,请求头,请求体(post请求会存在请求体并把请求数据存放在请求体中,get方式没有请求体会把请求数据存放在URL中)。
http响应也包含三步分:响应行,响应头,响应体
ContentType的作用:ContenType决定浏览器采用何种方式对 响应体 进行处理。
MIME类型 描述
text/plain 纯文本
text/html HTML文档
text/xml XML文档
application/x-msddownload 需要下载的资源
image/(jpeg/gif) 图片资源
请求转发和响应重定向
请求转发 request.getRequestDispatcher("/***").forward(request, response);
请求转发属于服务器行为,只会产生一次请求,浏览器地址栏的URL不会变化
响应重定向 response.sendRedirect("/**");
是浏览器行为,会重新产生一个请求,浏览器地址栏的URL会发生变化
cookie和session的区别
cookie是浏览器保存在本地的文本内容,常用于保存登录状态,用户资料等小文。cookie具有时效性,cokkie内容会伴随请求发送给Tomcat,默认随着浏览器的关闭而销毁,可用c.setMaxAge(60*60*24)设置cookie的时效。
cookie使用步骤
1.创建cookies对象 Cookie c=new Cookies("name","value");
2.使用 response.addCookie(c); 添加cookie对象
3.Cookie [] cs=request.getCookies(); 获取用户所有的cookie
session(用户会话)则用于保存和“浏览器窗口”对应的数据,数据存储在tomcat服务器的内存中,具有时效性,tomcat默认为保存半小时,session通过浏览器cookie的cookieId值提取对应的用户相关信息,所以关闭浏览器后cookie失效则会失去原有的cookieId值,会导致对应的session数据提取不到,但实际上session不会随浏览器关闭而失效。
session使用步骤(servlet中)
1.获取到session对象 HttpSession s=request.getSession();
2.可通过s.setAttribute(“name”,“value”)方法创建session的自定义属性,其和request.setAttribute()不同之处在于,创建的自定义属性是存储在session的存储空间当中。
session的生命周期
Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。
Session什么时候失效?
1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为30分钟。
2. 调用Session的invalidate方法。
Session对浏览器的要求:
虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。
该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。
注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。