我无法更新数字,也就是说,如果第一个数字是8和13,并且有人提交了21,那么下次有人加载页面时,数字将是13和21。我知道我的会话有问题,但是不要不知道是什么
<%@ page import="java.io.*"%><%@
import="java.util.*"%><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>MAIN</title>
</head>
<body>
<%
String sum = (String) session.getAttribute("sum");
if (sum==null) {
sum = "0";
session.setAttribute("sum",sum);
}
int isum = Integer.parseInt(sum);
String fib1= (String) session.getAttribute("fib1");
fib1 = "8";
session.setAttribute("fib1",fib1);
int ifib1 = Integer.parseInt(fib1);
String fib2= (String) session.getAttribute("fib2");
fib2 = "13";
int ifib2 = Integer.parseInt(fib2);
isum=ifib1+ifib2;
boolean numberReceived=false;
int usum = -1;
try{
usum=Integer.parseInt(request.getParameter("number"));
numberReceived=true;
}catch(NumberFormatException nfe){
System.out.print("error");
}
if (!numberReceived) {
out.print("You need to enter a value");
} else {
if (usum==isum) {
out.print("correct");
ifib1+=5;
} else {
out.print("incorrect");
}
}
session.setAttribute("fib1",""+ifib1);
%>
<input type="button" value="go" onclick="doTheGObutton();">
<form action="index.jsp" method="post">
<%=fib1%> + <%=fib2%> = <input type="text" name="number">
<input type="submit" value="continue" name="submit">
</form>
</body>
</html>
最佳答案
这是问题代码的摘要。
String fib1= (String) session.getAttribute("fib1");
fib1 = "8";
session.setAttribute("fib1",fib1);
因此,让我们阅读代码。
读取“ f1b1”会话属性的值,并将其放在
fib1
中。用硬接线常数替换
fib1
中的值。将“ f1b1”会话属性更新为硬连接常数。
那怎么可能做你想做的事?当然,稍后您将新值写入session属性。但这很麻烦,因为上面的代码将“ fib1”作为JSP的第一个动作。
我的建议是,当您遇到这样的问题时,您应该仔细阅读所编写的代码,并思考它是否会完成您想要/需要的工作。