【问题标题】:How to send JSON data to server and get JSON/XML as response using JSP如何使用 JSP 将 JSON 数据发送到服务器并获取 JSON/XML 作为响应
【发布时间】:2012-07-12 14:15:48
【问题描述】:

我是 Web 应用程序的初学者。我在 glassfish 服务器上使用 java EE 创建了一个动态 Web 项目。现在我想让客户端使用 json 向服务器发送数据,并使用 json 或 xml 从服务器接收数据。通过在线搜索,我现在清楚如何在服务器端编程。现在我使用 ajax 发送 json 数据。但是,也许在服务器上编写代码很容易,我找不到任何与服务器相关的代码。我的服务器端应该使用 JSP 读取 json 数据,使用 bean(finished) 生成一些数据并将数据发回。这是代码,我不知道问题出在哪里。任何人都可以给我任何建议吗?您的帮助对我来说意义重大!

这是客户端的 ajax 代码。我从一个表单中发送了两个输入数字

$(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页面后,只发现显示了两个空值,这是服务器上的代码,我一开始打算发送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";
        }
    %>

【问题讨论】:

    标签: javascript json jsp


    【解决方案1】:

    如果您不使用任何 MVC 框架,我建议您采用一个。从 JSP 呈现 XML/JSON 似乎不是一个好的/简单的做法。不难看出您的代码变得过于繁琐......并不是说它可能不是有效的代码。

    我建议您采用 MVC 框架 - 我使用 VRaptor,这是一个非常好的和简单的框架,可以让您在不知不觉中开发 RESTful Web 应用程序。一定要检查这个one minute guide!!!这个框架通过封装ThoughWorks XStream Framework 使得完成你的任务变得非常简单。看看使用 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 对象,并将其注入到您的控制器操作请求到达!

    这个例子取自this page!

    【讨论】:

    • 谢谢。但抱歉我忘了提到我使用 j2ee 和 glassfish 服务器
    • 没问题,你也可以在这个配置上运行一个mvc框架! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多