Servlet 3.1 表单数据

Java Servlet 使用 doGet() 方法处理 HTTP GET 请求,使用 doPost() 方法处理 HTTP POST 请求

HTTP 请求方法

很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序

浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法

GET 方法

GET 方法向页面请求发送已编码的用户信息

页面和已编码的信息中间用 ? 字符分隔

https://www.twle.cn/hello?name=twle&greet=nice to meet you

GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中

如果要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法

GET 方法有大小限制:请求字符串中最多只能有 1024 个字符

这些信息使用 QUERY_STRING 头传递,并可以通过 QUERY_STRING 环境变量访问

Servlet 使用 doGet() 方法处理这种类型的请求

POST 方法

另一个向后台程序传递信息的比较可靠的方法是 POST 方法

POST 方法打包信息的方式与 GET 方法基本相同,但是 POST 方法不是把信息作为 URL 中 ? 字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息

消息以标准输出的形式传到后台程序,我们可以解析和使用这些标准输出

Servlet 使用 doPost() 方法处理这种类型的请求

使用 Servlet 读取表单数据

Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:

  • getParameter()
    调用 request.getParameter() 方法来获取表单参数的值
  • getParameterValues()
    如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框
  • getParameterNames()
    如果想要得到当前请求中的所有参数的完整列表,则调用该方法

使用 URL 的 GET 方法范例

下面是一个简单的 URL,将使用 GET 方法向 FormGetServlet 程序传递两个值

http://localhost:8080/servlet/form/get?name=简单编程&url=www.twle.cn

使用 getParameter() 方法,可以很容易地访问传递的信息

// author: 简单教程(www.twle.cn)
// Copyright © 2015-2065 www.twle.cn. All rights reserved.

package cn.twle.demo;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*; 
import javax.servlet.annotation.WebServlet;
import java.util.Enumeration;

@WebServlet(name = "FormGetServlet ", urlPatterns = {"form/get"})
public class FormGetServlet extends HttpServlet
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 设置响应内容类型
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();
        String title = "使用 GET 方法读取表单数据 | 简单教程(www.twle.cn)";

        String docType = "<!DOCTYPE html>";
        out.println(docType +
            "<title>" + title + "</title>" +
            "<p>" + title + "</p>" +
            "<ul>" +
            "  <li><b>站点名</b>:"
            + request.getParameter("name") + "\n" +
            "  <li><b>网址</b>:"
            + request.getParameter("url") + "\n" +
            "</ul>");
    }

    // 处理 POST 方法请求的方法
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        doGet(request, response);
    }
}

在浏览器上输入 http://localhost:8080/servlet/form/get?name=简单编程&url=www.twle.cn 显示结果如下

使用表单的 GET 方法实例

下面是一个简单的实例,使用 HTML 表单和提交按钮传递两个值。我们将使用相同的 Servlet HelloForm 来处理输入。

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" %> 
<!DOCTYPE html>
<meta charset="utf-8">
<title>Servlet GET 表单范例 | 简单教程(www.twle.cn)</title>
<p>Servlet GET 表单范例 | 简单教程(www.twle.cn)</p>
<form action="/servlet/form/get">
网址名<input type="text" name="name">
<br />
 &nbsp; <input type="text" name="url" />
<input type="submit" value="提交" />

</form>

在浏览器上输入 http://localhost:8080/servlet/form-get.jsp 显示结果如下

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.