Servlet 教程 之 Servlet 表单数据 8

简介: 该教程展示了如何使用Servlet读取表单数据。`ReadParams` Servlet演示了通过`getParameterNames()`方法获取所有表单参数名,并遍历这些参数。在`doGet`方法中,它创建HTML响应,显示参数名和值。表单示例包括三个复选框(数学、物理、化学),提交后会调用Servlet。web.xml配置了Servlet映射。

Servlet 教程 之 Servlet 表单数据 8

Servlet 表单数据

读取所有的表单参数

以下是通用的实例,使用 HttpServletRequest 的 getParameterNames() 方法读取所有可用的表单参数。该方法返回一个枚举,其中包含未指定顺序的参数名。

一旦我们有一个枚举,我们可以以标准方式循环枚举,使用 hasMoreElements() 方法来确定何时停止,使用 nextElement() 方法来获取每个参数的名称。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class ReadParams
    */
    @WebServlet("/ReadParams")
    public class ReadParams extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet()
      */
      public ReadParams() {
      super();
      // TODO Auto-generated constructor stub
      }

      /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // 设置响应内容类型
      response.setContentType("text/html;charset=UTF-8");
      PrintWriter out = response.getWriter();
      String title = "读取所有的表单数据";
      String docType =

       "<!doctype html public \"-//w3c//dtd html 4.0 " +
       "transitional//en\">\n";
       out.println(docType +
       "<html>\n" +
       "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n" +
       "<body bgcolor=\"#f0f0f0\">\n" +
       "<h1 align=\"center\">" + title + "</h1>\n" +
       "<table width=\"100%\" border=\"1\" align=\"center\">\n" +
       "<tr bgcolor=\"#949494\">\n" +
       "<th>参数名称</th><th>参数值</th>\n"+
       "</tr>\n");
      

      Enumeration paramNames = request.getParameterNames();

      while(paramNames.hasMoreElements()) {

       String paramName = (String)paramNames.nextElement();
       out.print("<tr><td>" + paramName + "</td>\n");
       String[] paramValues =
       request.getParameterValues(paramName);
       // 读取单个值的数据
       if (paramValues.length == 1) {
           String paramValue = paramValues[0];
           if (paramValue.length() == 0)
               out.println("<td><i>没有值</i></td>");
           else
               out.println("<td>" + paramValue + "</td>");
       } else {
           // 读取多个值的数据
           out.println("<td><ul>");
           for(int i=0; i < paramValues.length; i++) {
           out.println("<li>" + paramValues[i]);
       }
           out.println("</ul></td>");
       }
       out.print("</tr>");
      

      }
      out.println("\n\n");
      }

      /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      doGet(request, response);
      }

}
现在,通过下面的表单尝试上面的 Servlet:

<!DOCTYPE html>



数学
物理
化学



设置相应的 web.xml:

<?xml version="1.0" encoding="UTF-8"?>



ReadParams
com.baidu.test.ReadParams


ReadParams
/TomcatTest/ReadParams

目录
相关文章
|
1天前
|
Java
Servlet 教程 之 Servlet 处理日期 1
Servlet教程介绍了Java的`java.util.Date`类,用于处理日期和时间。Date类提供两个构造器,一个初始化当前日期,另一个基于毫秒数。关键方法包括:`after()`和`before()`判断日期先后,`compareTo()`比较日期,`equals()`检查日期是否相同,`getTime()`获取毫秒值,`setTime()`设置时间,`hashCode()`和`toString()`用于对象标识和字符串转换。
7 2
|
1天前
|
XML 数据格式
Servlet 教程 之 Servlet 文件上传 3
该教程介绍了如何使用Servlet进行文件上传。在web.xml中配置了Servlet `UploadServlet`,类为`com.baidu.test.UploadServlet`,映射路径为`/TomcatTest/UploadServlet`。用户需通过创建的HTML表单提交文件,访问URL为:http://localhost:8080/TomcatTest/upload.jsp。
6 0
|
1天前
|
存储 Java Apache
Servlet 教程 之 Servlet 文件上传 2
该教程介绍了如何使用Servlet进行文件上传。关键步骤包括:确保引入Apache Commons FileUpload和IO库,创建`UploadServlet`,设置上传配置,解析请求以提取文件数据,并将文件保存至服务器指定目录。如果上传成功,用户将被重定向到`message.jsp`显示提示信息。
6 1
|
2天前
|
Java 开发者
Servlet 教程 之 Servlet 文件上传 1
Servlet 文件上传教程展示了如何利用 HTML 表单和 Servlet 处理文件上传。关键点包括:POST 方法的 form,enctype 设为 &quot;multipart/form-data&quot;,以及 action 指向如 UploadServlet 的处理程序。所需的 jar 包有 commons-fileupload-1.3.2 和 commons-io-2.5.jar。Servlet 3.0 已内置文件上传支持,无需额外组件。示例的 upload.jsp 文件包含一个单文件上传表单,使用 input[type=&quot;file&quot;] 元素。
14 5
|
2天前
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 数据库访问 2
本教程讲解如何在Servlet中实现数据库访问。首先确保了解JDBC并配置MySQL驱动(如mysql-connector-java-5.1.39-bin.jar),在Eclipse Web项目中需将驱动放入Tomcat的lib目录。创建名为`websites`的数据库表,插入测试数据。之后展示了一个Servlet示例,该示例连接到数据库,执行SQL查询以获取`websites`表中的`id`、`name`和`url`,并将结果输出到HTML响应中。要运行Servlet,需在web.xml中配置并访问指定URL。
12 4
|
2天前
|
Java 关系型数据库 MySQL
Servlet 教程 之 Servlet 数据库访问 1
本教程聚焦Servlet数据库访问,需预先了解JDBC。确保配置MySQL驱动,可下载`mysql-connector-java-5.1.39-bin.jar`。在Eclipse Web项目中,需将该jar包放入Tomcat的lib目录。首先创建名为`websites`的表,含站点名称、URL、Alexa排名和国家等字段,然后插入示例数据,包括Google、淘宝、百度等网站的信息。
97 58
|
2天前
|
应用服务中间件
Servlet 教程 之 Servlet Session 跟踪 4
Servlet教程讲解了如何进行Session跟踪,HTTP协议本身无状态,但可通过以下方式维持会话:删除特定属性、整个Session或设定超时时间(使用setMaxInactiveInterval())。此外,可使用logout注销用户,或在web.xml配置全局超时。在Servlet中,getMaxInactiveInterval()返回Session超时(以秒计),例如,web.xml设为15分钟,则返回900。
7 0
|
3天前
|
存储
Servlet 教程 之 Servlet Cookie 处理 7
Servlet教程展示了如何删除Cookie。Servlet `DeleteCookies`通过设置setMaxAge()为零,从响应头移除名为&quot;url&quot;的Cookie。当运行此Servlet,之前的ReadCookies返回的url将是null。代码包括检查请求中的Cookie,匹配名称后删除,并显示删除确认信息。
4 0
|
3天前
Servlet 教程 之 Servlet Cookie 处理 6
该教程展示了如何使用Servlet读取Cookie。在`doGet`方法中,通过`HttpServletRequest`的`getCookies()`获取Cookie数组,然后遍历并使用`getName()`和`getValue()`获取每个Cookie的详细信息。如果找到名为&quot;name&quot;的Cookie,将其最大生存期设为0以删除。输出显示Cookie的名称和解码后的值。当无Cookie时,则显示相应消息。
5 0
|
5天前
|
XML 数据格式
Servlet 教程 之 Servlet Cookie 处理 5
Servlet教程展示了如何处理Cookie。创建Cookie涉及构造函数(键值对),设置最大生存周期(如24小时)并将其添加到HTTP响应头。给定示例显示了一个Servlet,它从表单接收名字和URL,编码为Cookie,设置过期时间,然后在响应中发送。HTML表单用于触发Servlet。需在web.xml配置Servlet并用HTML页面调用。
7 1