一、内置对象application
application对象由服务器负责创建,每个Web服务目录下的 application对象被访问该服务目录的所有的用户所共享,但不同Web服务目录下的 application互不相同。
1、application对象的常用方法
public void set Attribute( String key, Object obj)。application对象可以调用该方法将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。如果添加的两个对象的关键字相同,则先前添加的对象被清除。public Object get Attribute( String key)。获取application对象含有的关键字是key的对象。由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应强制转化为原来的类型。public Enumeration get AttributeNames)。application对象调用该方法产生一个枚举对象,该枚举对象使用nextElemets()遍历application中的各个对象所对应的关键字。public void remove Attribue( String key)。从当前application对象中删除关键字是key的对象。public String get ServletInfo()。获取 Servlet编译器的当前版本的信息。
由于 application对象对所有的用户都是相同的,任何用户对该对象中存储的数据的改变都会影响到其他用户,因此在某些情况下,对该对象的操作需要实现同步处理。
- 注意:有些服务器不直接支持使用
application对象,必须用Servlet context类声明这个对象,再使用get Servlet Context()方法对这个application对象进行初始化。
2、用application对象制作留言板
在这里使用“向量”这种数据结构,java的 java. util包中的Ⅴector<V>泛型类负责创建一个向量对象。如果你已经学会使用数组,那么使用向量就会很容易。当我们创建一个向量时不用像数组那样必须要给出数组的大小。向量创建后,例如,对于“ Vector< String>a = new Vector< String>();”可以使用add(V o)方法把 String对象a添加到向量的末尾,向量的大小会自动增加。
example3_18_input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="example3_18_pane.jsp" method="post" name="form">
输入您的名字:<br>
<input type="text" name="peopleName">
<br>输入您的留言标题:<input type="text" name="Title">
<br>输入您的留言:<br><textarea name="messages" rows="10" cols="36"></textarea>
<br><input type="submit" value="提交信息" name="submit">
</form>
<form action="example3_18_show.jsp" method="post" name="form1">
<input type="submit" value="查看留言板" name="look">
</form>
</body>
</html>
example3_18_show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
public String handleStr(String s){
try{
byte bb[] = s.getBytes("ISO-8859-1");
s = new String(bb,"UTF-8");
return s;
}catch(Exception exp){
return s;
}
}
%>
<%
Vector v = (Vector)application.getAttribute("Mess");
for(int i = 0;i < v.size();i ++){
String message = (String)v.elementAt(i);
String a[] = message.split("#");
out.print("留言人:" + handleStr(a[0]) + ",");
out.print("标题:" + handleStr(a[1]) + "<br>");
out.print("留言内容:<br>" + handleStr(a[2]));
out.print("<br>--------------------------<br>");
}
%>
</body>
</html>
example3_18_pane.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
Vector v = new Vector();
int i = 0;
ServletContext application;
synchronized void leaveWord(String s){
application = getServletContext();
i ++;
v.add("No." + i + "," + s);
application.setAttribute("Mess", v);
}
%>
<%
String name = request.getParameter("peopleName");
String title = request.getParameter("title");
String messages = request.getParameter("messanges");
if(name == null){
name = "guest" + (int)(Math.random() * 10000);
}
if(title == null){
title = "无标题";
}
if(messages == null){
messages = "无信息";
}
String s = name + "#" + title + "#" + messages;
leaveWord(s);
out.print("您的信息已提交!");
%>
</body>
</html>
二、内置对象out
out对象是一个输出流,用来向用户端输出数据。在前面的许多例子里曾多次使用out对象进行数据的输出。out对象可调用如下的方法用于各种数据的输出,例如:
out. print( boolean)或out. printIn( boolean)用于输出一个布尔值。out. print(char)或out. printIn(char)输出一个字符。out. print( double)或out. printIn( double)输出一个双精度的浮点数。out. print( fload)或out. printIn( float)用于输出一个单精度的浮点数。out. print(long)或out. printIn(long)输出一个长整型数据。out. print( String)或out. printIn( String)输出一个字符串对象的内容。out. newLine()输出一个换行符。out. flush()输出缓冲区里的内容。out. close()关闭流。
方法 printIn和 print的区别是:printIn会向缓存区写入一个换行,而 print不写入换行。但是浏览器的显示区域目前不识别 printIn写入的换行。如果希望浏览器显示换行,应当向浏览器写入<br>实现换行。
应用application与out对象详解
本文深入探讨了Java Web开发中的内置对象application和out的使用方法。application对象用于跨会话共享数据,如制作留言板功能;out对象则用于向客户端输出数据,包括不同类型数据的输出方法。
283

被折叠的 条评论
为什么被折叠?



