1.作用范围
pageContext:页面容器,默认在当前页面中起作用
request:在一次服务器跳转中有效。通过超链接跳转,地址栏改变,属于客户端跳转,request无效。request表示客户端的请求,一次请求服务器只会给予一次回应。如果请求的同时地址栏改变了,它也相当于一次请求,那么第一次请求的内容就已经消失了,无法取得。
session:在一个浏览器中始终有效。每一个新的浏览器连接上服务器后就是一个新的session,表示每一位不同的上网者各自的属性,所以新的浏览器打开后无法取得其它session设置的属性。
application:在同一台服务器活动范围内所有用户可见,不管何种跳转。不过设置过多会影响服务器性能。
注意:<jsp:forward page=""/>
属于服务器跳转,无条件直接跳转
response.setHeader()和response.sendRedirect()通过头信息跳转方式的属于客户端跳转
只有服务器端跳转才能够将request范围的属性保存到跳转页
如果使用的是服务器跳转,则执行到跳转语句时会立刻进行跳转;如果使用客户端跳转,则是在整个页面执行完之后才执行跳转。
2.各内置对象常用法法
pageContext进行属性设置,方法:
public abstract void setAttribute(java.lang.String name,java.lang.Object o,int scope)
第四个参数指定page属性范围。较少使用。
内置对象共有方法:
public void setAttribute(String name,Object c):设置属性的名称及内容
public Object getAttribute(String name):根据属性名称
public void removeAttribute(String name):删除指定的属性
1).request对象
方法:
public String getParameter(String name):接收客户端发来的请求参数内容
public String[] getParameterValues(String name):取得客户端发来的一组请求参数内容
public Enumeratioin getParameterNames():取得全部请求参数的名称
void setCharacterEncoding(String env):设置统一的请求编码
public Httpsession getSession():取得当前的session对象
public String getContextPath():取得上下文资源路径
eg:
Enumeration enu = request.getParameterNames();
while(enu.hasMoreElements()){
String paramName = (String)enu.nextElement();
if(paramName.startsWith("**"){
String[] paramValue = request.getParameterValues(paramName);
for(int x=0;x<paramValue.length;x++){
System.out.println(paramValue[x]);
}
}else{
String paramValue = request.getParameter(paramName);
System.out.println(paramValue);
}
}
2).response对象
方法:
public void addCookie(Cookie cookie):向客户端加加Cookie
public void setHeader(String name,String value):设置回应的头信息
public void sendRedirect(String location):页面跳转
eg:
response.setHeader("refresh","2;URL=XXX.html");//两秒后跳转
3).Cookie对象
方法;
public Cookie(String name,String value):实例化Cookie对象,同时设置Cookie的名称和内容
public String getName():取得Cookie的名称
public String getValue():取得Cookie的内容
public void setMaxAge(int expiry):设置Cookie的保存时间,以秒为单位
4).Session对象
public String getId():取得Session ID
public boolean isNew():判断是否是新的session(新用户)
public void invalidate():让session失效
public Enumeration getAttributeNames():得到全部属性的名称
5).application对象
方法:
String getRealPath(String path):得到虚拟目录对应的绝对路径,常用于文件上传,确保绝对路径有效
6).config对象
方法:
public String getInitParameter(String name):取得指定名称的初始化参数内容
public Enumeration getInitParameterNames():取得全部的初始化参数名称
需要修改web.xml置置初始化参数