【问题标题】:Java Servlet Form Post issue : getParameters() return null valuesJava Servlet 表单发布问题:getParameters() 返回空值
【发布时间】:2020-07-21 03:57:40
【问题描述】:

我是新来的,不是以英语为母语的人:)。 因此,我编写了一个表单,通过 java servlet 中的 post 方法发送简单值。 起初,它与 request.getParameter() 一起工作,我不知道我做了什么,但它不再工作了。

package servlets;

import java.io.IOException;
import java.io.PrintWriter;

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

//import services.*;

//import org.json.JSONException;
//import org.json.JSONObject;

public class Authentification extends HttpServlet{

    public void doGet(HttpServletRequest req, HttpServletResponse res) throws  ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter writer = res.getWriter();

        writer.println("<h1>Bienvenue sur notre nouveau site WEB</h1>");
        writer.println("<body>");

        //Form
        writer.println("<form action="+"Authentification"+" method="+"post"+" class="+"form"+">");

        //login
        writer.println("<div class="+">");
        writer.println("<label for="+"login"+">Login:");
        writer.println("<input type="+"text"+" name="+"login"+"/>");
        writer.println("</label>");
        writer.println("</div>");

        //password
        writer.println("<div class="+">");
        writer.println("<label for="+"pwd"+">Password:");
        writer.println("<input type="+"text"+" name="+"pwd"+"/>");
        writer.println("</label>");
        writer.println("</div>");

        //button form
        writer.println("<div class="+"button"+">");
        writer.println("<button type="+"submit"+" name="+"button_connexion"+" value="+"Se_connecter"+">Connexion</button>");
        writer.println("</div>");
        writer.println("</form>");

        //aller sur le lien de l'inscription
        writer.println("<a href="+"/ProjetWeb2020/Inscription"+">T'es nouveau?Par ici l'inscription</a>");
        writer.println("</body>");


    }

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws  ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter writer = res.getWriter();

        String login, pwd;

        login=req.getParameter("Login");
        pwd=req.getParameter("Pwd");

        if(login==null && pwd==null){
            writer.println("<h1>Not good!</h1>");
        }
        //JSONObject obj=services.Authentification.loginUtilisateur(login, pwd);

        writer.println("<h2>login is:"+login+"</h2>");
        writer.println("<h2>pwd is:"+pwd+"</h2>");
    }
}

结果我不想要了。

enter image description here

我会很高兴地为您解答任何问题 :)

【问题讨论】:

  • 您的代码中有拼写错误,将login=req.getParameter("Login"); 更改为login=req.getParameter("login");pwd=req.getParameter("Pwd"); 更改为pwd=req.getParameter("pwd");
  • 非常感谢您的快速回答 :) 但问题不在于错字,我也注意到了 kumar。
  • 检查你的浏览器控制台->inspect-> html (看看是否生成了正确的html并且输入的名字是否相同)
  • 我查看了 html 代码,这里是:&lt;h1&gt;Bienvenue sur notre nouveau site WEB&lt;/h1&gt; &lt;body&gt; &lt;form action=Authentification method=post class=form&gt; &lt;div class=&gt; &lt;label for=login&gt;Login: &lt;input type=text name=login/&gt; &lt;/label&gt; &lt;/div&gt; &lt;div class=&gt; &lt;label for=pwd&gt;Password: &lt;input type=text name=pwd/&gt; &lt;/label&gt; &lt;/div&gt; &lt;div class=button&gt; &lt;button type=submit name=button_connexion value=Se_connecter&gt;Connexion&lt;/button&gt; &lt;/div&gt; &lt;/form&gt; &lt;a href=/ProjetWeb2020/Inscription&gt;T'es nouveau?Par ici l'inscription&lt;/a&gt; &lt;/body&gt;

标签: java html web post servlets


【解决方案1】:

所以,谢谢大家,尤其是 Swati 的解决方案。是的,这个问题是关于“反斜杠”的错字。

我给你正确的代码:

package servlets;

import java.io.IOException;
import java.io.PrintWriter;

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

//import services.*;

//import org.json.JSONException;
//import org.json.JSONObject;

public class Authentification extends HttpServlet{

    public void doGet(HttpServletRequest req, HttpServletResponse res) throws  ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter writer = res.getWriter();

        writer.println("<h1>Bienvenue sur notre nouveau site WEB</h1>");
        writer.println("<body>");

        //Form
        writer.println("<form action="+"\"Authentification\""+" method="+"\"post\""+" class="+"\"form\""+">");

        //login
        writer.println("<div class=\" \">");
        writer.println("<label for="+"\"login\""+">Login:");
        writer.println("<input type="+"\"text\""+" name="+"\"login\""+"/>");
        writer.println("</label>");
        writer.println("</div>");

        //password
        writer.println("<div class=\" \">");
        writer.println("<label for="+"\"pwd\""+">Password:");
        writer.println("<input type="+"\"text\""+" name="+"\"pwd\""+"/>");
        writer.println("</label>");
        writer.println("</div>");

        //button form
        writer.println("<div class="+"\"button\""+">");
        writer.println("<button type="+"\"submit\""+" name="+"\"button_connexion\""+" value="+"\"Se_connecter\""+">Connexion</button>");
        writer.println("</div>");
        writer.println("</form>");

        //aller sur le lien de l'inscription
        writer.println("<a href="+"/ProjetWeb2020/Inscription"+">T'es nouveau?Par ici l'inscription</a>");
        writer.println("</body>");


    }

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws  ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter writer = res.getWriter();

        String login, pwd;

        login=req.getParameter("login");
        pwd=req.getParameter("pwd");

        if(login==null && pwd==null){
            writer.println("<h1>Not good!</h1>");
        }
        //JSONObject obj=services.Authentification.loginUtilisateur(login, pwd);

        writer.println("<h2>login is:"+login+"</h2>");
        writer.println("<h2>pwd is:"+pwd+"</h2>");
    }
}

以及html页面的语法:(可以查看我之前的cmets中的古html代码)

<h1>Bienvenue sur notre nouveau site WEB</h1>
<body>
<form action="Authentification" method="post" class="form">
<div class=" ">
<label for="login">Login:
<input type="text" name="login"/>
</label>
</div>
<div class=" ">
<label for="pwd">Password:
<input type="text" name="pwd"/>
</label>
</div>
<div class="button">
<button type="submit" name="button_connexion" value="Se_connecter">Connexion</button>
</div>
</form>
<a href=/ProjetWeb2020/Inscription>T'es nouveau?Par ici l'inscription</a>
</body>

故事的寓意:小心“”,在html代码的字符串中使用反斜杠!

【讨论】:

    【解决方案2】:

    访问时更改参数名称。 login=req.getParameter("登录"); pwd=req.getParameter("pwd");

    它会起作用的。

    【讨论】:

    • 非常感谢您的快速回答 :) 我修改了每个输入的名称属性,并没有在 getParameters() 中修改以适应名称。但问题不存在,它不起作用。
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 2013-05-04
    • 2018-12-10
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多