图2.一个web站点回馈表单
图中按钮:submit query--提交;reset――重填
表单句柄将会检验名称和意见栏以确定它们已被填写,如果其中任何一个或两个是空白的,表单句柄会生成一条错误信息;否则它将继续查看用户意见是否与预先设定的字串匹配。如果匹配,它就输出一条专门的信息;否则输出“thank you”。
例2
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="NetObjects ScriptBuilder 2.01">
<TITLE>Feedback Results</TITLE>
</HEAD>
<%!
// 姓名和意见栏不能为空白
// 检查它们的值并返回结果
boolean validateInput(String name, String comment) {
boolean result = true;
// 如果姓名或意见未填写,返回 false 以表明输入无效
if (name.length() == 0)
result = false;
if (comment.length() == 0)
result = false;
return result;
} // 结束输入验证validateInput
// 根据表单上的意见栏输出结果
String getStringCheese (String comment) {
String cheese = "I like cheese.";
String result;
if (comment.compareTo(cheese) == 0)
result = "We like cheese too!";
else
result = "We hope someday you'll learn to like cheese.";
return result;
} //结束 getStringCheese
%>
<BODY BGCOLOR="#F0F0E0">
<%
// 获取通过表单提交的数据
String name = request.getParameter("name");
String age = request.getParameter("age");
String comment = request.getParameter("comment");
boolean isValid;
isValid = validateInput(name, comment);
// 根据用户是否未填写姓名或意见栏决定输出内容
if (isValid) {
%>
<H2>Thank you for your feedback!</H2>
<H3>
<%
//输出意见栏的查询结果
out.println(getStringCheese(comment));
} // 结束 if 程序段
else {
out.println("You didn't give us your name or a comment.");
%>
</H3>
Please <a href="feedback_form.html">try again</a>
<%
} //结束 else 程序段
%>
</BODY>
</HTML>
这个例子假定用户输入的意见是“I like cheese."(我喜欢奶酪)在代码中可以看到,这一响应是为填写这条意见的用户定制的。表单句柄将会返回如图3所示的页面:









