jquery在用户的每个请求上更新java hashmap

时间:2014-05-08 14:38:50

标签: java javascript jquery jsp servlets

是否有必要先在浏览器上显示数据,然后使用jquery进行更新。我们不能直接更新servlet中的java对象。请建议,我在这里解释了我的场景。谢谢!

在jsp中,我编写了一个jquery代码,它将把get请求发送到我的Java servlet。这是jquery代码。

$.ajax({
    url: '<%=portalContext.createTemplateProcessURI()%>' + '?s1=' + $("#networkBox1").val() + '&box1=Box1&tick=add&val1=' + allvs + '&s2=' + $("#networkBox2").val() + '&box2=Box2&val2=' + allvs,
    type: 'get',
    dataType: 'text',
    async: false,
    success: function (data) {
        Processbox(data); // This function displaying the result.
    }
});

在我的java代码中,我正在检索所有这些参数并根据收到的值操作Hashmap。

public PortalURI execute(PortalContext portalContext) throws ActionException {

    HttpServletRequest request = portalContext.getPortalRequest().getRequest();
    HttpServletResponse response = portalContext.getPortalResponse().getResponse();
    HttpSession session = portalContext.getPortalRequest().getSession();

    Map<String, List<List<String>>> mapLeftBOX = new HashMap<String, List<List<String>>>();
    Map<String, List<List<String>>> mapRightBOX = new HashMap<String, List<List<String>>>();

    if ("add".equalsIgnoreCase(tick)) { 

       mapLeftBOX = (Map<String, List<List<String>>>) session.getAttribute(session,"mapLeft", null);   // retrieving the map Left value stored in session  in previous servlet
       mapLeftBOX.put(newkeyfromjquery, newvaluesfromjquery); // updsating the map with new values from jquery

       session.setAttribute("mapLeft", mapLeftBOX); // setting the new map in session

       out.write("concatStringsfrom mapLeftBOX"); // retrieve string values from map and write the response back to jquery
    }
}

这是我的示例代码。所以,当一个请求被触发时,jquery将被调用,我的servlet将被执行。 servlet中的hashmap将根据jquery发送的请求参数进行更新,一旦更新,我已将新映射设置到会话中,然后将响应发送回jquery,jquery将在jsp上显示结果。

现在用户将触发另一个请求,并且将再次调用servlet,这次它将首先从会话中获取映射(我在之前的请求中设置),然后使用新的jquery值更新该映射并将其再次放入session并将响应发送回jquery并在jsp中显示。

此用户可能会重复多次,直到完成为止。一旦完成,jsp就会点击提交按钮,用户将通过相同的更新地图在另一个jsp上显示最终结果。最后用户将点击该jsp上的提交并将值存储在服务器中。

我的问题是:

正如你现在所看到的那样,我正在通过Jquery get request直接调用和操作java对象(hashmap)。 这是我正在遵循的正确方法吗?让我告诉你,我的功能在开发环境中工作正常,但我担心这个方法在它上线之前。

(另一种方法2--我想到的是我可以将所有数据首先带入浏览器,而不是使用jquery我可以操作DOM数据,因此无需一次又一次地调用Java servlet。暂停我的数据是非常复杂的,更新在dom /客户端将是非常复杂的,即使我更新,我需要将完整更新的DOM数据发送到servlet,这将是复杂的)

这就是为什么我决定采用第一种方法,它将直接在servlet中更新我的对象,我可以从会话中获取最新的对象以提交给服务器。

0 个答案:

没有答案