0

我正在尝试做一个有数字和按钮的 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>

结果是每次我运行程序时,数字都会增加..但是我不希望这种情况发生..我希望数字在单击按钮时增加:/我做错了什么?

谢谢你的帮助。将不胜感激!

4

1 回答 1

1

一个示意图 JSP,因为它本来可以完成。

这里我假设页面被命名为“counter.jsp”并且AddCount 类驻留在包“mypkg”中。

JSP 编码可以在 HTML 标题行中设置,位于第一个 HTML 浏览器文本之前。

对于 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>
于 2012-12-18T22:10:43.070 回答