6、JSP语言基础之---JSP内置对象
对应书本第6章
注意,本章的9个内置对象都是java语言的,而非javascript的,所以代码放在中。
jsp内置对象有9个,不需要先定义可以直接用。
这9个分别是:request、response、session、application、out、pagecontext、config、page、exception
6.2 request对象
只要有http请求就有request
request对象封装了客户端产生的http请求的所有细节,包括http头信息、信息、请求方式、请求参数等。
直接用request对象的方法即可。
请求参数
超链接跳转也是一种访问请求,超链接可以带有参数。例
index.jsp中有: 处理页 deal.jsp中有
页面转发的属性:
语法:
request.setattribute(string name,object object); request.getattribute(string name);
例子:
index.jsp中: deal.jsp中:
获取cookie
首先保证客户机允许使用cookie!!!
cookie可以标识用户身份,记录用户名和密码,跟踪重复用户等。
是将cookie以key/value形式保存到本地某个指定目录。
方法有:
cookie cookie = new cookie(“cookie名”, cookie值);
cookie[ ] cookies = request.getcookies();
response.addcookie(cookie);
cookies[i].getname() //获取cookie的key
cookies[i].getvalue() //获取cookie的value
例:通过cookie保存并读取用户登录信息
效果如下:
index.jsp 通过cookie保存并读取用户登录信息 游客您好,欢迎您初次光临! 请输入姓名: 欢迎[]再次光临
您注册的时间是: ----------------------------------------------- deal.jsp 写入cookie <script type="text/javascript">window.location.href="index.jsp"</script> 总结: 整体结构是index.jsp中用到deal.jsp,所以index.jsp有request,deal.jsp有response; 在jsp文件中既有java代码又有html,有的地方是两者结合着写,但是java代码放在内; 为啥在点击“确定”按钮后就会到deal.jsp执行?因为浏览器并不是将所有的表单控件全部发送到服务器的,而是会查找所有的【成功控件】,只将这些成功控件的数据发送到服务端, 什么是成功控件呢?简单地来说,成功控件就是:每个表单中的控件都应该有一个name属性和”当前值“, 在提交时,它们将以 name=value 的形式做为提交数据的一部分。
request获取客户端信息(p126)
例:index.jsp
使用request对象的相关方法获取客户端信息
客户提交信息的方式:
使用的协议:
获取发出请求字符串的客户端地址:
获取发出请求字符串的客户端地址:
获取提交数据的客户端ip地址:
获取服务器端口号:
获取服务器的名称:
获取客户端的主机名:
获取客户端所请求的脚本文件的文件路径:
获得http协议定义的文件头信息host的值:
获得http协议定义的文件头信息user-agent的值:
获得http协议定义的文件头信息accept-language的值:
获得请求文件的绝对路径: 结果: 客户提交信息的方式:get 使用的协议:http/1.1 获取发出请求字符串的客户端地址:/6.05/index.jsp 获取发出请求字符串的客户端地址:http://localhost:8080/6.05/index.jsp 获取提交数据的客户端ip地址:0:0:0:0:0:0:0:1 获取服务器端口号:8080 获取服务器的名称:localhost 获取客户端的主机名:0:0:0:0:0:0:0:1 获取客户端所请求的脚本文件的文件路径:/index.jsp 获得http协议定义的文件头信息host的值:localhost:8080 获得http协议定义的文件头信息user-agent的值:mozilla/5.0 (compatible; msie 10.0; windows nt 6.1; win64; x64; trident/6.0) 获得http协议定义的文件头信息accept-language的值:zh-cn 获得请求文件的绝对路径:d:\java\eclipse_ee\lifan_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\5\index.jsp
request获取页面的国家信息
通过http请求能知道是从哪个国家发出的
java.util.locale类封装了一个国家和该国所使的一种语言。
见test.jsp
insert title here
6.3 response对象
用于响应客户请求,向客户端输出信息。
它封装了jsp产生的响应,并发送到客户端。
请求的数据可以各种数据类型,甚至是文件。
response对象在jsp页面内有效。
重定向网页
重定向与转发区别:
假设你去办理某个执照
重定向:你先去了a局,a局的人说:“这个事情不归我们管,去b局”,然后,你就从a退了出来,自己乘车去了b局。
转发:你先去了a局,a局看了以后,知道这个事情其实应该b局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了b的人,让他们办好后,送了过来。
代码:index.jsp重定向到login.jsp
index.jsp login.jsp login的代码。。。
对页面的一些设置
设置输出缓冲
服务器输出到客户端的内容不直接到客户端,而是先到输出缓冲区
对缓冲区配置的方法:
例:
设缓冲区大小为32kb
response.setbuffersize(32);喎? f/ware/vc/"="" target="_blank" class="keylink">vcd4kcgokpggyiglkpq=="64-session对象">6.4 session对象
比request对象用途更广!!
session:会话。会保存用户的状态。
为啥会有session?因为http协议是无状态协议,服务器不保存相关信息,为了弥补该缺点,http协议提供了session。
一个session会存在直到浏览器关闭,指整个浏览器关闭不是仅关闭此页面(客户端长时间不向服务器发请求session也会自动消失,时间取决于服务器,例如tomcat默认30分钟,该时间可通过编写程序修改)
一个session就是一个打电话
创建及获取会话: session.setattribute("username","陈默"); session.getattribute("username"); 将session中某个对象移除: session.removeattribute("username"); session手动销毁: session.invalidate(); 会话超时的管理: 一般session的生命周期在20-30分钟间,session提供了设置会话生命周期的方法,分别为: session.getlastaccessedtime():返回客户端最后一次与会话关联的请求时间; session.getmaxinactiveinterval():以秒为单位返回一个会话内两个请求最大时间间隔; session.setmaxinactiveinterval():以秒为单位设置session的有效时间 例 session.setmaxinactiveinterval(10000);
例子:
例6.18(书本p133)在index.jsp中用户名输入框;在session.jsp将显示index.jsp中的用户名,以及一个最喜欢地方输入框;result.jsp将显示用户名及最想去的地方
代码:
本例总结:相邻页面间跳转,一些数据直接用request.getparameter()方法就可获得,而如果第三个页面需要用到第一个页面输入的属性,则需要在第二个页面将第一个页面的某个属性添加到session中,第三个页面通过session获得第一个页面的属性。
#########index.jsp "> my jsp 'index.jsp' starting page 。。。。。。。。。 #########session.jsp 以上与index.jsp那部分相同 您的名字是: 您最喜欢去的地方是:###############result.jsp 以上与index.jsp那部分相同
显示答案
您的名字是:
您最喜欢去的地方是:
6.5 application对象
用途:用于保存所有应用程序中的公有数据;
存在:服务器启动时自动创建,服务器停止时销毁;
没被销毁时,所有用户均可共享该application对象。
与session对比:application对象生命更长,类似于“全局变量”
获取初始化参数parameter
在 项目名/webcontent/web_inf/web.xml 中
例子,在web.xml 配置连接mysql所需的url参数url jdbc:mysql://127.0.0.1:3306/db_database
application有两种方法:
application.getinitparameter(string name) //根据参数名求参数值
application.getinitparameternames() //获取所有参数名组成枚举类型
例:获取web.xml中全部初始化参数
读写attribute
session只在当前客户的会话范围内有效,当超过保存时间,session对象被收回;application对象在整个应用区域内有效。
application的方法有:
getattributenames()
getattribute(string name)
setattribute(string key,object obj)
removeattribute(string name)
6.6 out对象
用途:用于在浏览器输出信息,管理服务器上的输出缓冲区。
向浏览器输出数据
例:
管理缓冲
方法有:
clear()
clearbuffer()
flush()
isautoflush()
getbuffersize()
6.7 其他内置对象
pagecontext、config、page、exception
喎?>
推荐阅读
-
jsp之四大域对象与九大内置对象学习讲解
-
Jsp开发基础知识+九大隐式对象+11个内置对象+标签库(实际web开发中的典型)
-
JSP Servlet基础学习之JSP脚本中的9个内置对象
-
jsp九个内置对象及4个作用域及6种基本动作
-
JSP的9大内置对象之(一).与Servlet有关的内置对象: page、config
-
JSP内置对象详解之page、out、exception、config、pageContext内置对象
-
6、JSP语言基础之---JSP内置对象
-
Jsp的内置对象之Reques
-
jsp之四大域对象与九大内置对象学习讲解
-
Jsp开发基础知识+九大隐式对象+11个内置对象+标签库(实际web开发中的典型)