response对象常用的方法如表2-3所示。
session对象常用的方法如表2-4所示。
application对象常用的方法如表2-5所示。
out对象
out对象主要用来向客户端输出数据,控制管理输出的缓冲区(buffer)和输出流(output stream)。它被封装成javax.servlet.jsp.JspWriter 接口,PrintWriter使用它向客户端发送输去流。其生命周期为当前页。
常用方法:
(1)out.print(type)、out.println(type)::输出各种类型数据。
(2)out.newLine( ):输出一个换行符。
(3)out.flush( ):输出缓冲区里的数据。
(4)out.close( ):关闭输出流,清除所有的内容
其他方法有:
(1)void clearBuffer( ):清除缓冲区的当前数据,并把数据输出到客户端。
(2)void clear( ):清除缓冲区里的数据,但不会把数据输出到客户端。
(3)int getBufferSize( ):返回目前缓冲区的大小(kb),如不设缓冲区则为0。
(4)int getRemaining( ):获得缓冲区中没有被占用的空间的大小(kb)。
(5)boolean isAutoFlush( ):返回布尔值。回传true表示缓冲区满时会自动清除,false表示不会自动清除并且产生异常处理。
exception对象
若要使用exception 对象时,必须在page 指令中设定。< %@ page isErrorPage="true" %>才能使用。
exception提供的三个方法:
- getMessage( )
- getLocalizedMessage( )、
- printStackTrace(new java.io.PrintWriter(out))
pageContext对象
pageContext对象能够存取其他内置对象,即又可以初始化其他内置对象,又可以修改内置对象,所以它就是一个容器,用来提供一个单一的接口以便于管理各种公开对象。
1.pageContext对象存取其他内置对象属性的方法,此时需要指定范围的参数。
- Object getAttribute(String name, int scope)
- Enumeration getAttributeNamesInScope(int scope)
- void removeAttribute(String name, int scope)
- void setAttribute(String name, Object value, int scope)
int scope范围参数有四个,从1到4分别代表四种范围:
- PAGE_SCOPE,默认情况
- REQUEST_SCOPE
- SESSION_SCOPE
- APPLICATION_SCOPE
2.PageContext对象取得其他隐含对象的方法
- Exception getException( )回传目前网页的异常,不过此网页要为error page,
- JspWriter getOut( ) 回传目前网页的输出流,例如:out
- Object getPage( )回传目前网页的Servlet 实体(instance),例如:page
- ServletRequest getRequest( )回传目前网页的请求,例如:request
- ServletResponse getResponse( )回传目前网页的响应,例如:response
- ServletConfig getServletConfig( )回传目前此网页的ServletConfig 对象,例如:config
- ServletContext getServletContext( )回传目前此网页的执行环境(context),例如:application
- HttpSession getSession( )回传和目前网页有联系的会话(session),例如:session
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 的属性对象
config 对象
背景知识:jsp和servlet有什么区别?
- servlet是在服务器端执行的java程序,只不过它有专门的一套规则(就是我们平常所说的api);
- jsp说得简单点就是用另一套简单的规则写的servlet程序,它可以写java代码,还可以写html代码,JavaScript,css等等……,但是到服务器端首先会被转成servlet程序然后就按照servlet的执行顺序执行了。
config 对象里存放着一些Servlet 初始的数据结构。
config 对象实现于javax.servlet.ServletConfig 接口,它共有下列四种方法:
- public String getInitParameter(name)
- public java.util.Enumeration getInitParameterNames( )
- public ServletContext getServletContext( )
- public Sring getServletName( )
配置方法:
config对象相对来说使用的比较少,这个对象一般用来配置指定jsp的参数,如同servlet中参数配置。毕竟jsp本质是servlet,他们的配置方式是差不多。
<servlet>
<servlet-name>test</servlet-name>
<jsp-file>/test.jsp</jsp-file>
<!-- 注意这里要么是jsp-file要么是servelt-class标签-->
<init-param>
<param-name>username</param-name>
<param-value>zhang</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
以上就是对test.jsp配置的参数username,对应值为zhang;
- 当通过映射名test运行(注意不是test.jsp)时,其实运行的是test.jsp文件,其中test为映射路径.、我们可以使用<%=config.getInitParameter("username")%>获得参数值:zhang。
- 如果直接使用test.jsp访问页面,也能访问,但是不能取得配置参数值。
- 所以如果想要直接使用test.jsp运行,要修改映射路径为<url-pattern>/test.jsp</url-pattern>
总之:通过上边解释,可以了解到jsp和servlet一样可以任意配置映射,但是jsp和servlet有不同之处,尤其jsp映射后可以使用原始路径访问也可使用映射访问
http://cavonchen.blog.163.com/blog/static/1130143962009107105232614/
总结1:
- 用test映射名访问页面,也能访问,但是不能取得web.xml配置参数值。
- 用test.jsp访问页面,也能访问,如果不修改修改映射路径为<url-pattern>具体指向 /test.jsp ,是不能取得web.xml配置参数值。
总结2:
- 相同点:jsp和servlet一样可以任意配置映射
- 不同点:jsp映射后可以使用原始路径访问(如test.jsp)也可使用映射名(如test)访问