javaweb九大个内置对象,四大域
9个内置对象如下:

1.session对象:会话对象
当客户端第一次访问服务器的页面时,web服务器会自动为该客户端创建一个session对象并分配一个唯一的id号
常常用它来在多个页面间共享数据,如我们课可以把访问权限放在会话中,以免 多次连接数据库
jsp中session的读取方法:
Object obj=session.getAttribute("属性名");
写方法:
session.setAttribute("属性名",obj);
其中属性名相当于标签,取出的是Object类需要进行前置转化:
2.application对象
该对象的父类为:javax.servlet.ServletSontext类。
作用域、声明周期:
在服务器打开时创建,服务器关闭时销毁,对应用程序来讲是唯一的,因此application也是session共享的
从application中取出的对象类型仍然是Object类型,也需要转化
常用方法:
getAttribute(String name);返回右name指定的application对象的属性值
getAttributeNames(); 所有application对的属性名字,枚举的实例
getInitParamter(String name);由name指定的属性的初始值
getServletInfo(); Servlet编译器的版本信息
getAttribute(String name,Object object);由name指定的属性值object
在jsp中可以直接使用该实例对象,但是在Servlet中获取该全局唯一对象的方式:
ServletContext application=this.getServletContext();
该对象相当于系统的缓存,用户存放共享数据,例如系统分页数、密码最小长度、版本信息等
3.request对象
通过该对象获取用户提交的信息 request.getParameter();
该对象包含了当前用户请求的上下文,包括表单信息,传递的参数信息等
还可以通过次对象获取session对象
HttpSession session=request.getSession();
4.response对象:相应对象
其父类为javax.servlet.ServletRequest,包含了当前web服务器响应的上下文。
该对象常常被用来完成页面的跳转、页面的自动刷新、页面的自动跳转、禁用缓存等功能
页面跳转的方法:
response.sendRedirect("页面的路径");
页面自动刷新的方法:
response.setHeader("refresh",3);每隔3秒刷新一次
页面自动跳转的方法:
response.setHeader("refresh","3;URL=commom.jsp?ref=aaa");
指定3秒后自动跳转到common.jsp页面并传递了值为aaa的参数ref
禁用缓存的方法:
response.setHeader("Cache=Control","no-cache");
response.serHeader("Pragma","no-cache");
response.setHeader("Expires",0);
禁用缓存后,当我们单击后退时,客户端会自动想服务器请求上一次页面
5.out对象
输出流对象。
6.pageContext
可以通过他获取其它对象
EL中:
${pageContext.request.contextPath} :获取根目录
7.page【基本不用】
在编译的servlet中,Object page = this;
page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用,了解一下即可
8.config【ServletConfig】
获取servlet配置信息
9.exception对象
只有page指令中,isErrorPage=true时,才能使用
jsp中的四大域
setAttribute(), getAttribute(), 用于存储数据,作用域
pageContext.getAttribute(key, scope)
搜索范围:page>request>
1.page
自身
2.request
作用域为request
请求结束后,消失
3.session
4. context
作用域为application
EL表达式
<%
//模拟真实情况
User user1=new User();
user1.setUsername("张三");
request.setAttribute("user", user1); //属性值
%>
1. EL表达式的基本形式
如果在jsp模板文件中使用EL表达式,那么表达式的值回直接输出到网页上。
例如:Java表达式:<%=request.getParameter("usernamae") %>
--> ${param.username} (form)
2. 使用场景
既可以直接插入到jsp文件的模板文件中,也可以作为jsp标签的属性的值。
e.g. <input type="text" name="username" value="" />
3. 直接访问对象的属性
e.g. ${request.user.username} <==> ${request.user['username']}
4. EL运算符
算数运算符:
+ - * /(不是整除)%
关系运算符:
== < >..
逻辑运算符
! || &&
empty运算符
true :如果var为null,就返回TRUE
条件运算符
a?b:c
5. EL 语言中定义了11个隐含对象,他们都是java.util.Map类型,
网页制作者通过他们便捷地访问web应用的特定数据。
隐含对象名 说明
- application: web应用范围内的属性名和属性值进行映射
- cookie: 客户请求中的Cookie名和Cookie对象进行映射
- header: 请求头部的项目名和项目值进行映射,例如:
${header.host} 等价于<%=request.getHeader("host") %>
- headerValues 把Http请求头部的项目名和所有匹配你的项目值得数组进行映射,例如:
[Ljava.lang.String;@2b08133b 等价于<% request.getHeaders("accept-language") %>
initParam 把web应用的初始化参数名和参数值进行映射
- pageScope 把页面范围内的属性名和属性值进行映射
- param 把客户请求的参数名和参数值进行映射
- paramValues 请求参数名对应参数数组
- requestScope 请求返回内的属性名和属性值
- sessionScope 回话的范围内的属性名和属性值的映射
2.分类:
(1)请求范围内的特定数据:header,headerValues,param,paramValues,cookie
${header["user-agent"]} (必须使用[]访问,因为不符合变量命名规则) <==> <%=requesst.getHeader("user-agent") %>
${cookie.username.value} <==> 调用名为username的Cookie对象的getValue()方法
与前端cookie的关系
(2)特定范围的属性值:pageScope,requestScope,sessionScope和applicationScope
属性
(3)pageContext,表示PageContext对象
${pageContext.request\.contentPath}
${pageContext.servletContext.serverInfo} <==> <%=application.getServerInfo %>
${pageContext.request.requestURL} <==> <%=request.getRequestURL() %>
${pageContext.response.characterEncoding} <==> <%= response.getCharacterEncoding() %>
(4)表示web应用的初始化参数集合,为initParam
<==> <%=appliction.getInitParameter("driver") %>分类:
(1)请求范围内的特定数据:header,headerValues,param,paramValues,cookie
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 (必须使用[]访问,因为不符合变量命名规则) <==> <%=requesst.getHeader("user-agent") %>
<==> 调用名为username的Cookie对象的getValue()方法
与前端cookie的关系
(2)特定范围的属性值:pageScope,requestScope,sessionScope和applicationScope
属性
(3)pageContext,表示PageContext对象
${pageContext.request\.contentPath}
${pageContext.servletContext.serverInfo} <==> <%=application.getServerInfo %>
${pageContext.request.requestURL} <==> <%=request.getRequestURL() %>
${pageContext.response.characterEncoding} <==> <%= response.getCharacterEncoding() %>
(4)表示web应用的初始化参数集合,为initParam
<==> <%=appliction.getInitParameter("driver") %>
2.命名变量
EL表达式中的变量成为命名变量,他不是jsp文件的局部变量或实例变量,而是存放在特定范围内的属性,
命名变量的名字和属性名对应。
${username} 找的是特定范围的属性(不是参数)
${user.username} 实际上找的不是User的username属性,而是调用了User的getUsername方法,返回的结果
end
javaweb九大个内置对象,四大域的更多相关文章
- JavaWeb学习总结(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- javaWeb学习总结(8)- JSP中的九个内置对象(4)
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习 (十六)————JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb(十七)——JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- javaweb基础(17)_jsp九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb学习总结(十七)——JSP中的九个内置对象(转)
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JSP学习 三大指令、九个内置对象、JavaBean、EL表达式
1.page-->最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和con ...
- java web学习总结(二十五) -------------------JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- JavaWeb---总结(十七)JSP中的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
随机推荐
- 洛谷P4207 [NOI2005]月下柠檬树(计算几何+自适应Simpson法)
题面 传送门 题解 我还好奇自适应辛普森法干嘛用的呢--突然想起来积分的一个用处就是求曲边图形的面积-- 我们先来考虑一下这些投影是什么形状 一个圆的投影还是它自己 一个圆锥的投影是一个圆加上一个点, ...
- JS编程模式之初始化分支与惰性初始
不同的浏览器对于相同或相似的方法可能有不同的实现.这时,您需要依据当前的浏览器的支持方法来选择对应的执行分支.这类分支有可能与很多,因此可能会减缓脚本的执行速度.但非要等到运行时才能分支吗?我们完全可 ...
- VS2017+DLib_19.17详细配置教程
最近学校布置了一个关于图像融合的作业,于是想利用Learn OpenCV 网站上的Face Morph 教程来设计一个人脸融合的Gif图,但是程序中需要用到DLib库,光是配置这个库就花费了我半天 ...
- Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划)
Leetcode 931. Minimum falling path sum 最小下降路径和(动态规划) 题目描述 已知一个正方形二维数组A,我们想找到一条最小下降路径的和 所谓下降路径是指,从一行到 ...
- 自定义内核启动后的Logo
1.使用图像GIMP工具 2.详细步骤如下: A.将800x480的图片导入到GIMP工具. B.选中GIMP菜单栏进行以下操作 图像 -->模式 ...
- Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解)
不多说,直接上干货! 一.自定义拦截器类型必须是:类全名$内部类名,其实就是内部类名称 如:zhouls.bigdata.MySearchAndReplaceInterceptor$Builder 二 ...
- 安装jdk环境
1.jdk安装包准备: 下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...
- C++_类入门3-嵌套类
可以将类B声明在另一个类中.在另一个类A中声明的类B被称为嵌套类(nested class). 类A的成员函数可以创建和使用嵌套类B的对象. 当且仅当声明为公有部分时,才能在类A的外面使用嵌套类.而且 ...
- openmpi-3.0.1超线程报错问题
先简单记录一下,虽然还有一些疑惑没有解决. 之前安装openmpi是用的命令安装,版本比较低,mfix并行总出现死锁问题,于是想看看是不是openmpi版本导致,虽然目前还未找到具体原因,但是先记录下 ...
- POJ_3090 Visible Lattice Points 【欧拉函数 + 递推】
一.题目 A lattice point (x, y) in the first quadrant (x and y are integers greater than or equal to 0), ...