【问题标题】:Problem of retrieving username and password using Ajax and Java使用 Ajax 和 Java 检索用户名和密码的问题
【发布时间】:2011-02-02 10:52:14
【问题描述】:

我在一个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”似乎根本没有作为请求参数传递?您的 AJAX 请求仅在数据对象中包含它们的值 - 作为“用户名”和“密码”。

标签: java ajax jsp servlets


【解决方案1】:

您希望它们作为请求参数up,因此您也应该这样传递它们:

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);

相关问题:

【讨论】:

  • 我应该将您指向您自己的博文吗?响应编码丢失。
  • 非常感谢。有效。我很高兴得到快速响应。
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 2015-06-03
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2012-11-02
  • 1970-01-01
相关资源
最近更新 更多