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

Submitting variable from jsp to servlet on page load

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

我可以放置一个提交按钮,通过单击它来将用户名发送到 servlet,但是如何在不创建表单和提交按钮的情况下将它从 jsp 页面自动传递到 servlet。

那是你需要 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) class 中,您执行逻辑操作并将输出传递给打印流:

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);如果没问题,会将 logic/result 的响应传递给 ajax 调用的 "success" 方法。在开发人员模式下检查您的 Web 控制台,以验证从 servlet 设置的响应是您获得的 json string/object.

remember to add jquery library to your javascript libraries!

希望这会指导你...快乐 Ajax !