JSP九大内置对象详解分析

来源:互联网 发布:软件项目验收确认书 编辑:程序博客网 时间:2024/05/29 04:41

1.request对象 、2.response对象、 3.pageContext对象、4.session对象、5.application对象、6.out对象、7.config对象、8.page对象、9.exception对象


request对象

request对象主要用于处理客户端请求

request这个对象封装了客户端生成的http请求的所有细节,主要包括http头信息、系统信息、请求方式、参数等。通过request对象提供的对应的方法可以处理客户端浏览器提交的http请求个各项参数。

request对象常用方法

方法名称       

String getParameter(String name)根据页面表单组件名称获取页面提交数据

String[] getParameterValues(String name) 获取一个页面表单组件对应多个值时的用户的请求数据

void setCharacterEncoding(String charset)指定每个请求的编码,在调用getParameter( )之前进行设定,可以解决中文乱码问题

String getRemoteAddr() 返回提交请求的客户机的IP地址

 

注意: setCharacterEncoding方法只能用来处理post方式提交的中文乱码,并且setCharacterEncoding方法必须放在所有getParameter方法之前,不然依然会出现乱按

 

如果使用get请求要处理中文乱码

String un=new String(username.getBy0074es("ISO-8859-1"),"utf-8");


Response

response对象用于响应客户端请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。

 

常用方法:

方法名称 说明

sendRedirect()将请求定位到一个不同的URL,即页面重定向

setHeader() 设置响应头信息

 

setHeader

页面自动刷新

   <body>

   <%! int i = 0;%>

   <%response.setHeader("refresh", "1");

   out.println(++i);%>

</body>

页面定时跳转

<body>

   5秒钟后跳回主页面,如果没有跳转<a href="main.jsp">这里</a>

   <%response.setHeader("refresh", "5;URL=main.jsp");%>

</body>

sendRedirect

语法:response.sendRedirect("跳转页面")

eg: response.sendRedirect("new.jsp");(效果跳转到new.jsp页面)

 

转发与重定向的区别

转发(服务器端跳转):  一次请求

<jsp:forward>

request.getRequestDispatcher("new.jsp").forward(request, response);

重定向(客户端跳转):  两次请求

response.sendRedirect("new.jsp");

<a href="new.jsp">new.jsp</a>

转发重定向:

1.转发是在服务器端完成,因此称为服务器端跳转  

  重定向是在客户端完成,因此称为客户端跳转    

2.转发后,地址栏不会改变

  重定向后,地址栏会改变

3.转发只能在同一个WEB项目范围内进行

  重定向可以再同一个WEB项目内,也可以重定向到其他任意地方eg:response.sendRedirect("http://www.baidu.com");



三 Session

Session在网络中被称为会话。由于HTTP协议是一种无状态的协议,也就是当一个客户端发送请求,服务器端收到请求,

并返回响应后,该连接就结束了,而服务器不保存任何相关的信息。为了弥补这一缺点,HTTP协议提供了session

通过session可以在应用程序的web页面间进行跳转时,保存用户的状态,使得整个用户会话一直存在下去,直到浏览器关闭。

 

常用方法

方法名称 说明

setAttribute(String key,Object value)  key/value的形式保存对象值

getAttribute(String key)   通过key获取对象值

getMaxInactiveInterval()    获取session的有效非活动时间,以秒为单位  (超过设定时间失效)

getId()    获取session对象的编号

invalidate()    设置session对象失效

removeAttribute(String key)   session中删除指定名称(key)所对应的对象


application

application对象用于保存应用程序中的共有数据他在服务器启动时自动创建,在服务器停止时销毁。

application对象存在时,所有用户都可以共享该application对象。session相比application对象生命周期更长,范围更大,类似于系统的全局变量。

常用方法:

方法名称     说明

void setAttribute(String key,Object value) key/value的形式保存对象值

Object getAttribute(String key) 通过key获取对象值

String getRealPath(String path) 返回相对路径的真实路径


对象的作用域

*:都可以保存数据,但作用范围不一样   可以在多个页面间传值(程序员自己定义的)

对象的作用域

名称 对象 说明

page范围  pageContext 在一个页面范围内有效,通过

pageContext对象访问

  request范围request在一个服务器请求范围内有效

  session范围session在一次会话范围内容有效

  application范围 application 在一个应用服务器范围内有效



五 out对象

out对象用于在web浏览器内输出信息,并管理服务器上的输出缓冲区。

在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲区,数据输完后,要及时关闭输出流。

常用方法:

方法 说明

clear() 清除缓冲区中的内容

clearBuffer() 清除当前缓冲区中的内容

flush() 刷新流

isAutoFlush() 检测当前缓冲区已满时是自动清空,还是抛出异常

getBufferSize() 获取缓冲区的大小

 

 


六 pageContext对象

pageContext对象是一个比较特殊的内置对象,用于获取页面上下文,通过他可以获取jsp页面的其他8个内置对象。

pageContext对象的创建和初始化都是由容器完成的。

 

常用方法:

方法 说明

getAttribute(String name) 取得page范围内的值

setAttribute(String name) 设置page范围内的值

getAttribute(String name,int scope) 取得指定范围内的值

setAttribute(String name,int scope) 设置指定范围内的值

scope可以为如下4个值:

PageContext.PAGE_SCOPE 对应于page范围

PageContext.REQUEST_SCOPE 对应于request范围

PageContext.SESSION_SCOPE 对应于session范围

PageContext.APPLICATION_SCOPE 对应于application范围

 

 

七 config对象

config对象用于取得Servlet的配置信息

常用方法:

方法 说明

getServletContext() 获取Servlet上下文

getServletName() 获取Servlet服务器名

getInitParameter() 获取服务器所有初始参数名称,返回值为java.util.Enumeration对象

getInitParameterNames() 名获取服务器中name参数的初始值

 

 

八 page对象

 

page对象代表JSP本身,只有在JSP页面内才是合法的Page对象本质上是包含当前Servlet接口引用的变量。可以看做是this关键字的别名

 

九 exception对象

exception对象用于处理jsp页面发生的异常。只有在page指令中设置isErrorPage属性的值为truejsp页面才可以使用exception内置对象。

 

常用方法:

方法 说明

getMessage() 返回exception对象的异常信息字符串

getLocalizedmessage() 返回本地化的异常错误

toString() 返回关于异常错误的简单信息描述

fillInStackTrace() 重写异常错误的栈执行轨迹

 

eg:500.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"

isErrorPage="true"

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

     <title>My JSP '500.jsp' starting page</title>

  </head>

   <body>

     <h1>该页面发生错误,请联系管理员</h1>

     <%=exception.getMessage() %>

   </body>

</html>



原创粉丝点击