【问题标题】:Getting information from servlet created html从 servlet 创建的 html 获取信息
【发布时间】:2011-03-12 03:36:44
【问题描述】:

我有一个 servlet,它创建一个 html 文本框,然后在提交时重定向到另一个 servlet。如何从新的 servlet 访问 html 文本框的值?我可以从新的 servlet 访问 servlet 变量,但我不知道如何访问 html 生成代码的值。

谢谢,

这是获取文本输入的 servlet

  public class ServletB extends HttpServlet {



    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {

        response.setContentType("text/html");

String value = System.getProperty("card");


PrintWriter out = response.getWriter();


out.println("<center><h1>Your preffered method of payment is "+value+"</h1><br />");
out.println("Please Enter Card Number<input type =\"text\" name = \"number\"/><form action=\"http://codd.cs.gsu.edu:9999/cpereyra183/servlet/ServletC\"><input type =\"submit\" value=\"Continue\" /><input type=\"button\" value=\"Cancel\" /></center>");

    }
   }}

这是第一个 servlet 重定向到的 servlet 我所做的只是输出文本输入

  public class ServletC extends HttpServlet {



    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {

        response.setContentType("text/html");

String value = System.getProperty("card");


PrintWriter out = response.getWriter();

out.println(request.getParameter("number")); 
    }
    }

【问题讨论】:

    标签: java html servlets


    【解决方案1】:

    如果你给输入字段一个名字

    <input type="text" name="foo">
    

    然后您可以在后处理 servlet 中通过输入字段的名称将其作为请求参数访问。

    String foo = request.getParameter("foo");
    

    另见:


    与具体问题无关,与大多数 servlet 教程想让我们相信的相反,HTML 实际上属于 JSP,而不是 Servlet。我建议将该 HTML 放在 JSP 中。

    【讨论】:

    • 我看到“已发布另一个答案”消息,我只是知道这是你的一个 :)
    【解决方案2】:

    如果您的标记看起来像这样......

    <form action="anotherServlet">
        <input name="myTextbox" />
    </form>
    

    ...那么您可以在anotherServletdoGet()doPost() 方法中从HttpServletRequest 对象中获取值,如下所示:

    String textboxValue = request.getParameter("myTextbox");
    

    请参阅:ServletRequest#getParameter()

    【讨论】:

    • getParameter 仅在您从 html 页面转到 servlet 时起作用,这是从 servlet 转到 servlet,html 位于 servlet 本身内部
    • “在 servlet 内部”是什么意思? 不要告诉我这是一个实例变量。如果变量是用request.setAttribute(String name, Object value) 设置的,您可以使用request.getAttribute(String name) 将其恢复。
    • 不,它不是实例变量。我所做的只是说 servlet1 通过输出到编写器来创建 html 代码,当我拉起 servlet 1 时,它会显示一个文本框和一个提交按钮,当我提交它时,它会转到 servlet 2,如果 servlet1 是一个常规网页,我可以通过getparameter访问每个html元素,但它是一个servlet而不是一个html文件,所以当我尝试通过调用在servlet 2中使用getparameter时,使用say out.println(request.getParameter("number"));我得到空数字是文本框的名称
    • 我完全不明白你的意思:“这是一个 servlet 不是 html 文件。” servlet1 是否被发送到浏览器?最后,都是 HTML,不管 HTML 是如何生成的。通过向编写器输出 HTML 的点点滴滴来生成 HTML 并不重要。 浏览器只看到 HTML。 您确定将正确的字符串传递给 getParameter()?您确定生成的 HTML 具有您期望的名称的输入吗?您能否将正在提交的表单的标记粘贴到您的问题中?
    • 输入元素必须在表单元素的内部。现在不是。此外,正如 BalusC 所指出的,标记真的属于 JSP,而不是 servlet。
    【解决方案3】:
    public class Formvalid extends HttpServlet {
    
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter pr = response.getWriter();
        boolean flag = true;
    int count=0;
        response.setContentType("text/html");
        Enumeration enume;
        enume = request.getParameterNames();
        while (enume.hasMoreElements()) {
            count++;
            String name = (String) enume.nextElement();
            String value = request.getParameter(name);
            if (value == null ||  value.equals("")) {
    
                pr.println("<h5 style='color:red;'>please enter manditory values  :"
                        + name + "</h5>");
                flag = false;
            } 
    
        }
    
        pr.println("<h3>Employe Registation</h3>");
    
        if (!flag || count==0) {
            pr.println("<form method=\"get\" action=\"formvalid\"><br />EmpName *:<input type='text' name='Empname' ><br />"
                    + "Age *:<input type='text' name='age' ><br /><tr><td>Qulification *:<input type='text' name='Qualification' ><br />Address<textarea> </textarea><br /><input type='submit' value='submit'><input type='reset' value='reset'></FORM>");
        } else {
            pr.println("<h3 style='color:green;'>submitted successfully</h3>");
        }
    
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多