【问题标题】:my servlet accepting the empty input fields through html form我的 servlet 通过 html 表单接受空输入字段
【发布时间】:2022-11-30 16:08:42
【问题描述】:

我正在通过 html 表单获取输入值并使用 servlet 将它们插入到数据库中,但是当我没有在 html 表单中放置任何字段时它也接受该输入。尽管我已经在输入字段的 html 代码中设置了限制。 当我尝试租用空字段时,它显示以下错误

错误

键 'users.PRIMARY 的重复条目 ''这意味着它接受用户名作为空字符串。

这是我的 html 表单

<form action="userreg" method="post">
                    Username : <input type="text" name="username" pattern=".{3,}" title ="must contains more then 3 letters"><br/><br/>
                    Password : <input type="password" name="password" placeholder="password must be 8 char long one upper, lower case letter must" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" title="Must have 8 chars one lowercase , uppercase"><br/><br/>
                    FirstName: <input type="text" pattern=".{3,}" title="this field cant be empty" name="firstname"><br/><br/>
                    Last Name: <input type="text" pattern=".{3,}" title="this field cant be empty" name="lastname"><br/><br/>
                    Address : <input type="text"  pattern=".{3,}" name="address"><br/><br/>
                    Phone No : <input type="text" pattern=".{3,}" name="phone"><br/><br/>
                    Email Id : <input type="text" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$" name="mailid" placeholder="xyz@gmail.com" title="please enter valid mail"><br/><br/>
                    <input type="submit" value=" I AGREE FOR ALL TERMS & CONDITIONS ! REGISTER ME ">
                </form>

这是我的用户注册 servlet 类

try {
            Connection con = DBConnection.getCon();
            PreparedStatement ps = con
                    .prepareStatement("insert into " + IUserContants.TABLE_USERS + "  values(?,?,?,?,?,?,?,?)");
            ps.setString(1, uName);
            ps.setString(2, pWord);
            ps.setString(3, fName);
            ps.setString(4, lName);
            ps.setString(5, addr);
            ps.setString(6, phNo);
            ps.setString(7, mailId);
            ps.setInt(8, 2);
            int k = ps.executeUpdate();         
            if (k==1) {
                RequestDispatcher rd = req.getRequestDispatcher("Sample.html");
                rd.include(req, res);
                pw.println("<h3 class='tab'>User Registered Successfully</h3>");
            } else {
                    
                RequestDispatcher rd = req.getRequestDispatcher("Sample.html");
                pw.println("<h3 class='tab'>Registration failed !, please enter valid details</h3>");
                rd.include(req, res);               
                pw.println("Sorry for interruption! Register again");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

【问题讨论】:

  • 您是否在 html 表单上收到错误消息?
  • 您如何在提交之前/提交时验证表格?是否有您正在使用的 javascript 函数或框架?

标签: java html servlets


【解决方案1】:

这是预期的行为。您可以使用 HTML 输入元素属性,如“required”和一些前端库来协助/强制值的存在,但最终所有验证都需要在后端完成。

因为除了使用浏览器的表单提交功能,人们仍然可以使用 cURL 或 SoapUI 发送恶意 HTTP 请求,绕过所有前端验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 2020-01-13
    • 2010-09-13
    • 2021-09-05
    • 2015-08-10
    • 2015-11-29
    • 2021-11-02
    相关资源
    最近更新 更多