jsp四大作用域和九大内置对象
jsp是运行在服务端的程序
JSP有九个内置对象(又叫隐含对象),不需要预先声明就可以在脚本代码和表达式中随意使用
JSP九大内置对象分为四类:
- 输入输出对象:out对象、response对象、request对象
- 通信控制对象:pageContext对象、session对象、application对象
- Servlet对象:page对象、config对象
- 错误处理对象:exception对象
jsp四大作用域:
page范围:只在一个页面保留数据(javax.servlet.jsp.PageContext(抽象类))
request范围:只在一个请求中保存数据(javax.servlet.httpServletRequest)
Session范围:在一次会话中保存数据,仅供单个用户使用(javax.servlet.http.HttpSession)
Application范围:在整个服务器中保存数据,全部用户共享(javax.servlet.ServletContext)
九种对象简介:
- out对象:用于向客户端、浏览器输出数据。
- request对象:封装了来自客户端、浏览器的各种信息。
- response对象:封装了服务器的响应信息。
- exception对象:封装了jsp程序执行过程中发生的异常和错误信息。
- config对象:封装了应用程序的配置信息。
- page对象:指向了当前jsp程序本身。
- session对象:用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数
- application对象:代表了当前应用程序的上下文。可以在不同的用户之间共享信息。
- pageContext对象:提供了对jsp页面所有对象以及命名空间的访问。
1.page对象
page对象有点类似与java编程中的this指针,他指向了当前jsp页面本身。
page对象是java.lang.object类的一个实例
page对象拥有一个toString方法,下面是官方定义的方法介绍:
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
包名+类名+@+hashcode值
page对象的方法:
方法名 |
说明 |
toString |
将当前项目的信息打印出来 |
getClass |
返回当前的object类 |
hashCode |
返回page对象的hashCode值 |
equals |
用于比较对象是否与当前对象相同 |
2.request对象
request对象封装了从客户端到服务器发出的请求信息。
request对象方法介绍:
方法名 |
说明 |
isUserInRole |
判断认证后的用户是否属于某一成员组 |
getAttribute |
获取指定属性的值,如该属性值不存在返回Null |
getAttributeNames |
获取所有属性名的集合 |
getCookies |
获取所有Cookie对象 |
getCharacterEncoding |
获取请求的字符编码方式 |
getContentLength |
返回请求正文的长度,如不确定返回-1 |
getHeader |
获取指定名字报头值 |
getHeaders |
获取指定名字报头的所有值,一个枚举 |
getHeaderNames |
获取所有报头的名字,一个枚举 |
getInputStream |
返回请求输入流,获取请求中的数据 |
getMethod |
获取客户端向服务器端传送数据的方法 |
getParameter |
获取指定名字参数值 |
getParameterNames |
获取所有参数的名字,一个枚举 |
getParameterValues |
获取指定名字参数的所有值 |
getProtocol |
获取客户端向服务器端传送数据的协议名称 |
getQueryString |
获取以get方法向服务器传送的查询字符串 |
getRequestURI |
获取发出请求字符串的客户端地址 |
getRemoteAddr |
获取客户端的IP地址 |
getRemoteHost |
获取客户端的名字 |
getSession |
获取和请求相关的会话 |
getServerName |
获取服务器的名字 |
getServerPath |
获取客户端请求文件的路径 |
getServerPort |
获取服务器的端口号 |
removeAttribute |
删除请求中的一个属性 |
setAttribute |
设置指定名字参数值 |
request对象演示:
完成一个简单的用户注册信息界面,将注册信息发送到欢迎界面上。
用户注册界面表单设置:
<form action="do_register.jsp" method="post">用户名:<input type="text" name="userName"><br>技能:<input type="checkbox" name="skills" value="java">java<input type="checkbox" name="skills" value="python">python<input type="checkbox" name="skills" value="ruby">ruby<input type="checkbox" name="skills" value="golang">golang<br><input type="submit" value="提交"><input type="reset" value="重置">
</form>
用户注册信息处理界面使用getParameter方法将用户的表单信息提取出来
String name=request.getParameter("userName");
String[] skillArr=request.getParameterValues("skills");
将skillArr数组转换成字符串:
String skills="";
if (skillArr!=null&&skillArr.length>0){for (String skill:skillArr) {skills=skills+skill+" ";}
}
将数据使用setAttribute保存起来
request.setAttribute("userName",name);
request.setAttribute("skills",skills);
使用jsp的forword指令将页面跳转到welcome.jsp
<jsp:forward page="welcome.jsp"></jsp:forward>
setAttribute和getAttribute用于在web组件之间共享信息
getparameter方法用于接收服务器通过set和post方法传输的数据
注意没有setparameter方法
welcome.jsp页面配置:
<html>
<head><title>技能展示界面</title>
</head>
<body>
信息展示界面:<br><br>
<%--<%=%>这是表达式<%%>这是jsp程序处理--%>
姓名:<%=request.getAttribute("userName")%><br>
技能:<%=request.getAttribute("skills")%>
</body>
</html>
3.session对象
session对象:是一个jsp内置对象,它在第一个jsp被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离 开这个服务器结束(或者超时),被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要创建session对象。
http是无状态的连接协议,需要使用session来存放用户每次的登陆信息
session对象方法:
方法名 |
说明 |
getAttribute |
获取指定名字的属性 |
getAttributeNames |
获取session中全部属性名字,一个枚举 |
getCreationTime |
返回session的创建时间 |
getId |
获取会话标识符 |
getLastAccessedTime |
返回最后发送请求的时间 |
getMaxInactiveInterval |
返回session对象的生存时间单位千分之一秒 |
invalidate |
销毁session对象 |
isNew |
每个请求是否会产生新的session对象 |
removeAttribute |
删除指定名字的属性 |
setAttribute |
设定指定名字的属性值 |
接下来通过一个登陆的小例子来演示下session对象的应用:
登陆表单设置:
<form action="do_login.jsp" method="post">userName:<input type="text" name="userName"><br/>password:<input type="password" name="password"><br/><input type="submit" value="submit"><input type="reset" value="reset">
</form>
登陆逻辑处理界面,使用getParameter获取到用户名和密码:
String userName=request.getParameter("userName");
String password=request.getParameter("password");
对用户名和密码进行判断:
if (userName!=null&&password!=null){session.setAttribute("userName",userName);response.setHeader("refresh","2;URL=welcome.jsp");
}
在欢迎界面使用getAttribute获取当前的用户名:
<%if(session.getAttribute("userName")!=null){%>
<%--getAttribute方法是使用指定的key获取session中的value值。获取到的是一个object对象
在使用的时候需要根据具体的类型进行类型转换。
这里取出的是一个字符串,直接调用会使用他的toString方法,因此不用进行转换--%>
欢迎 <%=session.getAttribute("userName")%>
<a href="logout.jsp">注销</a>
<%}else{%>
请先登陆
<a href="login.jsp">登陆</a>
<%}%>
判断session对象是否是新创建
<%if (session.isNew()){%><br/>
<br/>
欢迎新用户
<%}else{%>
<br/>
<br/>
欢迎老用户
<%}%>
在登出界面里清除session对象信息,并跳转到欢迎界面中去:
session.invalidate();//清除掉session对象
response.setHeader("refresh","2;URL=welcome.jsp");
4.application对象
application对象代表当前的应用程序。存在于服务器的内存空间中。
应用一旦启动便会自动生成一个application对象。如果应用没有被关闭,
此application对象便一直会存在。直到应用被关闭
application的生命周期比session更长。
应用:
为多个用户共享全局信息。比如当前的在线人数等。
application对象方法:
方法名 |
说明 |
getAttribute |
获取应用对象中指定名字的属性值 |
getAttributeNames |
获取应用对象中所有属性的名字,一个枚举 |
getInitParameter |
返回应用对象中指定名字的初始参数值 |
getServletInfo |
返回Servlet编译器中当前版本信息 |
setAttribute |
设置应用对象中指定名字的属性值 |
可以使用application对象来实现页面访问次数记录的功能:
<%Object obj=application.getAttribute("counter");if (obj==null){application.setAttribute("counter",new Integer(1));out.println("该页面被访问了1次<br/>");}else {int countValue=new Integer(obj.toString());countValue++;out.println("该页面被访问了"+countValue+"次<br/>");application.setAttribute("counter",countValue);//java会自动装箱}
%>
5.out对象
out对象是一个输出流,用来向浏览器输出信息,除了输出各种信息外还负责对缓冲区进行管理。
out对象方法介绍:
方法名 |
说明 |
print或println |
输出数据 |
newLine |
输出换行字符 |
flush |
输出缓冲区数据 |
close |
关闭输出流 |
clear |
清除缓冲区中数据,但不输出到客户端 |
clearBuffer |
清除缓冲区中数据,输出到客户端 |
getBufferSize |
获得缓冲区大小 |
getRemaining |
获得缓冲区中没有被占用的空间 |
isAutoFlush |
是否为自动输出 |
6.response对象
response对象主要用于对客户端的请求进行回应。
以及处理http的连接信息,例如设置http文件头,设置cookie对象等。
response对象方法:
方法名 |
说明 |
addCookie |
添加一个Cookie对象 |
addHeader |
添加Http文件指定名字头信息 |
containsHeader |
判断指定名字Http文件头信息是否存在 |
encodeURL |
使用sessionid封装URL |
flushBuffer |
强制把当前缓冲区内容发送到客户端 |
getBufferSize |
返回缓冲区大小 |
getOutputStream |
返回到客户端的输出流对象 |
sendError |
向客户端发送错误信息 |
sendRedirect |
把响应发送到另一个位置进行处理 |
setContentType |
设置响应的MIME类型 |
setHeader |
设置指定名字的Http文件头信息 |
7.pageContext对象
pageContetx对象是jsp页面中所有对象功能的最大集成着。
使用他可以访问所有的jsp内置对象。
pageContext对象方法:
方法名 |
说明 |
forward |
重定向到另一页面或Servlet组件 |
getAttribute |
获取某范围中指定名字的属性值 |
findAttribute |
按范围搜索指定名字的属性 |
removeAttribute |
删除某范围中指定名字的属性 |
setAttribute |
设定某范围中指定名字的属性值 |
getException |
返回当前异常对象 |
getRequest |
返回当前请求对象 |
getResponse |
返回当前响应对象 |
getServletConfig |
返回当前页面的ServletConfig对象 |
getServletContext |
返回所有页面共享的ServletContext对象 |
getSession |
返回当前页面的会话对象 |
8.exception对象
exception对象表示jsp引擎在执行代码时抛出的异常
如果想要使用exception对象,那么需要配置编译指令的isErrorPage属性为true
即在页面指令中设置:<%@page isErrorPage=“true”%>
9.config对象
config对象表示当前jsp程序的配置信息,获取服务器的配置信息
一般项目中,jsp被用作模版技术,也就是位于表示层
而位于表示层的jsp文件一般是不需要配置信息的
所以此对象在jsp程序中其实很少使用
config对象是servletConfig类的一个实例。
config对象方法:
方法名 |
说明 |
getServletContext |
返回所执行的Servlet的环境对象 |
getServletName |
返回所执行的Servlet的名字 |
getInitParameter |
返回指定名字的初始参数值 |
getInitParameterNames |
返回该JSP中所有的初始参数名,一个枚举 |
jsp内置对象总结:
Jsp内置对象 |
功能 |
主要方法 |
out |
向客户端输出数据 |
print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
request |
向客户端请求数据 |
getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………….. |
response |
封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 |
addCookie() sendRedirect() setContentType() flushBuffer() getBufferSize() getOutputStream() sendError() containsHeader()…………… |
application |
||
config |
表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet |
getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
page |
Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问 |
flush()……… |
pagecontext |
为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 |
forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
session |
用来保存每个用户的信息,以便跟踪每个用户的操作状态 |
getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
exception |
反映运行的异常 |
getMessage()………… |
练习:编写一个jsp程序,实现用户登录,当用户输入密码错误时,将页面重定向到错误提示 页,并在该页
面显示30秒后,自动返回用户登录页面
1.登录界面index.jsp
<form name="form1" method="post" action="deal.jsp">用 户 名: <input name="userName" type="text" value="userName"> <br>
密 码: <input name="pwd" type="password" value="pwd"><br>
<input type="submit" name="Submit" value="登录">
<input name="Reset" type="reset" id="Reset" value="重置">
</form>
2.判断密码,用户名界面deal.jsp
<%
request.setCharacterEncoding("GB18030");
String userName=request.getParameter("userName");
String pwd=request.getParameter("pwd");
if("mr".equals(userName)&&"mrsoft".equals(pwd)){//设定数据库密码用户名out.println("<script language='javascript'>alert('登录成功');window.location.href='index.jsp';</script>");}else{response.sendRedirect("error.jsp");//重定向}
%>
3.错误页面error.jsp
<%
response.setHeader("refresh", "5;URL=index.jsp");//重定向页面
%>
您输入的用户名或密码错误,请重新登录!
项目推荐:
2000多G的计算机各行业电子资源分享(持续更新)
2020年微信小程序全栈项目之喵喵交友【附课件和源码】
Spring Boot开发小而美的个人博客【附课件和源码】
Java微服务实战296集大型视频-谷粒商城【附代码和课件】
Java开发微服务畅购商城实战【全357集大项目】-附代码和课件
最全最详细数据结构与算法视频-【附课件和源码】
----------------------------- end -----------------------------------
jsp四大作用域和九大内置对象相关推荐
- JSP四大作用域,九大内置对象
面试题:JSP和Servlet的区别? JSP的本质就是servle JSP更加侧重于视图的展示,servlet更注重逻辑的处理. 面试题:include指令和jsp:include标签的区别? 从效 ...
- JSP的四大作用域和九大内置对象
JSP的四大作用域和九大内置对象 https://wenku.baidu.com/view/a0974190152ded630b1c59eef8c75fbfc77d949d?ivk_sa=102319 ...
- JSP中四大作用域和九大内置对象
文章目录 九大内置对象 一.out对象 二.request对象 三.response对象 四.config对象 五.session对象 六.application对象 七.page对象 八.pageC ...
- Java--JSP四大作用域、九大内置对象
一.JSP Java Server Pages的简称即Java服务器页面,其本质就是一个简易的Servlet. 二.四大作用域 在讲JSP九大内置对象前,我们先来理解四大作用域,四大作用域包括Page ...
- JSP四大作用域(9大内置对象)
更多免费教学文章请关注这里 1.什么是JSP? JSP本质上就是一个servlet,因为servlet输出html太麻烦了,所以就有了JSP,JSP就是专门用来书写html的,当然其中也能写java代 ...
- JavaWeb——JSP九大内置对象及作用域详解
文章目录 JavaWeb--JSP九大内置对象及作用域 1. 九大内置对象 1.1 request对象 1.2 response对象 1.3 out对象 1.4 session对象 1.5 appli ...
- JAVA高级工程师课程笔记整理——(八)tomcat与九大内置对象
(八)tomcat与九大内置对象 tomcat B/S 浏览器/服务器 请求:request 响应: response C/S: ...
- 面试之JSP九大内置对象和JSP四大作用域
jsp 九大内置对象和其作用详解 JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config. ...
- JSP的三六九四七(三大指令、六大标签、九大内置对象、四大作用域、七个动作指令)
JSP的基本构成:HTML文件+Java片断+JSP标签 三大指令:page指令.include指令.taglib指令. page指令: 1.language属性:设置当前页面中编写JSP脚本使用的语 ...
最新文章
- Android开发之根据Service的生命周期特点后台连接网络下载图片(源代码分享)
- 选择排序_在N + 1场景中,使用@NamedEntityGraph更有选择地加载JPA实体
- Eclipse快捷键:最常用且高效的快捷键
- redis学习笔记-持久化
- cat命令读取一部分_脚本攻略2 --命令之花
- jquery实现图片懒加载
- iOS 多线程:『GCD』详尽总结
- lightoj1060_组合数学
- 让 CentOS 启动时不启动桌面服务
- 【加解密学习笔记:第二天】动态调试工具OllyDbg使用基础介绍
- quercus mysql_让PHP运行在Glassfish中:quercus配置
- web developer tips (45):如何改变动态数据文件夹的位置
- python aes加密 cbc_【转载】python AES CBC模式加密
- python条件语句有哪些_Python 条件语句
- Phonetics: Lecture Three 语音 第三课 Teacher:Patrick
- 变电站计算机监控系统相关技术,变电站计算机监控系统的研究
- vue组件弹出框点击显示隐藏
- Hibernate之一对一映射
- 九型人格在招聘中的应用策略
- 码出高效,码出质量:阿里Java开发手册正式发布!