Servlet和jsp九大内置对象

Jsp内置对象out与servlet中response.getWriter()获得对象并不完全匹配,Jsp中是JspWriter类型,而servlet中获得是PrintWriter类型,其实一个是在Jsp中输出,一个是在servlet中输出

jsp与Servlet关系:(详细请看:http://blog.csdn.net/floating520/article/details/7304005)

事实上,JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。


1、request对象(转译后对应javax.servlet.http.HttpServletRequest对象)

request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。

request对象的生命周期:一次请求。

request对象的作用域:JSP页面内有效。

request常用的方法: 

1 object getAttribute(String name)           —-返回指定属性的属性值
2 Enumeration getAttributeNames()         —-返回所有可用属性名的枚举
3 String getCharacterEncoding()             —-返回字符编码方式
4 int getContentLength()                          —-返回请求体的长度(以字节数)
5 String getContentType()                        —-得到请求体的MIME类型(多用途互联网邮件扩展类型)
6 ServletInputStream getInputStream()     —-得到请求体中一行的二进制流
7 String getParameter(String name)         —-返回name指定参数的参数值
8 Enumeration getParameterNames()      —-返回可用参数名的枚举
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
10 String getProtocol()                             —-返回请求用的协议类型及版本号
11 String getScheme()                             —-返回请求用的计划名,如:http.https及ftp等
12 String getServerName()                       —-返回接受请求的服务器主机名
13 int getServerPort()                               —-返回服务器接受此请求所用的端口号
14 BufferedReader getReader()              —-返回解码过了的请求体
15 String getRemoteAddr()                       —-返回发送此请求的客户端IP地址
16 String getRemoteHost()                       —-返回发送此请求的客户端主机名
17 void setAttribute(String key,Object obj)—设置属性的属性值
18 StringgetRealPath(String path)            —-返回一虚拟路径的真实路径
19 String request.getContextPath()          —-返回上下文路径

2、response对象 (转译后对应javax.servlet.http.HttpServletResponse对象)

response对象表示服务器端对客户端的回应主要用于设置头信息、跳转、Cookie等。

response的生命周期:一次响应。

response的作用域:只在JSP页面内有效。

response常用方法:

public void  setHeader(java.lang.String  name, java.lang.String  value)     —-设置头信息的名字和内容
public void sendRedirect(java.lang.String location) throws java.io.IOException  —-跳转,由一个页面跳往另外一个页面
public void addCookie(Cookie  cookie)                                                               —-向客户端加入cookie
public void setContentType(java.lang.String type)    —-设置内容的返回类型

在了解了request与response的用法后,有一个重要的问题需要清楚,请求转移与请求重定向的区别:

请求重定向:response.sendRedirect(), 客户端行为,从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变。

请求转发:request.getRequsetDispatcher().forward(requset,response);服务器行为,是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。(服务器内部转发,所有客户端看不到地址栏的改变)。

3、session对象 (转译后对应javax.servlet.http.HttpSession对象)

session对象用于存储特定的用户会话所需的信息 。

session对象生命周期:从存入数据时开始,默认闲置30分钟后失效。

session对象作用域:会话内有效。(从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话;因为http是无状态的,Session需要使用Cookie作为识别标志。该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。)

session常用方法:

public String getId()                                     —-获取Session对象编号。
public void setAttribute(String key,Object obj)—-将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
public Object getAttribute(String key)             —-获取Session对象中含有关键字的对象。
public Boolean isNew()    
                              —-判断是否是一个新session

4、application对象(转译后对应javax.servlet.ServletContext对象)

application对象用于存储和访问来自任何页面的变量,类似于 session 对象。不同之处在于,所有的用户分享一个 Application 对象,类似于“全局变量”,而 session 对象和用户的关系是一一对应的。

application对象生命周期:服务器启动发送第一个请求时就产生了Application对象,直到服务器关闭。

application对象常用方法:

setAttribute(String key,Object obj)   —-将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key)                    —-获取Application对象中含有字的对象。

5、out 对象(转译后对应javax.servlet.jsp.jspWriter对象)

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。(注意要及时关闭输出流)

其主要方法如下:

clear()            —-清除缓冲区中的数据,若缓冲区已经是空的,则会产生IOException异常;
clearBuffer()   —-清除缓冲区的数据,若缓冲区为空,不会产生IO异常;
flush()             —–直接将目前暂存于缓冲区的数据输出;
getBufferSize()—-返回缓冲区的大小;
getRemaining()—-返回缓冲区的剩余空间大小;
isAutoFlush()   —-返回布尔值表示是否自动输出缓冲区的数据;
输出数据的一些方法:
newLine()                   —-输出换行;
print(datatype data)   —-输出不同数据类型的数据;
println(datatype data) —-输出不同数据类型的数据,并自动换行;

6、pageContext 对象(转译后对应javax.servlet.jsp.PageContext对象)

pageContext对象能够存取其他隐含对象,如request、reponse、session、application 等对象。(实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。)

1.pageContex常用方法:

void setAttribute(String name, Object value, int scope)—-pageContext对象存取其他隐含对象属性的方法,此时需要指定范围的参数:范围参数有四个,分别代表四种范围:PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE

2.pageContext对象取得其他隐含对象的方法:

Exception getException( )               —-回传网页的异常
JspWriter getOut( )                        —-回传网页的输出流
Object getPage( )                           —-回传网页的Servlet 实体
ServletRequest getRequest( )          —-回传网页的请求
ServletResponse getResponse( )      —-回传网页的响应
ServletConfig getServletConfig( )      —-回传此网页的ServletConfig 对象
ServletContext getServletContext( ) —-回传此网页的执行环境
HttpSession getSession( )               —-回传和网页有联系的会话
3.PageContext对象提供取得属性的方法
Object getAttribute(String name, int scope)           —-回传name 属性,范围为scope的属性对象,回传类型为Object
Enumeration getAttributeNamesInScope(int scope) —-回传所有属性范围为scope 的属性名称,回传类型为Enumeration
int getAttributesScope(String name)                     —-回传属性名称为name 的属性范围
void removeAttribute(String name)                       —-移除属性名称为name 的属性对象
void removeAttribute(String name, int scope)        —-移除属性名称为name,范围为scope 的属性对象
void setAttribute(String name, Object value, int scope) —-指定属性对象的名称为name、值为value、范围为scope
Object findAttribute(String name)                         —-寻找在所有范围中属性名称为name 的属性对象


7、config 对象(转译后对应javax.servlet.ServletConfig对象)

config对象的主要作用是取得服务器的配置信息。

config对象常用方法:

  getServletContext()                  —-返回 一个含有服务器相关信息的ServletContext对象。
  getIntParameter(String name)  —-返回初始化参数的值。
  getIntParameterNames()          —-返回包含了Servlet初始化所需要的所有参数,返回类型是枚举型

8、page对象 (转译后对应this)

page对象代表JSP本身,只有在JSP页面内才是合法的。page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。

9、exception对象(转译后对应java.lang.Throwable对象)

exception对象的作用是显示异常信息,必须在page 指令中设定< %@ page isErrorPage=”true” %>才能使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

四个作用域:request域  session域  application域  page域

 

application:
全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

 

session:
会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

 

request:
请求作用域,就是客户端的一次请求。

 

page
一个JSP页面。

以上作用范围使越来越小, request和page的生命周期都是短暂的,他们之间的区别就是:一个request可以包含多个page页(include,forward以及filter)。

request              请求对象                 类型 javax.servlet.ServletRequest           作用域 Request
 
response             响应对象                 类型 javax.servlet.SrvletResponse           作用域 Page
 
pageContext      页面上下文对象           类型 javax.servlet.jsp.PageContext          作用域 Page
 
session                会话对象                 类型 javax.servlet.http.HttpSession         作用域 Session
  
application         应用程序对象             类型 javax.servlet.ServletContext             作用域 Application
 
out                      输出对象                  类型 javax.servlet.jsp.JspWriter               作用域 Page
 
config                配置对象                  类型 javax.servlet.ServletConfig               作用域 Page
 
page                   页面对象                  类型 javax.lang.Object                              作用域 Page
 
exception          例外对象                  类型 javax.lang.Throwable                        作用域 page

发表评论

邮箱地址不会被公开。 必填项已用*标注

昵称 *