内置对象,就是在jsp中,不需要创建(由服务器<容器>来创建),可以直接使用的对象。
一共有九大内置对象
request、response、out、session、application、pageContext、page、config、exception
1.out对象:向客户端输出信息
学会参考J2EE api
它是 JspWriter类的实例, 由容器创建, 主要有两个方法,print和println,后者不能实现换行
举例:输出一段粗体文字
out.print("<b>这是一段粗体文字</b>");
我们可以用out.print向 客户端输出任何信息,比如说输出一个表格,等等。
在网页上使用System.out.println(),信息输出到 控制台上,一般用在调试阶段。
2.request对象:获取客户端传递到服务器的信息。
request究竟是哪个类的实例??不确定,因为不同的容器定义了不同名字的类,确定的是都继承了接口。
ServletReqest接口 --> HttpServletRequest
request实现了HttpServletRequest接口。
request对象不是我们创建的,是由容器创建的!!
J2EE只是提供了一个规范, 各种服务器按照规范创建对象。
商业版 服务器: IBM WebSphere BEA WebLogic免费版服务器 : Tomcat JBoss Resin
request常用方法举例
(1)getParameter
获取客户端传递给服务器的一个参数的值
(2)getParameterNames
获取客户端传递给服务器的所有参数的名字
(3)getParameterValues
获取一个参数的所有值(比如checkbox的情况)
(4)setAttribute
(5)getAttribute attribute=属性(6)removeAttribute
主要用在struts框架中
必须在同一次请求中设置的属性,才能获取到
两种include方法都可以,说明都可以看成是同一次请求操作。
(7)getAttributeNames(8)getCookies,讲Cookie的时候单独讲
cookie 小甜饼,把个人信息存放在客户端的一门技术
(9)getCharacterEncoding
(10)getContentLength
(11)getMethod
(12)getRequestURL
(13)getRemoteAddr
(14)getServerName
(13)getServerPort
(14)getServletPath
(15)getContextPath
(16)getHeader,getHeaders,getHeaderNames
Header:网页头,网页控制信息
request.getHeader("Referer") 表示访问来自的网页
3.response对象(和request类似)
向客户端浏览器输出信息,对客户的请求做成响应
ServletResponse
HttpServletResponse
org.apache.catalina.connector.ResponseFacade
addCookie
addHeader添加
containsHeader是否存在
setHeader设置
sendRedirect 重要(跳转,重新定向)
response.getWritter().print();向网页打印东西(和out.print()功能类似,但还有区别)
大家继续看一下有哪九大内置对象?request、response、out、session、application、pageContext、page、config、exception
4.session
会对象,什么叫会话?
会话失效时间 ,tomcat中默认是30分钟,可以设置。 每个用户的会话空间是隔离的。
HttpSession
org.apache.catalina.session.StandardSessionFacade
public Object getAttribute(String name)
public Enumeration getAttributeNames()
public long getCreationTime()
public String getId()
public long getLastAccessedTime()
public int getMaxInactiveInterval()
public void invalidate()
public boolean isNew(
public void removeAttribute(String name)
public void setAttribute(String name, Object value)
public void setMaxInactiveInterval(int interval)最大不活跃时间设置
用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jslib/jquery.js"></script>
<script type="text/javascript">
$(function(){
$("#c").bind("click",function(){
if($.trim($("#color").val()).length==0)
{
$("#color").focus();
return;
}
//在服务器上保存颜色在session中
$.ajax("save.jsp?color="+$("#color").val());
$("body").css("background-color",$("#color").val());
$("#p1").bind("click",function(){
window.open("page1.jsp");
});
$("#p2").bind("click",function(){
window.open("page2.jsp");
});
});
})
</script>
</head>
<body>
<input type="button" value="设置颜色:" id="c"/><input type="text" id="color"/><br>
<input type="button" value="打开窗口1" id="p1"/>
<input type="button" value="打开窗口2" id="p2"/>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
body
{
<%
String color;
if(session.getAttribute("color")==null)
{
color="black";
}
else
{
color=session.getAttribute("color").toString();
}
%>
background-color:<%=color%>;
}
</style>
</head>
<body>
这是第一个页面!
</body>
</html>
5.application
application,session,request:都可以通过setAttribute来设置属性,用getAttribute来获取属性,但是可见范围不一样。
application对象所设置的属性,所有会话可见,而session对象设置的属性,只有在同一个session中可见。
同样,前面讲过的request,它所设置的属性,只有在同一次请求之间可见。
application 不会过期,在整个服务器运行期间都有效,服务器重启后丢失。
目前为止讲了5个内置对象
out:所属类JspWriter
request:实现了HttpServletRequest接口(此接口继承于ServletRequest接口)
response:实现了HttpServletResponse接口(此接口继承于ServletResponse接口)
session:实现了HttpSession接口
application对象实现的接口ServletContext
application的其他一些方法:
application.getRealPath()
C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Test
得到的是程序最终部署完成的一个目录。
6.page对象
JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。
7.config对象
ServletConfig接口
使用的比较少,这个对象一般用来配置指定jsp的参数,如同servlet中参数配置。web.xml
http://cavonchen.blog.163.com/blog/static/1130143962009107105232614/
8.exception对象
在可能产生错误的文件中用page指令指定errorpage
在所指定的errorpage中,设置isErrorPage="true"这个page指令,然后用exception对象获取错误信息。
<%@page errorPage="error.jsp"%>
http://blog.csdn.net/kingskyleader/article/details/4705250
session也是需要在页面上设置page指令的,默认是有session,可以用session="false"去掉。
9.pageContext对象
所属的类型: PageContext
作用:
a.可以用它获取其他八大内置对象的句柄(本身的句柄不用获取)
out pageContext.getOut()
request pageContext.getRequest();
response pageContext.getResponse();
session pageContext.getSession();
application pageContext.getServletContext();
config pageContext.getServletConfig();
exception pageContext.getException();
page pageContext.getPage();
b.可以用它设置或者获取4个不同范围(page,request,session,application)内的变量的值
设置的值只能在本页面内有效
pageContext.setAttribute ("name" , "John") ;
设置的值在同一个request请求中有效。
pageContext.setAttribute("name" , "John", PageContext.REQUEST_SCOPE))
相当于request.setAttribute("name" , "John");
设置的值在同一个session请求中有效。
pageContext.setAttribute("name" , "John", PageContext.SESSION_SCOPE))
相当于session.setAttribute("name" , "John");
设置的值在整个应用中有效。
pageContext.setAttribute("name" , "John", PageContext.APPLICATION_SCOPE))
相当于application.setAttribute("name" , "John");
out,response,[page,request,session,application],config,exception,pageContext