JQuery不能在tomcat中运行

时间:2017-08-30 21:23:39

标签: java jquery tomcat

我一直在尝试在我的javaee应用程序中使用jquery而不是普通的javascript。下面的代码显示了我无法理解的应用程序。每次我运行应用程序时,它都会给我一个空白页面。不知何故,jquery没有加载到tomcat服务器上。我怎么去呢?

<html>
<head>
    <title>Erycoking | JSON</title>
    <script  src="WEB-INF/lib/jquery-3.2.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $.getJSON("${pageContext.request.contextPath}/getCDs.jsp", function (response) {
                var cds = response.catalog.cd;
                alert(JSON.stringify(cds));
                $.each(cds, function (ind, val) {
                    $('body.container').append('<li>' + cds[ind].title + ' : '
                        + cds[ind].artist + '</li>');
                });
            });
        });
    </script>
</head>
    <body>
        <ul class='container'></ul>
    </body>
</html>

我的getCDs.jsp在这里

<jsp:useBean id="fetchBean" class="fetcher.FetchXML" />
<jsp:getProperty name="fetchBean" property="json" />

我的FetchXML.java在这里

public class FetchXML {
    public void setJson(String json){}
    public String getJson(){
        JSONObject json = null;

        try {
            String xml = "";
            URL url = new URL("http://www.w3schools.com/xml/cd_catalog.xml");
            URLConnection conn = url.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            String line = null;
            while((line = br.readLine())  != null) xml+= line;
            br.close();

            xml = xml.replace("'", "");
            json = XML.toJSONObject(xml.toLowerCase());

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return json.toString();
    }
}

最后是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    
    <welcome-file-list>
        <welcome-file>fetch.jsp</welcome-file>
    </welcome-file-list>


    
</web-app>

这是我的文件结构 enter image description here

2 个答案:

答案 0 :(得分:0)

以下是一个例子:

正如您在图片中看到的那样,index.htmlscript.js文件位于WEB-INF文件夹的同一级别。

enter image description here

然后,如果需要访问我的index.html文件中的javascript资源,我只需要使用相对路径,在本例中,两个资源都位于我的Web应用程序的根路径

enter image description here

网络应用网址是: - &gt; http://localhost:8080/myapp

然后索引页面是: - &gt; http://localhost:8080/myapp/index.html

然后script.js文件是 - &gt; http://localhost:8080/myapp/script.js

查看你的html文件我认为一个可能的解决方案是这样的,它只有在jquery-3.2.1.min.js资源与WEB-INF文件夹处于同一级别时才有效:

<html>
<head>
    <title>Erycoking | JSON</title>
    <script  src="jquery-3.2.1.min.js"></script>
    <script>
        $(document).ready(function () {
            $.getJSON("${pageContext.request.contextPath}/getCDs.jsp", function (response) {
                var cds = response.catalog.cd;
                alert(JSON.stringify(cds));
                $.each(cds, function (ind, val) {
                    $('body.container').append('<li>' + cds[ind].title + ' : '
                        + cds[ind].artist + '</li>');
                });
            });
        });
    </script>
</head>
    <body>
        <ul class='container'></ul>
    </body>
</html>

答案 1 :(得分:0)

我通过添加以下代码行解决了我自己的问题

&#13;
&#13;
 System.setProperty("java.net.preferIPv4Stack", "true");
 System.setProperty("http.proxyHost", "172.16.63.3");
 System.setProperty("http.proxyPort", "3128");
 HttpURLConnection urlConnection = (HttpURLConnection) new URL("https://www.w3schools.com/xml/cd_catalog.xml").openConnection();
&#13;
&#13;
&#13;

我在代理服务器后面工作,忘了设置代理服务器。我还将其更改为HttpURLConnection。非常感谢所有帮助我解决这个问题的人,特别是@DanielC。