【问题标题】:Session tracking does not persist会话跟踪不会持续存在
【发布时间】:2023-04-03 09:43:01
【问题描述】:

这是我的代码。我们使用的HttpSession 也在课堂上使用过,它有效但现在不起作用。在 for 循环之后我无法打印任何内容。我使用doGet() 方法。我们需要将 stringToPhone 存储在会话对象中,并将 carrierNum 存储到 cookie 中。

    String carrier = request.getParameter("carrier");
    String carrierNum = request.getParameter("carrierNum");
    String stringToPhone = request.getParameter("phoneNumber");
    String equiPhoNum = "";

    PrintWriter out = response.getWriter();
    HttpSession s1 = request.getSession();

    out.println("Carrier: " + carrier);
    out.println("Inputted phone number: " + stringToPhone);

    String[] x = stringToPhone.split("");       

    int i = 0;
    out.print("PHONE NUMBER: " + carrierNum + "-");

    for(i = 0; i <= 7; i++){
        if(x[i].equals("A") || x[i].equals("B") || x[i].equals("C") || x[i].equals("a") || x[i].equals("b") || x[i].equals("c")){
            x[i] = "2";
        }
        if(x[i].equals("D") || x[i].equals("E") || x[i].equals("F") || x[i].equals("d") || x[i].equals("e") || x[i].equals("f")){
            x[i] = "3";
        }
        if(x[i].equals("G") || x[i].equals("H") || x[i].equals("I") || x[i].equals("g") || x[i].equals("h") || x[i].equals("i")){
            x[i] = "4";
        }
        if(x[i].equals("J") || x[i].equals("K") || x[i].equals("L") || x[i].equals("j") || x[i].equals("k") || x[i].equals("l")){
            x[i] = "5";
        }
        if(x[i].equals("M") || x[i].equals("N") || x[i].equals("O") || x[i].equals("m") || x[i].equals("n") || x[i].equals("o")){
            x[i] = "6";
        }
        if(x[i].equals("P") || x[i].equals("Q") || x[i].equals("R") || x[i].equals("S") || x[i].equals("p") || x[i].equals("q") || x[i].equals("r") || x[i].equals("s")){
            x[i] = "7";
        }
        if(x[i].equals("T") || x[i].equals("U") || x[i].equals("V") || x[i].equals("t") || x[i].equals("u") || x[i].equals("v")){
            x[i] = "8";
        }
        if(x[i].equals("W") || x[i].equals("X") || x[i].equals("Y") || x[i].equals("Z") || x[i].equals("W") || x[i].equals("x") || x[i].equals("y") || x[i].equals("z")){
            x[i] = "9";
        }
        equiPhoNum = x[i] + "";
        if(equiPhoNum != " " && equiPhoNum != null){
            s1.setAttribute("Value1", equiPhoNum); 
        }
        out.print(s1.getAttribute("Value1"));
    }

【问题讨论】:

  • 我认为问题出在这里: if(equiPhoNum != " " && equiPhoNum != null){ s1.setAttribute("Value1", equiPhoNum); }

标签: java servlets httpsession sessiontracking


【解决方案1】:

我建议您在检查条件之前创建equipPhoNum 字符串。就目前而言,对于每次迭代,它都会检查

if(equiPhoNum != " " && equiPhoNum != null)

请记住,您使用的是默认分隔符 split(""),因此第一个元素将是空格 " "。所以编译器跳过了

s1.setAttribute("Value1", equiPhoNum);

然后,您想打印一个尚未设置的值。你肯定会得到NullPointerException 或类似的东西。 所以把条件移到for loop之外,再试一次。

让我们知道结果是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2012-01-10
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多