我正在设计一个收件箱系统,它从jsp页面的会话中获取用户名并将其发送到servlet,然后该servlet根据用户名加载收件箱表(来自数据库)并将其返回到jsp页面。
我可以通过单击将一个提交按钮发送给servlet,但如何在不创建表单和提交按钮的情况下自动将其从jsp页面传递给servlet。
答案 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库中!
希望这能指导你......快乐的阿贾克斯!