【问题标题】:Scoped variables in Java. How to link two variables within one scope?Java 中的作用域变量。如何在一个范围内链接两个变量?
【发布时间】:2014-02-01 17:28:08
【问题描述】:

我正在尝试调用存储为会话范围变量的变量。如果我运行第一个 if 语句,则作用域变量调用有效。当我运行else 语句并且只输入名称而不输入地址(但之前输入的名称和存储的地址)时,不会返回与该名称匹配的地址。任何帮助将不胜感激,因为我对此有点迷茫。谢谢

@WebServlet("/Test2") // tells server under which URL to offer this servlet 
public class UserRegistration extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        // set content-type header before accessing the Writer 
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        // then write the response 
        out.println("<html>" + "<head><title>Online Shopping Directory</title></head>");
        //Get the identifier of the book to display 

        out.println("<body bgcolor=\"#ffffff\">"
                + "<h2>Please enter your name:</h2>" + "<form method=\"get\">"
                + "<input type=\"text\" name=\"username\" size=\"25\">"
                + "<p></p>"
                + "<h2>Please enter your address:</h2>" + "<form method=\"get\">"
                + "<input type=\"text\" name=\"useraddress\" size=\"25\">"
                + "<p></p>"
                + "<input type=\"submit\" value=\"Submit\">"
                + "<input type=\"reset\" value=\"Reset\">"
                + "</form>");

        String name = request.getParameter("username");
        String address = request.getParameter("useraddress");
        HttpSession session = request.getSession();
        session.setAttribute("username", address);

        if ((name != null) && (name.length() > 0) && (address != null) && (address.length() > 0)) {

            out.println("The username " + name + " has been saved for "
                    + "this session. The address of this user is "
                    + (String) session.getAttribute("username"));
        } else if ((name == "username") && (address == null)) {
            out.println("The username " + name + " is already saved. The address of this user is " + (String) session.getAttribute("username"));
        }
        out.println("</body></html>");
        out.close();
    }
}

【问题讨论】:

  • 请正确格式化您的代码,并说明代码应该做什么以及它的作用。我可以肯定地说name=="username"是不正确的:你用equals()比较字符串,而不是==。
  • 谢谢。对不起,我是这个网站的新手,并认为我已经正确上传了代码。这是我遇到的问题。对不起,我第一次没那么清楚。如果为会话输入并保存了一些名称和地址,然后我只输入一个名称(之前已与地址一起存储)但不输入地址,那么我希望程序调用关联的存储地址用那个名字。这就是我试图在 else 语句中实现的目标。谢谢

标签: java servlets scope


【解决方案1】:

我认为你应该使用 equals 而不是 ==

 if ((name.equals("username")) && (address.equals(""))) {
        out.println("The username " + name + " is already saved. The address of this user is " + (String) session.getAttribute("username"));
    }

【讨论】:

    猜你喜欢
    • 2020-09-30
    • 2015-01-24
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-26
    • 2021-11-03
    相关资源
    最近更新 更多