设计一个Servlet接收表单,寻找表单传来的所有变量名字,并把它们放入表格中,没有值或有多个值的变量都突出显示。设计思路:首先,程序通过HttpServletRequest的getParameterNames()方法得到表单中所有的变量名字. getParameterNames()方法返回的是一- 个枚举集合( Enumeration)。接下来,循环遍历这个Enumeration,通过hasMoreElements()方法确定何时结束循环,利用nextElement()方法得到Enumeration中的各个项。由于nextElement方法返回的是一个Object,要把它转换成字符串,再调用getParameterValues()方法得到字符串数组,如果这个数组只有一个元素且为空字符串,说明这个表单变量没有值,Servlet以斜体形式输出“No Value";如果数组元素个数大于1,说明这个表单变量有多个值,以列表形式输出这些值;其他情况下Servlet直接把变量值放人表格。
时间: 2023-06-11 19:06:22 浏览: 180
获取提交的表单元素的值
下面是一个示例代码,实现了上述的Servlet接收表单并将变量名及其值放入表格中,没有值或有多个值的变量用特殊样式突出显示。
```java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FormProcessor extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Form Processor Results</title>");
out.println("<style>");
out.println(".no-value { font-style: italic; }");
out.println(".multiple-values { font-weight: bold; }");
out.println("</style>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Form Processor Results</h1>");
out.println("<table border='1'>");
out.println("<tr><th>Variable Name</th><th>Value</th></tr>");
java.util.Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1 && paramValues[0].equals("")) {
out.println("<tr><td>" + paramName + "</td><td class='no-value'>No Value</td></tr>");
} else if (paramValues.length > 1) {
out.println("<tr><td>" + paramName + "</td><td class='multiple-values'><ul>");
for (int i = 0; i < paramValues.length; i++) {
out.println("<li>" + paramValues[i] + "</li>");
}
out.println("</ul></td></tr>");
} else {
out.println("<tr><td>" + paramName + "</td><td>" + paramValues[0] + "</td></tr>");
}
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
}
```
在上述代码中,我们首先设置了响应的内容类型为“text/html”,然后使用PrintWriter对象out获取输出流,用于输出HTML代码。
接着,我们输出了HTML的头部信息,包括页面标题和样式定义。在样式定义中,我们定义了两个样式类:.no-value用于表示没有值的变量,.multiple-values用于表示有多个值的变量。
在输出表格时,我们首先输出表格的标题行,包括“Variable Name”和“Value”两列。然后通过调用request.getParameterNames()方法获取表单中所有的变量名字,并循环遍历这个Enumeration对象。对于每个变量,我们通过request.getParameterValues(paramName)方法获取其值,如果值的个数为1且为空字符串,则使用.no-value样式将值输出为“No Value”;如果值的个数大于1,则使用.multiple-values样式将值输出为一个无序列表;否则直接输出该值。
最后,我们输出HTML的尾部信息,包括</body>和</html>标记,完成整个页面的输出。
阅读全文