0

私はWebアプリケーションの初心者です。GlassfishサーバーでJavaEEを使用して動的Webプロジェクトを作成しました。ここで、クライアントがjsonを使用してサーバーにデータを送信し、jsonまたはxmlを使用してサーバーからデータを受信できるようにします。オンラインで検索することで、サーバー側でのプログラミング方法が明確になりました。ここで、ajaxを使用してjsonデータを送信します。ただし、サーバーでコーディングするのは簡単かもしれません。サーバーに関連するコードが見つかりません。サーバー側では、JSPを使用してjsonデータを読み取り、Bean(finished)を使用してデータを生成し、データを送り返す必要があります。これがコードですが、どこに問題があるのか​​わかりません。誰か私にアドバイスをいただけますか?あなたの助けは私にとって大きな意味があります!

これはクライアント側のajaxコードです。フォームから2つの入力番号を送信しました

$(function() {
    $("#myform").submit(function() {
        var lat = $("#num1").val();
        var lon = $("#num2").val();
        alert("form");

        if (num1 == '' || num2 == '') {
            $('.success').fadeOut(200).hide();
            $('.error').fadeOut(200).show();
        } else {
            $.ajax({
                type : "POST",
                url : "marker.jsp",
                contenttype : 'application/json; charset=utf-8',
                data : {
                    "num1" : "wtf",
                    "num2" : $("#num2").val(),
                },

                success : function(msg) {
                    $('.success').fadeIn(200).show();
                    $('.error').fadeOut(200).hide();
                    alert(msg);

                }
            });
        }

        return false;
    });
});

しかし、jspページに切り替えた後、2つのnull値しか表示されませんでした。これがサーバー上のコードです。最初にxmlを送信する予定でしたが、request.getParameterが機能するかどうか、およびこれらを返送する方法がわかりません。 xmlデータまたはjson形式を使用してデータを送り返します。ヘルプ!

<?xml version="1.0" encoding="UTF-8"?>
<%@ page contentType="text/xml" %>
<%@ page             import="javax.naming.InitialContext,net.roseindia.ejb3.stateless.*,javax.ejb.EJB,java.util.*"%>

<%
        try {

            String s1 = request.getParameter("num1");
            String s2 = request.getParameter("num2");
    %>
            <%=s1%>
            <%=s1%>

    <%
            if (s1 != null && s2 != null) {
                List<String> textdatas = cal.GetTextResults(s1, s2);

                for (String textdata : textdatas) {

                String textLocation= "("+textdata.split("\\t",2)[0]+")";
                System.out.println(textLocation);
    %>
    <text>
        <location><%=textLocation%></location>
        <event> <%=textdata.split("\\t",2)[1]%></event>
    </text>
    <%
                }

                List<String> images = cal.getImage();

                for(String image: images){
                System.out.println(image);
    %>          
    <image>
        <imglocation><%=image.split("\\t",2)[0]%></imglocation>>
        <path><%=image.split("\\t",2)[0]%></path>
    </image>



    <%          
            }
            }
        }// end of try
        catch (Exception e) {
            e.printStackTrace();
            //result = "Not valid";
        }
    %>

4

1 に答える 1

0

MVC フレームワークを使用していない場合は、採用することをお勧めします。JSP から XML/JSON をレンダリングすることは、良い/簡単な方法ではないようです。コードが煩雑になりすぎていることを確認するのは難しくありません...それが有効なコードではない可能性があることは言うまでもありません。

MVC フレームワークを採用することをお勧めします。私は非常に優れたシンプルなVRaptorを使用しており、RESTful Web アプリを意識することなく開発できます。この1分間ガイドを必ずチェックしてください!!! このフレームワークは、 ThoughtWorks XStream フレームワークをカプセル化することにより、タスクを非常に簡単に実行できるようにします。JSON オブジェクトを使用してリクエストに応答するために必要なものを見てみましょう。

    import static br.com.caelum.vraptor.view.Results.*;

    @Resource
    public class ClientsController {

    private final Result result;
    private final ClientDao dao;

    //result and dao parameters gets inject by VRaptor that
    //by its turn lets you chose which Dependency Injection framework
    //you wouldd like to be using with - pretty much as a plugin
    public ClientsController(Result result, ClientDao dao) {
        this.result = result;
        this.dao = dao;
    }

    @Get("/client/json")
    public void loadJson(MyParam param) {
        result.use(json()).from(dao.getClient(param.id)).serialize();
    }

    @Get("/client/xml")
    public void loadXml(MyParam param) { 
        result.use(xml()).from(dao.getClient(param.id)).serialize();
    }
}

Vraptor は JSON から MyParam オブジェクトをデシリアライズし、それをコントローラーのアクション リクエストに挿入することに注意してください。

この例はこのページから取られました!

于 2012-07-12T05:02:16.780 に答える