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():重写异常错误的栈执行轨迹



猜你喜欢

转载自blog.51cto.com/maplebb/2170695