会话
Cookie
存放位置:浏览器本地硬盘
值的类型:字符串
存储大小:小,4k
response.addCookie(String name,String value)
Cookie[] cookies = request.getCookies()
Session
存放位置:服务器内存
值的类型:对象
存储大小:大,取决于服务器设置
session默认基础cookie
JSESSIONID
cookie禁用,怎么办?
利用url携带JSESSIONID参数
HttpSession session = request.getSession();
session.setAttribute(String name,Object obj);
Object obj = session.getAttribute(String name)
Cookie与Session的比较
Cookie | Session | |
存放位置 | 浏览器本地硬盘(客户端) | 服务器内存 |
值的类型 | ASCII字符串 | 对象(包括且不限于string,integer,list,map等) |
存储大小 | 小(<=4k一个站点最多保存20个Cookie) | 大(取决于服务器设置) |
安全性 | 不安全 (他人可以分析存放在本地的Cookie并进行Cookie欺骗) | 安全(当访问增多,会比较占用服务器的性能。考虑到减轻服务器性能方面,应当使用Cookie) |
跨域支持 | 支持 | 不支持 |
JSP
Java Server Page
Java+前端 结合
JSP九大内置对象
request | 转译后对应HttpServletRequest/ServletRequest对象 | final javax.servlet.http.HttpServletRequest request |
response | 转译后对应HttpServletRespons/ServletResponse对象 | final javax.servlet.http.HttpServletResponse response |
session | 转译后对应HttpSession对象 | javax.servlet.http.HttpSession session |
application | 转译后对应ServletContext对象 | final javax.servlet.ServletContext application; |
out | 转译后对应JspWriter对象,其内部关联一个PringWriter对象 | javax.servlet.jsp.JspWriter out |
page | 转译后对应this | final java.lang.Object page = this; |
config | 转译后对应ServletConfig对象 | final javax.servlet.ServletConfig config; |
exception | 转译后对应Throwable对象,代表由其他JSP页面抛出的异常对象,只会出现于JSP错误页面(isErrorPage设置为true的JSP页面) | Exception |
pageContext | 转译后对应PageContext对象,它提供了JSP页面资源的封装,并可设置页面范围属性 | final javax.servlet.jsp.PageContext pageContext; |
1、out 来源于Java.io.Writer类,它用于发送输出流到客户端。
2、request 来源于javax.servlet.http.HttpServletRequest接口。它被关联到每一个HTTP请求。
3、response 来源于javax.servlet.http.HttpServletResponse。response对象用于把取得的数据返回到客户端。
4、pageContext 提供访问JSP页面的命名空间。它也提供用来访问其他的JSP隐含对象。
5、session 来源于javax.servlet.http.HttpSession。它用于存储客户端请求的信息,因此它是有状态交互式的。
6、application 来源于javax.servlet.ServletContext。
7、config 来源于ServletConfig,它包含了当前JSP/Servlet所在的WEB应用的配置信息。
8、page 来源于当前被访问JSP页面的实例化。它实际使用的是JSP转换成的Servlet。
9、exception 用于捕获JSP抛出的异常。它只有在JSP页面属性isErrorPage=true时才可用。
生命周期
编译阶段
解析jsp
转换servlet文件
编译servlet
初始化阶段
执行阶段
销毁阶段
语法
JSP指令
<%@ page pageEncoding="" import="" errorPage=""%>
<%@ include file=""%>
<%@ taglib prefix="" uri="">
标签
<% %>
注释
<%-- --%>
输出
<%=age%>
作用域
什么是作用域?
我们在定义每一个变量,每一个属性的时候,都会考虑这个变量、属性的作用范围,也就是作用域。我们会根据我们的需求定义最适当作用域内的变量和属性。
PAGE_SCOPE = 1
REQUEST_SCOPE = 2
SESSION_SCOPE = 3
APPLICATION_SCOPE = 4
page作用域
request作用域
session作用域
application作用域
这四个作用域的作用范围,由上到下是一个比一个大
Cookie示意图
Session示意图
JSP示意图