servlet中的三大作用域
request
创建:
请求来的时候
销毁:
响应信息生成的时候
作用域范围:
当前请求
session
创建:
请求不携带jsessionId就会创建session对象
请求携带jsessionId,但未找到对应的session空间
销毁:
服务器非正常关闭
session超时
手动销毁(session.invalidate)
作用域范围:
当前请求
servletContext
创建:
服务器启动时
销毁:
服务器关闭时,或项目从服务器上移除时
作用范围:
当前项目
jsp执行流程:
第一次访问jsp页面时,服务器接收请求,由jspservlet来处理此请求,
1,jspSevlet回去查找对应的jsp文件
2,找到之后,服务器会将jsp文件转换成java文件
3,服务器编译java文件生成class文件.
4,服务器运行class文件,生成动态的内容,并返回给浏览器.
<% 编写java代码 %> //中的代码将会复制到_jspService方法中 <%! 声明全局变量也可定义方法 %> <%= 输出 %>
jsp特有内容(三大指令,四大作用域,九大内置对象)
三大指令:page,taglib,include
四大作用域:
pageContext(pageContext)
request(HttpServletRequest)
session(httpSession)
application(servletContext)
九大内置对象
request
response
session
page
pageContext
out
exception
application
config
EL表达式(jsp2.0后内置)
作用就是代替<%= %> 也就是代替输出
格式:${表达式}
常用功能:
获取作用域中的数据
<% pageContext.setAttribute("pkey","pvalue"); request.setAttribute("rkey","rvalue"); request.setAttribute("aa.bb","ralue"); %> 原始方法获取: <%=pageContext.getAttribute("pkey")%> <%=request.getAttribute("rkey")%> <%=request.getAttribute("aa.bb")%> EL获取: ${pageScope.pkey}; ${requestScope.rkey} ${requestScope["aa.bb"]} 注意:如果域中没有,原始的方法取出来的是null而EL取出来的是空字符
便携方式获取
<% pageContext.setAttribute("key","pvalue"); request.setAttribute("key","rvalue"); session.setAttribute("keyralue"); appllication.setAttribute("key","ralue"); appllication.setAttribute("aa.bb","ralue"); %> ${applicationScope["aa.bb"]}//如果参数名称中有特殊字符那么便捷查找方式不好用,只能用域对象取值 ${key}获取出来的是pvalue 因为会从四个域中查找数据信息(从小到大)找到即返回 pageContext<request<session<application
获取复杂的数据
数组:${属性名称[index]} list:${属性名称[index]} map:${属性名称.key} 实体对象:${属性名称.key}//本质上调用的是实体类的get方法