0

私は、取得した 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>
4

4 に答える 4

0

詳細を説明する前に、解析ソリューションを削除して、適切な JSON パーサー/ジェネレーターを使用してください。から選ぶ

そしてもっとたくさん。車輪を再発明しないでください。改行文字が別の場所に表示されると、ソリューションが失敗することに注意してください。


実際のところ、どのリクエスト URL に対してあなたのjsp. ハンドラー メソッドgetOperatorBillingDetailsは URL パスにマップされ/helloList<OperatorBilling>. jspまたはビュー名への参照はどこにもありません。

いくつかの概念を混同しているようです。

Servletjspはサーバー側のコンポーネントjavascriptですが、 はクライアント側のコンポーネントです。あなたのシナリオでは、2 つのハンドラー メソッドが必要です。hello.jspそのによって生成された HTML を含む HTTP 応答を生成するの HTTP 要求を処理するものjsp。次に、生成された HTML に含まれる JavaScript スクリプトにある AJAX 要求を処理する別のハンドラー メソッドが必要です。

于 2013-10-13T21:01:05.310 に答える
0

まだ動作していません ??「OperatorBilling」を返すのではなく、そのプロキシ オブジェクトまたは VO オブジェクトを作成してから試してください。

于 2016-03-22T10:06:13.507 に答える