JSP简单程序

时间:2012-12-18 21:25:41

标签: html jsp

我正在尝试一个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>

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

感谢您的帮助。非常感谢!

1 个答案:

答案 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>