JSP内置对象,就是当编写JSP页面时,无须做任何申明就可以直接使用的对象。
1. out内置对象
out对象用于向客户端输出数据。
1.1 print()方法
用于向页面打印输出信息,输出的信息在返回客户端的源代码中不换行。
例如,在JSP页面中有以下代码:
<body>
<%
out.print("123");
out.print("456");
%>
</body>
预览页面后,在IE浏览器中看到的显示内容为“123456”,服务器返回的HTML代码为:
<body>
123456
</body>
2.2 println()方法
也用于向页面打印输出信息,输出的信息在返回客户端的源代码中换行,但是页面显示不会换行,只能用<br>的标记换行。
如果把JSP页面中的代码改为:
<body>
<%
out.println("123");
out.println("456");
%>
</body>
预览页面后,在IE浏览器中看到的显示内容为“123 456”,服务器返回的HTML代码为:
<body>
123
456
</body>
因此,println()不会让IE浏览器换行显示信息,要实现这个功能,应该使用换行符“<br>”。例如:
<body>
<%
out.print("123");
out.print("<br>");
out.print("456");
%>
</body>
预览后,IE浏览器中显示的内容为:
123
456
服务器返回的HTML代码为:
<body>
123<br>456
</body>
1.3 newLine()方法
表示输出一个回车换行符,如:
<body>
<%
out.print("123");
out.newLine();
out.print("456");
%>
</body>
服务器返回的HTML代码为:
<body>
123
456
</body>
1.4 缓冲区相关的方法
1)flush( )方法:用于刷新流。out.write()输出的信息暂时存储在流对象缓冲区中,刷新操作把缓冲区中的信息传递给目标对象处理。如果缓冲区满了,这个方法被自动调用,输出缓冲区中的信息。
2)clear()方法:表示清除缓冲区中的信息。如果缓冲区是空的,执行此方法会引发IOException异常。
3)clearBuffer():其功能与clear()相似,它将输出缓冲区清除后返回,与clear()不同的是它不抛出异常。
4)getBufferSize():返回输出缓冲区的大小,单位字节,如果没有缓冲区,则返回0。
5)getRemaining():返回缓冲区剩余的空闲空间,单位字节。
6)isAutoFlush():返回一个真假值,用于标识缓冲区是否自动刷新。
2. request内置对象
request对象用来处理客户端的请求,是javax.servlet.http.HttpServletRequest类的实例。
方法名称 | 说明 |
String getParameter(String name) | 根据页面表单组件名称获取页面提交数据 |
Enumeration getParameterNames() | 获取表单内所有名称 |
String[] getParameterValues(String name) | 获取一个页面表单组件对应多个值时的用户的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码,在调用request、getParameter()方法之前进行设定,可以用于解决中文乱码问题 |
request.getRequestDispatcher(String path) | 返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求 |
用request读取多值参数
<%
Enumeratione=request.getParameterNames();
while(e.hasMoreElements()){
String varName=(String)e.nextElement();
if(!varName.equals("hobby")){
String varValue=request.getParameter(varName);
out.print(varName+"="+varValue+"<br>");
}else{
String varValue[]=request.getParameterValues(varName);
out.print(varName+"=");
for(inti=0; i<varValue.length;i++){
out.print(varValue[i]+",");
}
out.print("<br>");
}
}
%>
3. response内置对象
response对象用于响应客户请求并向客户端输出信息,是HttpServletReponse类的实例。
方法名称 | 说明 |
sendRedirect(String path) | 将请求重新定位到一个不同的URL上 (重定向跳转,requestde的生命周期已结束) |
setCharacterEncoding(String charset) | 设置响应所采用的字符编码类型 |
addCookie(Cookie cookie) | 在客户端添加Cookie |
setContentType(String type) | 设置HTTP响应的contentType类型 |
4. session内置对象
一个session会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程。
方法名称 | 说明 |
void setAttribute(String key,Object) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
void invalidate() | 设置session对象失效 |
String getId() | 获取session id |
void setMaxInactiveInterval(int interval) | 设定session的非活动时间 |
Int getMaxInactiveInterval() | 获取session的有效活动时间,以秒为单位 |
5. application内置对象
application操作的是全局的数据,作用域是整个应用程序,生命周期直到服务器停止运行。可用于统计已访问的人数。
方法名称 | 说明 |
void setAttribute(String key,Object value) | 以key/value的形式保存对象值 |
Object getAttribute(String key) | 通过key获取对象值 |
String getAttribute(String path) | 返回相对路径的真实路径 |
Enumeration getAttributeNames() | 返回当前上下文中所有可用的appliaction作用范围变量名,并存储在枚举型对象中。 |
removeAttribute(String name) | 从Servlet容器中删除指定名字的属性。形参是属性名,字符串形式。 |
【例】用application实现一个简单的站点计数器,当访问JSP页面时,页面进行访问次数统计,并打印当前计数值。
<%
int n=0;
String counter=(String)application.getAttribute("counter");
if(counter!=null)
n=Integer.parseInt(counter);
n=n+1;
out.print("您是第"+n+"位访客");
counter=String.valueOf(n);
application.setAttribute("counter",counter);
%>
用application对象可以读取Servlet容器的系统信息,相关方法如下:
1)getMajorVersion():返回Servlet容器支持的Servlet API的主版本号。
2)getMinorVersion():返回Servlet容器支持的Servlet API子版本号,对于Servlet 2.4,子版本号为4,故方法返回4。
3)getServerInfo():返回当前Server的名字与版本号。对于Tomcat5.5.17,返回值为:Apache Tomcat/5.5.17 。