我在 jsp 页面中使用 Ajax,其中我们有一个填写用户名和密码的表单。我能够在同一页面中检索它们。但是在将它传递给 Servlet 时,即 Admin.java 文件,用户名和密码都没有传递。
代码:
function prepareLoginDialog(){
$dialog = $('<div></div>')
.html('<div id="dialog-confirm" title="Enter the login details here :">'+
'User: <input type="text" id="u" name="u" ></input><br />'+
'Pass: <input type="password" id="p" name="p" ></input>'+
'</div>')
//System.out.println(user);
//System.out.println(pass);
.dialog({
autoOpen: false,
modal: true,
title: 'Login',
buttons: {
'Login': function() {
//Send Login Request to Server
var user = document.getElementById("u").value;
var pass = document.getElementById("p").value;
alert(user);
alert(pass);
//System.out.println(u.text);
login(user,pass);
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
}
登录函数是:
function login(user, pass) {
//ToDo: User Login check
alert(user);
$.ajax({
type:"GET",
url: "Admin?action=login",
dataType: "html",
data: { username: user, password: pass },
success: function(response){
prepareLogoutDialog();
prepareLoggedIn();
}
});
在Java文件中是
request.getSession().setAttribute("access", true);
System.out.println("Admin:doGet:login:true");
System.out.println("u");
String userName = request.getParameter("u");
String password = request.getParameter("p");
System.out.println(userName);
System.out.println(password);
不打印。 传递前是否需要将用户名和密码转换为字符串?如果是这样,我们该怎么做?
请帮忙。
最佳答案
您希望它们作为请求参数 u
和 p
,因此您也应该这样传递它们:
data: { u: user, p: pass },
或者更改您的 servlet 以在 data {}
String userName = request.getParameter("username");
String password = request.getParameter("password");
另一方面,System.out.println()
打印到标准输出(最终出现在日志文件中),而不是 HTTP 响应。如果您希望它们出现在响应中,以便在 function(response)
中作为 response
的内容可用,那么您需要打印到 HTTP 响应。
response.setContentType("text/plain;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.println(userName);
writer.println(password);
相关问题:
关于java - 使用 Ajax 和 Java 检索用户名和密码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4873509/