我一直在尝试在我的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
答案 0 :(得分:0)
以下是一个例子:
正如您在图片中看到的那样,index.html
和script.js
文件位于WEB-INF
文件夹的同一级别。
然后,如果需要访问我的index.html文件中的javascript资源,我只需要使用相对路径,在本例中,两个资源都位于我的Web应用程序的根路径
网络应用网址是: - &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)
我通过添加以下代码行解决了我自己的问题
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;
我在代理服务器后面工作,忘了设置代理服务器。我还将其更改为HttpURLConnection。非常感谢所有帮助我解决这个问题的人,特别是@DanielC。