私は、取得した JSON データを Web ページに出力するロジックを作成していました。そのために、コントローラー クラス、ドメイン クラス、および hello.jsp ファイルがあります。
これは、私が取得していて、Web ページに表示しようとしている JSON データです。
[{"uname":"sam","fileSize":"26 MB","fileName":"Subway_Surfers","downloadSize":1381186649389},
{"uname":"sam","fileSize":"8 MB","fileName":"Grand_Theft_Auto","downloadSize":1381186668752},
しかし、このhello.jspが呼び出されず、このフォーラムに投稿しました。適切な応答が得られませんでした。その後、スクリプトの URL が間違っていたため、私の友人の 1 人がこれを解決するのを手伝ってくれました。
hello.jspファイルのスクリプト URL を変更すると、正常に機能し<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
ました。
そのため、単純な Spring MVC + JSON/REST GET メソッド接続をセットアップする際の参照用に、コントローラー クラス、ドメイン クラス、およびhello.jspの作業コードを添付しています。
ドメイン クラス
public class OperatorBilling implements Serializable {
private String uname;
private String fileSize;
private String fileName;
private Timestamp downloadSize;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getFileSize() {
return fileSize;
}
public void setFileSize(String fileSize) {
this.fileSize = fileSize;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public Timestamp getDownloadSize() {
return downloadSize;
}
public void setDownloadSize(Timestamp downloadSize) {
this.downloadSize = downloadSize;
}
}
コントローラ クラス
package com.springapp.mvc;
import com.springapp.domain.OperatorBilling;
import org.apache.http.client.ClientProtocolException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
@Controller
public class HelloController {
@RequestMapping(value="/",method = RequestMethod.GET)
public String getOperatorBillingDetails(ModelMap model) {
OperatorBilling operatorBilling = new OperatorBilling();
model.addAttribute("operatorBilling",operatorBilling) ;
return "hello";
}
@RequestMapping(value="/hello",method = RequestMethod.GET, produces="application/json;charset=utf-8")
public @ResponseBody
Object getOperatorBillingDetails() {
List<OperatorBilling> operatorBillingList = new ArrayList<OperatorBilling>();
try {
URL url = new URL("http://localhost:8080/operatorBilling");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
String[] str = output.split("},");
for(int i =0;i<str.length;i++){
String[] str1 = str[i].split(",");
OperatorBilling operatorBilling = new OperatorBilling();
for(int j =0;j<str1.length;j++){
str1[j]= str1[j].replaceAll("\\[\\{","") ;
str1[j]= str1[j].replaceAll("\\}\\]","") ;
str1[j]= str1[j].replaceAll("\"","") ;
str1[j]= str1[j].replaceAll("\\{","") ;
str1[j]= str1[j].replaceAll("\\}","") ;
if(str1[j].contains("uname:")){
str1[j] = str1[j].substring(6,str1[j].length());
operatorBilling.setUname(str1[j]);
}
if(str1[j].contains("fileName:")){
str1[j] = str1[j].substring(9,str1[j].length());
operatorBilling.setFileName(str1[j]);
}
if(str1[j].contains("fileSize:")){
str1[j] = str1[j].substring(9,str1[j].length());
operatorBilling.setFileSize(str1[j]);
}
if(str1[j].contains("downloadTime:")){
str1[j] = str1[j].substring(13,str1[j].length());
operatorBilling.setDownloadSize(new Timestamp(Long.valueOf(str1[j])));
}
}
operatorBillingList.add(operatorBilling);
}
}
conn.disconnect();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return operatorBillingList;
}
}
Hello.jsp ファイル
<!DOCTYPE html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<spring:url scope="page" var="jqueryUrl"
value="/resources/js/jquery-1.9.1.min.js"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<html>
<body>
<form:form id="operatorForm" modelAttribute="operatorBilling">
<h4>test</h4>
<div id="operatorID"></div>
<c:url var="findOperatingURL" value="/hello"/>
<script type="text/javascript">
$(document).ready(function () {
$.getJSON('${findOperatingURL}', {
ajax: 'true'
}, function (data) {
alert("inside data!!!!");
var html = '';
var len = data.length;
for (var i = 0; i < len; i++) {
html += '<div>' + data[i].uname + '</div><div>' + data[i].fileSize + '</div><div>'+data[i].fileName+'</div>';
}
$('#operatorID').html(html);
});
});
</script>
</div>
</form:form>
</body>
</html>
servlet.xml ファイル
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd">
<!-- DispatcherServlet Context: defines this servlet's request-processing
infrastructure -->
<!-- Enables the Spring MVC @Controller programming model <mvc:annotation-driven /> -->
<annotation-driven/>
<!-- Resolves views selected for rendering by @Controllers to .jsp resources
in the /WEB-INF/views directory -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/pages/"/>
<beans:property name="suffix" value=".jsp"/>
</beans:bean>
<context:component-scan base-package="com.springapp.mvc"/>
</beans:beans>
web.xml ファイル
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>