Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从servlet接收响应_Android_Jsp_Servlets - Fatal编程技术网

Android 无法从servlet接收响应

Android 无法从servlet接收响应,android,jsp,servlets,Android,Jsp,Servlets,我需要将该控件检索回Jsp,并对我之前发出的请求做出响应。 但是我面临的问题是我无法在jsp中获得响应 我浏览了一些帖子,尝试了一些建议,但似乎没有一个适合我。请指出我的错误在哪里 以下是我的尝试: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { log.info

我需要将该控件检索回Jsp,并对我之前发出的请求做出响应。 但是我面临的问题是我无法在jsp中获得响应

我浏览了一些帖子,尝试了一些建议,但似乎没有一个适合我。请指出我的错误在哪里

以下是我的尝试:

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        log.info("IN form doGet");
        request.setCharacterEncoding("utf-8");
        String selectedClass = request.getParameter("key");
        log.info(selectedClass);
        String[] section = null;
        DBHandler dbhandler = new DBHandler();
        dbhandler.makeConnection();
        if (true == dbhandler.verifyConnection()) {
            section = dbhandler.getSection(selectedClass);
        }
        for (String str : section) {
            log.info(str);
        }
        Logger log;
        if (null != section) {
            request.setAttribute(Appconstants.Section, section);
        }
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.sendRedirect("/ReportFetcher/WebContent/FirstJSP.jsp");
//      RequestDispatcher view = request.getRequestDispatcher("/First.jsp");
//      view.forward(request, response);
    }
以下是jsp部分:

function funcOnChange() {
    var index = document.detail.Class.selectedIndex;
    var valueSelected = document.detail.Class.options[index].value;
    var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function()
    {
        // Check to see if this state change was "request complete", and
        // there was no server error (404 Not Found, 500 Server Error, etc)
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        {
            var substring=xmlHttp.responseText;
            alert("Alert Dialog! Gaurav");
        }
        if (xmlhttp.readyState == 404){
            alert("404 error");
        }
        if (xmlhttp.readyState == 500){
            alert("500 error");
        }

    }
    xhr.open('GET', 'http://localhost:8080/ReportFetcher/FormHandler?key='+encodeURIComponent(valueSelected), true);
    xhr.send(null);
    return false;
}

我想你可能误解了response.sendDirect方法的含义。这种方法将

设置适当的标题和内容正文以将客户端重定向到其他URL

有关详细信息,请参见SRV.5.4


因此,当您使用该方法时,响应将得到解决,当客户端(浏览器)接收它重定向到您设置的URL的响应。jsp将接收来自浏览器的新请求。

我认为您做的一切都是正确的,并且如上所述,您应该转发请求,而不是重定向请求

错误的地方在于,在发出请求时,您正在生成XMLHttpRequest的对象,并使用变量
xhr
引用它,但在处理响应时,您正在检查变量
xmlhttp
的状态,因此,您需要做的是将变量
xmlhttp
替换为
xhr


如果您遇到任何问题,请随时提问。

更改第一个下拉列表后,向数据库发出ajax请求。这是您已经完成的操作。 所以现在您需要在jsp中编写接收到的响应,以便它实际填充第二个下拉列表

为了让servlet响应,您需要使用response对象并使用print方法来编写响应

下面是如何在下拉列表中动态生成选项的提示

使用document.getElementById(您选择的TagId); 对于上面返回的标记,使用appendChild方法向其添加选项

好了,现在servlet使用responseText返回响应,并使用scriplet在jsp中显示您想要显示的位置
像这样

使用RequestDispatcher包含或转发您的响应和请求。这将很容易处理。

不清楚您想要实现什么以及问题是什么,但在servlet中,从数据库检索信息并将其存储在请求属性中的意义是什么,如果您之后所做的只是将重定向发送到另一个位置?实际上我需要做两个下拉列表,这样,第二个下拉项依赖于第一个下拉选择。这就是为什么我需要执行DB操作来获取元素。所以,在这里,我在第一个下拉列表的onChange上发送一个请求,并执行DB操作并返回结果。现在我想要的是将这个结果发送回我的jsp并激活第二个。但是我无法发送结果。重定向到FirstJSP.jsp会告诉浏览器向FirstJSP.jsp发送新请求。因此,当JSP处理第二个请求时,第一个请求的属性中存储的所有内容都将丢失。您想要的是转发,而不是重定向。您确定您的帖子包含jsp部分吗?。。是javascript?!正如我所说。在试图找到解决问题的方法之前。试着找出问题所在,并说出问题所在。这是通过在代码中添加跟踪、在服务器端使用调试器、使用浏览器开发工具查看发送的请求和接收的响应等来实现的。