我正在尝试一个JSP程序,其中有一个数字和一个按钮。单击按钮后,上面的数字会递增。我需要在这个程序中使用会话。
这是我做的代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Welcome </title>
</head>
<body>
<%
// check if there already is a "Counter" attrib in session
AddCount addCount = null;
int test = 0;
String s;
try {
s = session.getAttribute("Counter").toString();
} catch (NullPointerException e){
s = null;
}
if (s == null){
// if Counter doesn't exist create a new one
addCount = new AddCount();
session.setAttribute("Counter", addCount);
} else {
// else if it already exists, increment it
addCount = (AddCount) session.getAttribute("Counter");
test = addCount.getCounter();
addCount.setCounter(test);
addCount.addCounter(); // increment counter
session.setAttribute("Counter", addCount);
}
%>
<%! public void displayNum(){ %>
<p> Count: <%= test %> </p>
<%! } %>
<input TYPE="button" ONCLICK="displayNum()" value="Add 1" />
</body>
</html>
结果是每次我运行程序时,数字都会递增..但是我不希望这种情况发生..我想要在点击按钮时增加数字:/我做错了什么?
感谢您的帮助。非常感谢!
答案 0 :(得分:1)
原理图JSP,因为它可以完成。
这里我假设页面名为“counter.jsp”,并且AddCount类位于包“mypkg”中。
可以在第一个HTML浏览器文本之前的HTML标题行中设置JSP编码。
对于ISO-8859-1,您实际上可能使用带有额外字符的Windows-1252编码,例如特殊的逗号引号。即使是MacOS浏览器也会接受这些。
在这里,我检查是否单击了按钮,因为是否存在表单参数“somefield”。 (还有其他可能性。)
session =“true”在这里至关重要。
<%@page contentType="text/html; charset=Windows-1252"
pageEncoding="Windows-1252"
session="true"
import="java.util.Map, java.util.HashMap, mypkg.AddCount" %>
<%
// Check if there already is a "Counter" attrib in session
AddCount addCount = (AddCount)session.getAttribute("Counter");
if (addCount == null) {
// If Counter doesn't exist create a new one
addCount = new AddCount();
session.setAttribute("Counter", addCount);
}
// Inspect GET/POST parameters:
String somefield = request.getParameter("somefield");
if (field != null) {
// Form was submitted:
addCount.addCounter(); // increment counter
}
int count = addCount.getCounter();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome - counter.jsp</title>
</head>
<body>
<p> Count: <%= count %></p>
<form action="counter.jsp" method="post">
<input type="hidden" name="somefield" value="x" />
<input type="submit" value="Add 1" />
</form>
</body>
</html>