如何在Java中将视图文件输出为ajax响应?

时间:2012-08-05 03:02:31

标签: java ajax jsp servlets

我是一名PHP开发人员,但我正在过渡到Java。 (此时Java非常新)

有没有办法对Servlet进行ajax调用,并使用单独的.jsp文件的输出进行响应(而不是直接在Servlet中创建的html或json)?

这是一个使用Zend Framework的常见做法示例,如果可能的话,我想用Java做什么:

public function myAjaxCallAction(){
    $this->view->someVar = 'whatever';
    $this->view->hello = 'world';
    $output = $this->view->render('someViewScript.phtml'); // the above vars are in this view
    echo $output;
}

再次对java很新,任何有关此类情况的建议都会非常感激!

3 个答案:

答案 0 :(得分:2)

尝试加载您想要的.jsp。通常,您将使用JSP片段(.jspf)。如果要加载其内容,可以执行以下操作:

您的信息页:

... content ...
<div id="container"></div>
... content ...

上面页面的Javascript(使用jQuery):

$(function(){
    $( "#container" ).load( "pathToYoutJsp/file.jsp", { someVar: "whatever", hello: "world" } );
});

将加载的JSP类似于:

... content ...
${param.someVar} foo foo foo ${param.hello}
... content ...

答案 1 :(得分:0)

是的,如果我正确地提出了您的问题,那么您想要做的是对JSP文件的简单AJAX请求并获得reaponse。这样做:

在客户端Javascript中:

var xmlHttp = new XMLHttpRequest(); 
xmlHttp.open( "GET","ajaxreq.jsp?query=John", false ); 
xmlHttp.send(); 
return xmlHttp.responseText;
//returns the response from server. here it is "Hello John"

在服务器ajaxreq.jsp中:

<% 
..              //import required libraries and other application logic
out.print("Hello "+request.getParameter("query"));
..
%>

希望这有帮助。

答案 2 :(得分:0)

是的,您可以在发货前使用request.setAttribute然后发送到您的单独页面

request.setAttribute("someVa", "whatever");

RequestDispatcher requestDispatcher; 

requestDispatcher = request.getRequestDispatcher("/thankYou.jsp");

requestDispatcher.forward(request, response);

请参阅以下链接redirect jsp from servlet RequestDispatcher