簡體   English   中英

無法使用Ajax調用Servlet

[英]Unable to invoke servlets using ajax

我試圖使用Ajax調用Servlet,但是$ .ajax()中的URL不會將我重定向到Servlet。
大家可以看看並告訴我為什么它不調用servlet嗎?

index.jsp

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="model.MongoDBJDBC" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" type="text/css" href="css/stylesheet.css"> <script src="http://code.jquery.com/jquery-1.10.2.js" type="text/javascript"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load('current', { packages : [ 'corechart' ] }); </script> <title>Servlets Selection Menu</title> </head> <body> <div id="Servletssframe" style="width:200px; height:100px; margin-left:5px ;"> <form method="get" action="ReqFilter" id="myform"> <input type="radio" value="Servlets1" name="servlet" id="Servlets1"><label>Servlets 1</label><br> <input type="radio" value="Servlets2" name="servlet" id="Servlets2"><label>Servlets 2</label><br> <input type="radio" value="Servlets3" name="servlet" id="Servlets3"><label>Servlets 3</label><br> <input type="radio" value="Servlets4" name="servlet" id="Servlets4"><label>Servlets 4</label><br> <input type="radio" value="Servlets5" name="servlet" id="Servlets5"><label>Servlets 5</label><br> <input type="button" value="submit" id="button"> </form> </div> </body> <div id="container" style="width: 700px; height:700px; margin: 0 auto"></div> <script type="text/javascript"> $(document).ready(function() { $('#button').click(function() { var servlet=$('input[type=radio][name=servlet]:checked').attr('id'); //console.log(servlet); $.ajax({ //url:'/ServletsUsingAjax/RequestFilter?servlet='+servlet, url:'/ServletsUsingAjax3/RequestFilter?servlet='+servlet, type:'get', /* success:function() { alert(this.url); }, */ } ); }); }); </script> 

ReqFilter.java

package control;    
import java.io.IOException;    
import java.io.PrintWriter;    

import javax.servlet.RequestDispatcher;    
import javax.servlet.ServletException;    
import javax.servlet.annotation.WebServlet;    
import javax.servlet.http.HttpServlet;    
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;       
//@WebServlet("/RequestFilter")            
public class ReqFilter extends HttpServlet {        

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException        
{    
        response.setContentType("text/html");    
        //response.setContentType("text/plain;charset=UTF-8");    
        RequestDispatcher dispatcher;
        String value=request.getParameter("servlet").trim();    

        PrintWriter out=response.getWriter();
        out.println("This"+value);
        if(value.equals("Servlets1"))
        {
            dispatcher=request.getRequestDispatcher("index.jsp");
            dispatcher.include(request,response);

            out.println("<script type='text/javascript'>");
            out.println("console.log("+value+")");
            out.println("$('#container').load('textfile.jsp')");
            //out.println("google.charts.setOnLoadCallback(drawChart);");
            out.println("</script>");
        }
        if(value.equals("Servlets2"))
        {
            dispatcher=request.getRequestDispatcher("index.jsp");
            dispatcher.include(request,response);
            out.println("<script type='text/javascript'>");
            //out.println("<div id='container2' style='width: 700px; height:700px; margin: 0 auto'></div>");
            out.println("$('#container').load('textfile2.jsp')");
            //out.println("google.charts.setOnLoadCallback(drawChart);");
            out.println("</script>");
        }
        if(value.equals("Servlets3"))     
        {      
            dispatcher=request.getRequestDispatcher("index.jsp");    
            dispatcher.include(request,response);    
            out.println("<script type='text/javascript'>");    

            out.println("Nothing to dipsplay");

            out.println("</script>");
        }



}    
}    

web.xml

<web-app>  

<servlet>  
<servlet-name>ServletsUsingAjax</servlet-name>  
<servlet-class>control.ReqFilter</servlet-class>  
</servlet>  

<servlet-mapping>  
<servlet-name>ServletsUsingAjax</servlet-name>  
<url-pattern>/ReqFilter</url-pattern>  
</servlet-mapping>  

</web-app>  
 <script type="text/javascript">
  $(document).ready(function() {        
         $('#button').click(function() {         
         var servlet=$('input[type=radio][name=servlet]:checked').attr('id');
             $.ajax({
                url:'RequestFilter?servlet='+servlet,
                type:'get',
               success:function(data)
                {
                    alert(data);
                }
              });
         });
    });   
</script>

您可以使用上面的代碼來調用servlet,謝謝。

只需將您的ajax網址替換為以下代碼。

$.ajax({
url : 'ReqFilter?servlet='+ servlet,
type : 'get',
});

servlet映射和ajax中傳遞的url模式url存在問題。

我按照上面的代碼發布了我的工作代碼。
index.jsp

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.List"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" type="text/css" href="css/stylesheet.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"
    type="text/javascript"></script>
<script
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript"
    src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
    google.charts.load('current', {
        packages : [ 'corechart' ]
    });
</script>
<title>Servlets Selection Menu</title>
</head>
<body>
    <div id="Servletssframe"
        style="width: 200px; height: 100px; margin-left: 5px;">
        <form method="get" action="ReqFilter" id="myform">
            <input type="radio" value="Servlets1" name="servlet" id="Servlets1"><label>Servlets
                1</label><br> <input type="radio" value="Servlets2" name="servlet"
                id="Servlets2"><label>Servlets 2</label><br> <input
                type="radio" value="Servlets3" name="servlet" id="Servlets3"><label>Servlets
                3</label><br> <input type="radio" value="Servlets4" name="servlet"
                id="Servlets4"><label>Servlets 4</label><br> <input
                type="radio" value="Servlets5" name="servlet" id="Servlets5"><label>Servlets
                5</label><br> <input type="button" value="submit" id="button">
        </form>
    </div>
</body>

<div id="container" style="width: 700px; height: 700px; margin: 0 auto"></div>


<script type="text/javascript">
    $(document)
            .ready(
                    function() {
                        $('#button')
                                .click(
                                        function() {
                                            var servlet = $(
                                                    'input[type=radio][name=servlet]:checked')
                                                    .attr('id');
                                            //console.log(servlet);

                                            $
                                                    .ajax({
                                                        //url:'/ServletsUsingAjax/RequestFilter?servlet='+servlet,

                                                        url : 'ReqFilter?servlet='+ servlet,
                                                        type : 'get',


                                                    });
                                        });
                    });
</script

>

ReqFilter.java

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

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;       
//@WebServlet("/RequestFilter")            
public class ReqFilter extends HttpServlet {        

    private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException        
{    
    System.out.println("HEREEEEEEEEEEEEEE");
        response.setContentType("text/html");    
        //response.setContentType("text/plain;charset=UTF-8");    
        RequestDispatcher dispatcher;
        String value=request.getParameter("servlet").trim();    

        PrintWriter out=response.getWriter();
        out.println("This"+value);
        if(value.equals("Servlets1"))
        {
            dispatcher=request.getRequestDispatcher("index.jsp");
            dispatcher.include(request,response);

            out.println("<script type='text/javascript'>");
            out.println("console.log("+value+")");
            out.println("$('#container').load('textfile.jsp')");
            //out.println("google.charts.setOnLoadCallback(drawChart);");
            out.println("</script>");
        }
        if(value.equals("Servlets2"))
        {
            dispatcher=request.getRequestDispatcher("index.jsp");
            dispatcher.include(request,response);
            out.println("<script type='text/javascript'>");
            //out.println("<div id='container2' style='width: 700px; height:700px; margin: 0 auto'></div>");
            out.println("$('#container').load('textfile2.jsp')");
            //out.println("google.charts.setOnLoadCallback(drawChart);");
            out.println("</script>");
        }
        if(value.equals("Servlets3"))     
        {      
            dispatcher=request.getRequestDispatcher("index.jsp");    
            dispatcher.include(request,response);    
            out.println("<script type='text/javascript'>");    

            out.println("Nothing to dipsplay");

            out.println("</script>");
        }



}    
}    

web.xml

<web-app>

    <servlet>
        <servlet-name>ServletsUsingAjax</servlet-name>
        <servlet-class>ReqFilter</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ServletsUsingAjax</servlet-name>
        <url-pattern>/ReqFilter</url-pattern>
    </servlet-mapping>

</web-app>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM