在页面加载时将变量从jsp提交到servlet

时间:2015-04-15 13:06:55

标签: jsp java-ee servlets scriptlet inbox

我正在设计一个收件箱系统,它从jsp页面的会话中获取用户名并将其发送到servlet,然后该servlet根据用户名加载收件箱表(来自数据库)并将其返回到jsp页面。

我可以通过单击将一个提交按钮发送给servlet,但如何在不创建表单和提交按钮的情况下自动将其从jsp页面传递给servlet。

1 个答案:

答案 0 :(得分:1)

这就是你需要ajax的地方。

将提交按钮更改为html按钮和onclick函数,对servlet执行ajax调用并在那里执行操作,并通过打印流将输出传递给jsp。

<input type="button" onClick="loadInbox();" value="inbox"/>

并且你的loadInbox()函数将执行ajax:

function loadInbox(){
  $.ajax({
            type: "POST",
            data: { "userId": userId },
            url: 'YourServletName',
            dataType: 'json',  
            "success": function (data) {
                if (data != null) {
                    var vdata = JSON.parse(data);
                    console.log("output from server" + vdata);    
                },
            "error": function (data) {
                console.log("error "+ data);
            }
        });     

}

并在您的servlet(YourServletName)类中,执行逻辑操作并将输出传递给打印流:

void doPost(...... request, ... response){
 PrintWriter out = response.getWriter();

 // get the userId from request:
 String userId = request.getParameter("userId");

// do your logic stuff :
// get the output and print it to output stream:
  String yourOutput = "{ 'output': 'This is an example output'}";

  out.print(yourOutput);
  out.flush();
  out.close();
}

这就是你所要做的一切。和out.println(yourOutput);将你的逻辑/结果的反应传递给成功&#34; ajax调用的方法,如果没问题。在开发人员模式下检查您的Web控制台,以验证您从servlet获取的响应是否为json string / object。

  

记得将jquery库添加到你的javascript库中!

希望这能指导你......快乐的阿贾克斯!