servlets - 如何在servlet中获取表单参数? request.getAttribute 不起作用

标签 servlets forms http-request-parameters

是否可以让同一个 servlet 执行验证?似乎在这里可能需要利用某种递归,但是当我在电子邮件框中输入内容并单击“提交”时,电子邮件参数仍然为空。 单击“提交”后,URL 更改为:http://localhost/servlet/EmailServlet?Email=test

该页面显示 Email: null 和文本框,但我希望它能够通过验证功能(即不为 null)。是否有可能实现这种类型的递归行为?

public class EmailServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, 
            HttpServletResponse response) throws ServletException, IOException 
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        String theForm =
            "<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n" 
            + "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
        String email = (String) request.getAttribute("Email");

        // Bogus email validation...
        if( email == null )
        {
            out.println("Email: " + email + "\n" + theForm);
        }
        else if(emailAddressNotBogous(email))
        {
            out.println("Thank you!");
        }
        else
        {
            out.println("“Invalid input. Please try again:\n" + theForm);
        }
        out.flush();        
    }
}

更新:正如已接受的答案所指出的那样,代码中存在错误。将 getAttribute 更改为 getParameter 修复了“问题”:)。

String email = (String) request.getAttributegetParameter("Email");

最佳答案

要在 servlet 中获取表单参数,请使用:

  request.getParameter("Email");

是的,您可以使用相同的 servlet,但使用两个不同的 servlet 来完成此操作会更容易。

关于servlets - 如何在servlet中获取表单参数? request.getAttribute 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292260/

相关文章:

java - Spring MVC请求方法 'GET'不支持

javascript - 单击父按钮单击时如何重置子输入的数据和 View ?

jQuery - AJAX - 在成功函数中获取请求参数

java - 从 URL 中提取参数

jsf - 如何在不使用 HTML 表单的情况下以编程方式将 POST 请求发送到 JSF 页面?

java - 在 java servlet doPost() 方法中发送重定向

html - Servlet返回“HTTP状态404请求的资源(/Servlet)不可用”

java - 从另一个 servlet 获取 Primefaces EventBus

javascript - 如何将文本框和其他 html 元素值获取到标签中?

php - 使用 PHP 从数据库填充单选按钮的值