如何停止 Servlet 从 Html 重定向

Posted

技术标签:

【中文标题】如何停止 Servlet 从 Html 重定向【英文标题】:How To Stop Servlet Redirect From Html 【发布时间】:2021-07-18 07:50:25 【问题描述】:

我想使用 Servlet 将数据从 html 网页发送到我的服务器。

<form method="post" name="customerForum" action="addCustomer">
  <button class="btn btn-success" id="addCustomerBTN"
         type="submit" value="addCustomer">Add Customer
 </button>
</form>

这是我的 Servlet 类

@WebServlet(urlPatterns = "/addCustomer")
public class PSystemServlet extends HttpServlet 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 

        String customerID = req.getParameter("custID");
        String customerName = req.getParameter("custName");
        
     

如果我按下按钮网页重定向到我的 Servlet 类(使用此 urlPatterns = "/addCustomer")。 但是我需要将 HTML 网页中的数据发送到我的 Servlet 类,但我不需要重定向到 Servlet 类。

如何停止重定向 Servlet 类并将我的数据发送到 Servlet 类而不重定向..?

【问题讨论】:

【参考方案1】:

在进入解决方案之前,你应该了解 AJAX,它是如何工作的

试试这个: 客户端:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>


    <body>
        <form method="post" name="customerForum">
            CID:  <input type="text" id="custID" name="custID">
            CNAME:<input type="text" id="custName" name="custName">
            <button class="btn btn-success" id="addCustomerBTN"
                    type="button" value="addCustomer" onclick="register()">Add Customer
            </button>
        </form>
    </body>

    <script>

        function register()
        

            var custName = document.getElementById('custID').value;
            var custID = document.getElementById('custName').value;
         
            $.ajax(
                type: "GET",
                url: "addCustomer",
                data: custID: custID, custName: custName,
                success: function (status) 
                    
                    alert(status);//You can add if codition to check status values and alert msg accordingly if 'inserted' then alert data inserted sucessfully
                
            );



        

    </script>

</html>

服务器端(addCustomer Servlet):

        String status="notInserted";
        String customerID = request.getParameter("custID");
        String customerName = request.getParameter("custName");
        System.out.println("custID:" + customerID);
        
        //Your insert Logic
        
        //if data inserted sucessfully  set status="inserted";
            status="inserted";
        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(status);   

【讨论】:

以上是关于如何停止 Servlet 从 Html 重定向的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 Django 中的静态 HTML 文件? (重定向前需要登录)

Linux 第三天 重定负管道符环境变量

转发以及重定向解析

Shell重定向

从 servlet 重定向到 html 时出现 404 错误

在过滤器中重定向时停止进一步处理