Java 通过ajax将jsp页面转换为servlet,反之亦然

Java 通过ajax将jsp页面转换为servlet,反之亦然,java,jquery,ajax,jsp,servlets,Java,Jquery,Ajax,Jsp,Servlets,我正在通过ajax从jsp页面向servlet发送orderid,如果order表的orderid不匹配,它将显示一个错误 同一个jsp页面中的消息,通过该消息可以发出请求。现在我的问题是,当我发送一个有效的orderid时,它应该 通过servlet将页面转发到另一个jsp页面,该页面没有出现,也没有显示任何错误 jsp页面 servlet代码 如果(!(cmd==null)和&cmd.equalsIgnoreCase(“单个”)){ OrderDB odb=new OrderDB(); 订单

我正在通过ajax从jsp页面向servlet发送orderid,如果order表的orderid不匹配,它将显示一个错误 同一个jsp页面中的消息,通过该消息可以发出请求。现在我的问题是,当我发送一个有效的orderid时,它应该 通过servlet将页面转发到另一个jsp页面,该页面没有出现,也没有显示任何错误

jsp页面

servlet代码

如果(!(cmd==null)和&cmd.equalsIgnoreCase(“单个”)){

OrderDB odb=new OrderDB();
订单=新订单();
List-odetaillist=newarraylist();
List ordercustlist=新建ArrayList();
字符串orderids=request.getParameter(“oid”);
试一试{
orders=odb.getOrdersById(orderId);
odetaillist=odb.getOrdersDetailsByOrderId(OrderID);
ordercustlist=odb.getOrderFromCustomer(OrderID);
Customer customerinfo=odb.getOrderCustomer(OrderID);
setAttribute(“OrderSingle”,订单);
setAttribute(“OrderDetail”,odetaillist);
setAttribute(“OrderCust”,ordercustlist);
setAttribute(“CustomerInfo”,CustomerInfo);
重定向=orderinfo;
RequestDispatcher视图=request.getRequestDispatcher(重定向);
视图。转发(请求、响应);
if(orders.getOrderid()==null){
JsonObject myobj=新的JsonObject();
myobj.addProperty(“成功”,假);
PrintWriter out=response.getWriter();
打印输出(myobj);
out.close();
回来
}
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}

您始终可以从servlet发回响应代码,然后转发。例如,您可以发送成功,在这种情况下,您可以将document.location发送到新的servlet位置


在html5中也可以使用ajax上传文件。

我得到了答案,感谢用户1889970您的技巧帮助

我创建了一个新的检查点,其工作只是检查orderid是否有效,如果有效,则将其转发到新页面或显示无效

jquery代码:

 $("#find").click(function(event){
    var cname = $('#oidss').val();
        $.ajax({
            type:'POST',
            url:"Order",
            style:"full",
            maxRows:12,
            dataType:"json",
            data:{"cmd":"find","oid":encodeURIComponent(cname)},

            beforeSend:function(){/*alert("data is sending")*/},
            success:function(data,textStatus,jqXHR){
                    if(data.success){
                        window.location.href='Order?cmd=single&oid='+cname;  
                }
            else
                {
                alert("Invalid Order No.");
                 $('#oidss').val("");
                 $('#oidss').focus();
                }

            },
            error:function(jqXHR, textStatus, errorThrown){
            console.log('textStatus:' + textStatus);
            console.log('errorThrown:' + errorThrown);
             console.log("Something really bad happened " + textStatus);
             console.log("jqXHR.responseText " +jqXHR.responseText);

        }
        });
    });
servlet代码:

 else if(!(cmd==null)&&cmd.equalsIgnoreCase("find")){

        OrderDB odb         =   new OrderDB();
        Order orders        =   new Order() ;
        JsonObject myobj    =   new JsonObject();

        PrintWriter out = response.getWriter();
        String orderids = request.getParameter("oid");

        try {orders = odb.getOrdersById(orderids);
        if(orders.getOrderid() != null){
            myobj.addProperty("success", true);
        }
        else{
            myobj.addProperty("success", false);
        }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       out.print(myobj);
        out.close();
        return;
    }
cmd的第二部分=单个:

    if(!(cmd==null)&&cmd.equalsIgnoreCase("single")){

        OrderDB odb = new OrderDB();
        Order orders =  new Order() ;
        List<OrderDetail> odetaillist = new ArrayList<OrderDetail>();
        List<Order> ordercustlist = new ArrayList<Order>();
        String orderids = request.getParameter("oid");


        try {
            orders = odb.getOrdersById(orderids);
            odetaillist = odb.getOrdersDetailsByOrderId(orderids);
            ordercustlist = odb.getOrderFromCustomer(orderids);
            Customer customerinfo = odb.getOrderCustomer(orderids);
            request.setAttribute("OrderSingle", orders);
            request.setAttribute("OrderDetail", odetaillist);
            request.setAttribute("OrderCust", ordercustlist);
            request.setAttribute("CustomerInfo", customerinfo);
            redirect=orderinfo;

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
if(!(cmd==null)和&cmd.equalsIgnoreCase(“单一”)){
OrderDB odb=新的OrderDB();
订单=新订单();
List-odetaillist=newarraylist();
List ordercustlist=新建ArrayList();
字符串orderids=request.getParameter(“oid”);
试一试{
orders=odb.getOrdersById(orderId);
odetaillist=odb.getOrdersDetailsByOrderId(OrderID);
ordercustlist=odb.getOrderFromCustomer(OrderID);
Customer customerinfo=odb.getOrderCustomer(OrderID);
setAttribute(“OrderSingle”,订单);
setAttribute(“OrderDetail”,odetaillist);
setAttribute(“OrderCust”,ordercustlist);
setAttribute(“CustomerInfo”,CustomerInfo);
重定向=orderinfo;
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}

在您的
if(data.success)中{
javascript方法的一部分,您应该向服务器发送一个非ajax提交,然后在那里处理转发。请记住,您不能在ajax提交中进行转发。感谢Luiggi Mendoza..我直接通过jsp scriplets尝试了它的工作原理,但我想知道是否有任何方法可以通过ajax转发到另一个服务Let有些事情你可以在ajax调用中完成,有些事情你不能。有些事情你不能用ajax直接处理:转发/重定向到另一个页面,上传一个文件。当用户通过jsp或Servlet输入错误的“orderid”时,我想显示一个警报消息是在视图端而不是在控制器中处理的。看起来你需要了解这意味着您应该使用ajax响应方法(成功、错误等)处理消息。
 $("#find").click(function(event){
    var cname = $('#oidss').val();
        $.ajax({
            type:'POST',
            url:"Order",
            style:"full",
            maxRows:12,
            dataType:"json",
            data:{"cmd":"find","oid":encodeURIComponent(cname)},

            beforeSend:function(){/*alert("data is sending")*/},
            success:function(data,textStatus,jqXHR){
                    if(data.success){
                        window.location.href='Order?cmd=single&oid='+cname;  
                }
            else
                {
                alert("Invalid Order No.");
                 $('#oidss').val("");
                 $('#oidss').focus();
                }

            },
            error:function(jqXHR, textStatus, errorThrown){
            console.log('textStatus:' + textStatus);
            console.log('errorThrown:' + errorThrown);
             console.log("Something really bad happened " + textStatus);
             console.log("jqXHR.responseText " +jqXHR.responseText);

        }
        });
    });
 else if(!(cmd==null)&&cmd.equalsIgnoreCase("find")){

        OrderDB odb         =   new OrderDB();
        Order orders        =   new Order() ;
        JsonObject myobj    =   new JsonObject();

        PrintWriter out = response.getWriter();
        String orderids = request.getParameter("oid");

        try {orders = odb.getOrdersById(orderids);
        if(orders.getOrderid() != null){
            myobj.addProperty("success", true);
        }
        else{
            myobj.addProperty("success", false);
        }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       out.print(myobj);
        out.close();
        return;
    }
    if(!(cmd==null)&&cmd.equalsIgnoreCase("single")){

        OrderDB odb = new OrderDB();
        Order orders =  new Order() ;
        List<OrderDetail> odetaillist = new ArrayList<OrderDetail>();
        List<Order> ordercustlist = new ArrayList<Order>();
        String orderids = request.getParameter("oid");


        try {
            orders = odb.getOrdersById(orderids);
            odetaillist = odb.getOrdersDetailsByOrderId(orderids);
            ordercustlist = odb.getOrderFromCustomer(orderids);
            Customer customerinfo = odb.getOrderCustomer(orderids);
            request.setAttribute("OrderSingle", orders);
            request.setAttribute("OrderDetail", odetaillist);
            request.setAttribute("OrderCust", ordercustlist);
            request.setAttribute("CustomerInfo", customerinfo);
            redirect=orderinfo;

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }