JSP内置对象基础知识小结
JSP提供9大内置内象:
一、request内象:
封装了由客户端生成的HTTP请求的所有细节,主要包括了http头信息,系统信息,请求方式,请求参数等。
1、获取访问请求参数:request.getParameter("arg");
如果指定参数不存在,则返回null;
如果指定参数未指定参数值,则返回空字符串“”
2、在作用域中管理属性:将数据保存到request范围内的变量中,传递到请求转发后的页面进行处理
request.setAttribute(String name, Object object);
request.getAttribute(String name); 返回值为Object对象
3、获取Cookie:在网络服务器上生成的文本信息用于发送给浏览器,浏览器以key/value形式保存在客户机指定目录下
【使用Cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。】
Cookie[] cks = request.getCookies(); // 获取所有cookie对象的集合
Cookie(String name,String value) // 构造函数创建Cookie
cks[i].getName() // 获取cookie对象的字符串名称
cks[i].getValue() // 获取cookie对象的值
cks[i].setMaxAge() // 设置cookie对象的有效期
4、设置编码方式:request的内部默认是ISO-8859-1的编码方式
request.setCharacterEncoding("UTF-8"); // 需放置在顶部
链接跳转方式下:
提交页的中文参数必须用URLEncoder.encode()编码,在结果页可以不处理,也可以用URLDecoder.decode()解个码意思一下
【但如果提交后的数据被Cookie包装后,取出Cookie时就必须解码】
get 方式下:
提交页的中文参数可以不处理,在结果页也不用处理,
但在tomcat的server.xml文件的<Connector>标签需添加属性设置URIEncoding="utf-8"
post方式下:
提交页的中文参数可以不处理,
在结果页首部要设置:request.setCharacterEncoding("UTF-8");
或者在结果页直接处理参数:new String(request.getParameter("uname").getBytes("ISO-8859-1"),"utf-8");
5、获取客户端信息:
提交信息的方式:request.getMethod() -- GET
所使用的协议: request.getProtocol() -- HTTP/1.1
获取发出请求字符串的客户端地址:request.getRequestURL() -- http://localhost:8081/Request/index5.jsp
获取发出请求字符串的客户端地址:request.getRequestURI() -- /Request/index5.jsp 【不包括请求的参数】
request.getScheme() -- http
获取服务器的名称:request.getServerName() -- localhost
获取服务器端口号:request.getServerPort() -- 8081
request.getContextPath() -- /Request
request.getServletPath() -- /index5.jsp
获取客户端的主机名:request.getRemoteHost() -- 0:0:0:0:0:0:0:1
获取客户端的IP地址:request.getRemoteAddr() -- 0:0:0:0:0:0:0:1
获得Http协议定义的文件头信息中的Host值: request.getHeader("host") -- localhost:8081
返回所有request Header的名字,其结果是一个枚举型的实例:
request.getHeaderNames()
遍历方法如下:
<%
Enumeration enu = request.getHeaderNames();
while(enu.hasMoreElements()){
String headerName = (String)enu.nextElement();
String headerValue = request.getHeader(headerName);
%> <%=headerName%> : <%=HeaderValue%> <br> <%
}
%>
二、response内象:
用于响应客户端请求(请求数据可以是各种数据类型),向客户端输出信息。
1、重定向网页:将网页重定向到另一个页面(可以是不同的主机),客户端浏览器会得到跳转地址,并重新发送请求链接,开始一个新的request对象
response.sendRedirect(String path): path可以是相对路径,也可以是不同主机的url地址,
注意:该语句执行后会直接跳转,之后的语句将无效。
2、设置http响应报头
a)、禁用缓存
默认情况下,浏览器将会对显示网页进行缓存,对于安全性较高的网站,通常需要禁用缓存。
response.setHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
b)、自动刷新
response.setHeader("refresh","10"):每隔10秒自动刷新一次
c)、定时跳转
response.setHeader("refresh","5;url = login.jsp"):使网页5秒钟后自动跳转到指定页面
注意:自动刷新和定时跳转用的是同一属性,因此不能同时实现,其属性值都必须是字符串
3、设置输出缓冲:
通常服务器输出给客户端的内容会先写入到缓冲区,然后当满足下列任意一个条件时,都会将缓冲区内容写到客户端。
a)、JSP页面的输出信息已全部进入缓冲区
b)、缓冲区已满
c)、在JSP页面主动调用response.flushBuffer()方法或out.flush()方法
缓冲区配置常用方法:
flushBuffer():强制将缓冲区内容输出到客户端
getBufferSize():获取所用缓冲区实际大小
setBufferSize():设置所用缓冲区大小
reset():清除缓冲区内容,同时清除状态码和报头
isCommitted():检测服务器是否已将数据写入到客户端
4、添加Cookie对象
Cookie ck = new Cookie("mrCook","username#password");
ck.setMaxAge(24*60*60*30);
response.addCookie(ck);
三、session内象:
HTTP无状态协议:客户端向服务器发送请求,服务器接收请求并返回响应,连接结束,服务器不保存相关信息。
通过session会话可以在web应用页面跳转时保存用户状态,使整个用户会话一直存在,直到关闭浏览器。
【若客户端长时间不向服务器发送请求,tomcat服务器默认在30分钟后会销毁session对象,该时长可通过程序修改】
1、创建和获取客户会话(作用域在session范围内)
session.setAttribute(String name,Object obj):存储客户相关信息
session.getAttribute(String name):读取客户相关信息(返回值是Object类型)
2、从会话中移除指定的绑定对象(一定要保证作用域在session范围内)
session.removeAttribute(String name):移除客户相关信息
3、销毁session对象
session.invalidate():手动销毁session,之后将不可以再使用session对象
4、会话超时的管理
当用户首次访问时将产生一个新的会话,以后服务器就会记住这个会话状态。在session对象中设置会话生命周期的方法如下:
getLastAccessedTime():返回客户端最近一次(与会话相关联的)发起请求的时间
getMaxInactiveInterval():返回一个会话内两个请求之间的最大时间间隔(以秒为单位)
setMaxInactiveInterval():设置session的最长有效时间(以秒为单位)
四、application内象:
用于保存所有应用程序中的公有数据,并且所有用户都可以共享该对象,类似于系统的"全局变量"。
【生命周期:服务器启动时自动创建,服务器停止时销毁。】
1、访问应用程序的初始化参数:
位置:Web应用所在目录下的WEB-INF子目录中有一个web.xml文件,它通过<context-param>标记配置保存了应用程序的初始化参数。
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/demo</param-value>
</context-param>
访问方法:
a、application.getInitParameter(String name):返回已命名的参数值
b、application.getInitParameterNames():返回所有[已定义的应用程序初始化参数]名称的枚举
2、管理应用程序的[环境]属性:
作用:可以在application对象中设置属性,该属性在整个应用区域中都有效。相关方法如下:
application.getAttributeNames():获得所有application对象中的属性名称的枚举
application.getAttribute(String name):从application对象中获取指定对象名
application.setAttribute(String key,Object obj):使用指定名称和指定对象在application对象中进行关联
application.removeAttriubte(String name):从application对象中去掉指定名称的属性
五、out内象:
用于在Web浏览器内输出信息,同时管理应用服务器上的输出缓冲区(可以对数据缓冲区进行操作,清除缓冲区中的残余数据)。
1、向客户端浏览器输出数据(其中非字符串类型的数据会自动转换为字符串进行输出):
out.print():与使用jsp表达式输出信息相同
out.println():同print()方法一样,但在html源代码中,该输出结尾还增加了一个换行符,该换行在html页面中被转换为一个空格符
2、管理输出缓冲:
out.clear():清除缓冲区的内容【类似于重置响应流,如果响应内容已经提交给客户端,则会产生IOException异常】
out.clearBuffer():清除缓冲区的"当前"内容【即使响应内容已经提交给客户端,也能够访问该方法】
其它管理缓冲区的方法:
out.flush():刷新流
out.isAutoFlush():检测当前缓冲区满时,是自动清空还是抛出异常
out.getBufferSize():获取缓冲区大小
六、pageContext内象(较少使用):
一个可用于获取页面上下文的特殊对象,它的创建和初始化都是由容器来完成。【通过它可获取jsp页面的内置对象】
pageContext.setAttribute():为指定范围内的属性设置属性值
pageContext.getAttribute(String name):获取参数值
pageContext.removeAttribute():删除指定范围内的指定属性
pageContext.getAttributeNamesInScope(int scope):获取某范围内参数名称的枚举
pageContext.forward(String relativeUrlpath):把页面转发到另一个页面
pageContext.getRequest():
pageContext.getResponse():
pageContext.getSession():
pageContext.getApplication():
pageContext.getOut():
pageContext.getException():
pageContext.getServletConfig():
七、config内象:
用于取得服务器的配置信息(web.xml),当Servlet初始化时,tomcat容器会将某些信息通过config对象传递给它。
【开发者可以在web.xml文件中为应用程序的Servlet和JSP页面提供初始化参数】常用方法如下:
config.getServletContext():获取Servlet上下文
config.getServletName():获取Servlet服务器名
config.getInitParameterNames():获取服务器中所有初始参数名称的枚举
config.getInitParameter():获取服务器中指定参数名称的初始值
八、page内象:
代表JSP本身(请求或应答),只能在JSP页面内使用。该对象实质上是包含当前Servlet接口引用的变量(相当于this关键字)。
常用方法如下:
page.getClass():返回当前Object的类
page.hashCode():返回该Object的哈希码
page.toString():返回该Object类的字符串
page.equals(Object o):比较该对象与指定对象是否相等
九、exception内象:
处理JSP文件执行时发生的所有错误和异常。
如果jsp页面出现了未捕捉到的异常,会自动生成exception对象,并传递给JSP页面的page指令中errorPage属性指定的页面进行相应处理。
【调用exception对象时要求JSP页面的page指令设置为:isErrorPage="true",否则将无法编译JSP文件。】
【如果在IE浏览器下还需要设置:选项->高级->显示友好 HTTP 错误消息,取消勾选即可】
常用方法如下:
exception.getMessage():返回exception对象的异常信息
exception.getLocalizedMessage():返回本地化的异常错误
exception.toString():返回异常错误的简单描述
exception.fillInStackTrace():重写异常错误的栈执行轨迹
转载于:https://blog.51cto.com/maplebb/2170695
相关文章:

一个正执行的程序如何启动另一新程序并关闭现执行程序
最简单的方法有两个函数即可实现: //启动新程序WinExec("存放另一新程序的路径", SW_SHOW);//关闭现执行软件 ExitThread(0); 若在win ce 下,用WinExec这个函数就不对了,那时就应该用ShellExecuteEx了。 SHELLEXECUTEINFO ShExecIn…

【android】java.lang.NoClassDefFoundError或classnotfount等异常错误
在android上开发,当导入一个外部的包,可能会出现这类错误,我已经两次碰到了,一次是用科大讯飞的android开发包,另一次是用Jsoup包(html 解析)。 解决方案: 先去掉加入的外部包 不要把…

Java面试题(一)部分题目
博主马上要面对几家公司的面试,故自己准备了点面试题,仅供参考! 1,线程的创建的方式:答:1,继承Thread(注意,此类其实也是实现了Runnable接口的),2,实现Runnable接口2,1. …

在win ce中如何使正在运行的软件自动升级更新
创建两个独立的程序A和B:A是现正在运行的程序,B是用于辅助新版本的A覆盖旧版A 在客户端先运行A,使A提供从服务器端下载新版A放于一临时文件夹中,并运行B,关闭A; 运行的B用于执行:用新版A覆盖旧…

刘铁岩:AI打通关键环节,加快物流行业数字化转型
导语:近日,在微软亚洲研究院创新论坛上,微软亚洲研究院副院长刘铁岩分享了关于“AI物流”行业的实践经验。以下为其发言内容。 随着时代的发展,人工智能成为了决定性的技术,我们所谈的企业数字化转型也正在从“互联网”…

Unity的三种Interceptor
Unity默认提供了三种拦截器:TransparentProxyInterceptor、InterfaceInterceptor、VirtualMethodInterceptor。 TransparentProxyInterceptor:代理实现基于.NET Remoting技术,它可拦截对象的所有函数。缺点是被拦截类型必须派生于MarshalByRe…

Python编写循环的两个建议 | 鹅厂实战
作者 | piglei(腾讯高级工程师)转载自腾讯技术工程知乎专栏循环是一种常用的程序控制结构。我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行。而“循环”,则是实现让…

作为JavaScript开发人员,这些必备的VS Code插件你都用过吗
本文翻译自:https://www.sitepoint.com/vs-code-extensions-java-developers/转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。如今,Visual Studio Code无疑是最流行的轻量级…

matlab常遇小问题汇总
1、如何注释掉多行: 同时注释掉多行,有2种方法可行: (1)、选中所有要注释的行,按快捷键"Ctrl R" 或者 选择工具菜单"Text --> Comment"; 如果释放所有要注释的行,则按快捷键"Ctrl T&qu…

《几何与代数导引》习题1.35.4
求直线之间的距离$l_1:\frac{x1}{-1}\frac{y-1}{3}\frac{z5}{2}$.$l_2:\frac{x}{3}\frac{y-6}{-9}\frac{z5}{-6}$.解:点$q(-1,1,-5)$在直线$l_1$上,点$p(0,6,-5)$在直线$l_2$上.$\vec{pq}(-1,-5,0)$.直线$l_1$的方向向量为$(-1,3,2)$,直线$l_2$的方向向量…

深度学习难,这本书让你轻松学深度学习
深度学习在短短几年之内便让世界大吃一惊。它非常有力地推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等多个领域的快速发展。随着这些领域的不断进步,人们现在可以制造自动驾驶的汽车,基于短信、邮件甚至电话的自动回复系统&#…

matlab中用于小数取整的函数的用法
matlab中小数取整的函数大约有四个:floor、ceil、round、fix 若 A [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55, 1.9, 2.0]; floor:朝负无穷方向靠近最近的整数; floor(A) ans -2 -2 -2 -2 -2 1 1 1 1 …
SQLServer之删除约束
使用SSMS数据库管理工具删除约束 1、连接数据库,选择数据表-》展开键或者约束-》选择要删除的约束-》右键点击-》选择删除。 2、在删除对象弹出框中-》点击确定。 3、刷新表-》展开键或者约束-》查看结果。 使用T-SQL脚本删除约束 语法: --声明数据库使用…

新建silverlight项目提示未将对象设置到实例解决方案
1.打开 visual studio 命令提示 输入一下命令 2.devenv /resetskippkgs 这条命令会启动visual stuio 关闭visual studio然后输入下面的命令3.devenv /setup

毕业十年后,我忍不住出了一份程序员的高考试卷
作者 | 程序员小吴转载自公众号五分钟学算法(ID: CXYxiaowu)一、选择题(共计 50 分)1、在下列四种排序算法,只有( )是一种不稳定排序A、冒泡排序B、选择排序C、插入排序D、归并排序2、一个数组&…

查看matlab中函数源代码的方法
有几种方法可以实现查看matlab里自带函数的源代码: 在命令窗口中输入: (1)、type 函数名(如 type rgb2gray 或者 type rgb2gray.m):即可在命令窗口中显示此函数的源代码; (2)、open 函数名(如 open rgb2gray 或者 open rgb2gray.m):即可打开…

Watir-webdriver处理table
最近大脸猫同学给了我一个popup的demo,让我试着定位弹出窗口中的按钮元素。在研究过程中,发现webdriver与watir代码有区别,一度让我很郁闷,在网上也找不到相应的解决方案,刚才code运行成功,在这记一笔&…

PyTorch Hub发布获Yann LeCun强推!一行代码调用经典模型
作者 | Team PyTorch译者 | Monanfei责编 | 夕颜出品 | AI科技大本营(ID: rgznai100)导读:6月11日,Facebook PyTorch 团队推出了全新 API PyTorch Hub,提供模型的基本构建模块,用于提高机器学习研究的模型复…

【会议纪要】非洲新经济-线下沙龙分享
沙龙 主题: 《解开非洲新经济神秘面纱》 时间: 2018年09月08日 14:00 ~ 15:00 地点: 杭州丰潭路 UXCoffee 背景: 随着中非合作峰会召开,非洲发展潜力越来越受到关注。。。许多人眼中的非洲是贫穷…

图像处理和图像识别中常用的matlab函数
下面仅给出函数的大概意思,详细用法见: help 函数名 或 matlab help 1、imread:read image from graphics file; 2、imshow:display image in Handle Graphics figure; 3、imwrite:write image…

Powershell管理Active Directory 复制和拓扑
Powershell管理Active Directory 复制和拓扑 Active Directory 的 Windows PowerShell (AD) 支持复制和拓扑管理。它包含了管理复制、站点、域和林、域控制器和分区的功能。过去的管理工具(如 AD 站点和服务管理单元与 repadmin.exe)的用户将发现如今也可…

实战 | 如何用最快的速度学会Dlib人脸识别开发?
作者 | 小宋是呢来源 | 转载自小宋是呢项目GitHub地址:https://github.com/xiaosongshine/dlib_face_recognition1.背景介绍Dlib是一个深度学习开源工具,基于C开发,也支持Python开发接口,功能类似于TensorFlow与PyTorch。但是由于…

matlab内存管理
转自:http://my.donews.com/deng/2006/09/24/vijgqxehmkxiruywdauvxyiafogtskeymhyw/ 用 Matlab 进行大规模科学计算或仿真时,内存是一个需要时常注意的问题。当你写的 Matlab 程序跳出“Out of Memory” 时,以下几点措施是需要优先考虑的解决…

Koa2和Redux中间件源码研究
一、Koa2中间件源码分析 在Koa2中,中间件被存放在一个数组中。 使用koa中,最常见的就是app.use(fn),use函数部分源码如下所示。首先中间件必须是个函数。若是generator函数,则需要进行转化。最后把该中间件推入middelaware数组中。…

matlab内存管理(二)
转自:http://hi.baidu.com/bi%CB%AB%C9%FA%BB%A8/blog/item/5ab86c38ac2f45e715cecbab.html 1,确保内存的连续性Matlab 中数组必须占用连续分配的内存段当无法为新建的数组分配连续的内存段的时候Out of Memory 就会出现由于反复分配和释放数组会使可用的…

校招经验分享—高考结束!校招还会远么~~
作者 | 石晓文来源 | 转载自小小挖掘机(ID: wAIsjwj)今天是6.11,高考已经结束了,那大考-校招还会远么?我们先来看一下去年的校招时间表:互联网大厂校招一般7月就开始了,也就是说!如果…

数据科学究竟是什么?
数据科学是一门将数据变得有用的学科。它包含三个重要概念: 统计机器学习数据挖掘/分析数据科学的定义 如果你回顾一下数据科学这个术语的[早期历史](),会发现有两个主题密切相连: 大数据意味着计算机的使用频率增加。统计学家很难将纸张上所…

SQL with NUll处理,Join系列,between,in对比exists以及少量题目
2019独角兽企业重金招聘Python工程师标准>>> 1.一些题目: 选择在每一组B值相同的数据中对应的a最大的记录的所有信息,(用于论坛每月排行榜) Selecta,b,c from tableta wherea(select max(a) from tabletb where tableb.b tableta.b ) 随机抽取出10条数据 Select to…

清华大学提出APDrawingGAN,人脸照片秒变艺术肖像画
作者 | 刘永进教授来源 | 转载自数据派THU(ID:DatapiTHU)清华大学提出APDrawingGAN,该项工作被CVPR 2019录取为oral paper。CVPR是计算机视觉和人工智能领域内的国际顶级会议,2019共收到投稿5160篇,录取1300篇…

图像处理和图像识别中常用的OpenCV函数
1. cvLoadImage:将图像文件加载至内存; 2. cvNamedWindow:在屏幕上创建一个窗口; 3. cvDestroyWindow:销毁显示图像文件的窗口; 4. cvDestroyAllWindows:销毁显示图像文件的所有窗口…