javascript - 如何使用 javascript 将输入值发送到 servlet,然后从该 servlet 获得答案?

标签 javascript html mysql jsp servlets

第一个问题在这里。在 JSP 页面中我有一个表单。我想要做的是询问 servlet 该表单的输入值是否已经在我的 mysql 数据库中。我正在使用 2 个不同的 Servlet。 “ServletInsert”将数据插入mysql数据库。 “ServletCheck”检查 mysql 数据库中是否存在票证 ID。票证 ID 无法自动生成。

JSP页面:

<form id="myForm" action="ServletInsert" method="post">        
     <div>
     <label>Ticket Id:</label>    
     <input type="text" name="id"/>
     </div>           
     <input type="submit" name="submit" value="Send" />    
</form>   
<script>
    $('#myForm').submit(function() {
       /** <<SEND INPUT VALUE("id") TO SERVLET("ServletCheck")>> */
       if ("the answer from the servlet is true"){
       return true;
       }else if ("the answer from the servlet is false")
       return false;
       alert("ticket id already exists");
       }
    }); 
</script> 

Servlet(“ServletCheck”):

package Servlets;    
import Entity.Ticket;  

public class ServletCheck extends HttpServlet {    

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
    processRequest(request, response);

    String id = request.getParameter("id"); /**the input value*/
    ArrayList<Ticket> list = new ArrayList<Ticket>();    
    list = ListOfTicketsDB(); /**this procedure gets the list of tickets from 
                         the mysql database (already know how to do that)*/
    boolean b = existsOnList(list, id); 
    /**The answer doesn't have to be boolean. It can be a String("True","False")*/

    /**<<SEND THE ANSWER TO THE JSP PAGE>>*/
} 

/**checks if the value is inside the array*/
boolean existsOnList(ArrayList<Ticket> list, String id) {
    for (Ticket T : list) {
        if (T.getID_TICKET().equals(id)) {
            return true;
        }
    }
    return false;
   }    
}

最佳答案

要在执行此操作时完成此操作,您需要包含以下内容:

/**<<SEND THE ANSWER TO THE JSP PAGE>>*/

response.setContentType("application/text");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();    

if(existsOnList(list, id)){

    out.write("False");

}else{

    out.write("True");

}

然后在您的 JSP 上,您需要类似的内容(使用 AJAX):

$('#myForm').submit(function(e) {

    $.get('ServletCheck', $('#myForm').serialize(), function (response) {

       if (response === "True"){

           return true;

       }else if (response === "False"){

           e.preventDefault(); //cancel form submission
           return false;
           alert("ticket id already exists");

       }

    }

});

关于javascript - 如何使用 javascript 将输入值发送到 servlet,然后从该 servlet 获得答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45558908/

相关文章:

javascript - 对象拟合和图像映射 css

mysql - 在 Amazon EC2 实例上安装 phpMyAdmin

mysql - 使用分组结果集获取 MySQL 查询的一列中具有最大值的行

javascript - 获取完整路径,包括 Node.js 中的井号 (#)

javascript - MooTools 类

html - 我表格的右边框没有在最后一列的边框处结束

javascript - 渲染后如何用span标签包裹字符

javascript - 错误 : Incorrect arguments to mysqld_stmt_execute

javascript - webmethod 没有被触发

asp.net - 浏览器所见即所得最佳实践