【问题标题】:How can I make my website communicate with my servlet?如何让我的网站与我的 servlet 通信?
【发布时间】:2015-09-16 02:01:00
【问题描述】:

我创建了一个 Web 应用程序,它获取 JqTree“坐标”并将这些坐标 var POSITIONS 发送到我的服务器,由我的 servlet 获取,该 servlet 将创建一个包含这些“坐标”的文件,但是,我不知道我将如何进行这种交流。你能帮帮我吗?

提前致谢。

我在下面做了一个图表来解释我的想法。

1 - 用户更改树

2 - 此代码立即获取位置

$(document).ready(function() {

var POSITIONS;

//var data is a dynamic JSON file that should be created in the backend.
var data = [{
    label: 'node1',
    id: 1,
    children: [{
        label: 'child1',
        id: 2
    }, {
        label: 'child2',
        id: 3
    }]
}, {
    label: 'node2',
    id: 4,
    children: [{
        label: 'child3',
        id: 5
    }]
}];
$('#tree1').tree({
    data: data,
    autoOpen: true,
    dragAndDrop: true
});


console.log($('#tree1').tree('toJson')); //This will give you the loading jqtree structure.

$('#tree1').bind(
    'tree.move',
    function(event) {
        event.preventDefault();
        // do the move first, and _then_ POST back.
        event.move_info.do_move();
        console.log($(this).tree('toJson')); //this will give you the latest tree.
        POSITIONS = $(this).tree('toJson');
        alert(POSITIONS);
        $.post('http://MyServer', {
            tree: $(this).tree('toJson')
        });
        alert("done"); //this will post the json of the latest tree structure.
    }
);


});

3 - 那么它应该由 AJAX 发送

$(function() {
alert("file has been successfully sent");
var data = new FormData();
data.append("custom_css", POSITIONS);
$.ajax({
    url: 'myserver',
    type: 'POST',
    data: data,
    cache: false,
    dataType: 'json',
    processData: false,
    contentType: false,
    success: function(response) {
        alert("file has been successfully sent");
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert('ERRORS: ' + textStatus);
    }
});

});

4 - 最后被我的 servlet 接收并保存到一个文本文件中:Positions.txt

package com.srccodes.example;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
* Servlet implementation class HelloWorld
*/
@WebServlet("/HelloWorld")
public class HelloWorld extends HttpServlet {
    private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public HelloWorld() {
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter printWriter  = response.getWriter();
    printWriter.println("<h1>Hello World!</h1>");

    String position = "JQTREE POSITIONS";
    PrintWriter writer = new PrintWriter("Positions.txt", "UTF-8");
    writer.println(position);
    writer.close();
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

}

【问题讨论】:

    标签: java ajax html servlets


    【解决方案1】:
    1. 您的 .ajax url 应该与 @WebServlet() 映射匹配。在你的情况下"/HelloWorld"
    2. 由于您正在 POST 处理数据,因此您应该在您的 servlet 中覆盖 doPost() 方法。
    3. 最后在您的doPost() 方法中,从"custom_css" 变量中检索数据,例如..request.getParameter("custom_css")
    4. 继续执行其余的业务逻辑。


    $.ajax({
        url: '/HelloWorld',
        type: 'POST',
        data: data,
        cache: false,
    

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getParameter("custom_css")
    
    // Proceed with your business logic here, using above data
    //
    //
    //
    //
    }
    

    【讨论】:

    • 对不起,我不在线,但我现在要测试一下 :) +1
    • 对不起,但我仍然有一些疑问:1 - 我如何从var Positions 获取数据,2 - 我应该将我的页面放在哪个目录中 3 - 我必须将其导出为战争文件并将其放入我的服务器(而不是我的桌面服务器)
    • 告诉我你需要知道的关于我在做什么的事情,我搜索了很多,但没有人谈论细节
    • 我想,我给了你答案:request.getParameter("custom_css") 会给你 var Positions 数据。
    • 将整个事情部署为一场战争,就像您通常对 Web 应用程序所做的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多