JspBean.java:package jspproject;/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2011</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class JspBean {
    private String first;
    private String second;
    private double result;
    private String operator;
    
    
    public void setFirst(String first) { this.first = first; }
    public void setSecond(String second) { this.second = second; }
    public void setOperator(String operator) { this.operator = operator; }
    
    public String getFirst() { return this.first; }
    public String getSecond() { return this.second; }
    public String getOperator() { return this.operator; }
    
    
    public double getResult() {
        return this.result;
    }
    
    public void calculate() {
        double one = Double.parseDouble(first);
        double two = Double.parseDouble(second);
        
        try {
            if(operator.equals("+")) result = one + two;
            else if(operator.equals("-")) result = one - two;
            else if(operator.equals("*")) result = one * two;
            else if(operator.equals("/")) result = one / two;
            else if(operator.equals("%")) result = one % two;
        } catch(Exception e) {
            System.err.println(e);
        }
    }
}
JspTest.jsp:
<%@ page contentType="text/html; charset=gb2312" %><html>
  <head>
    <title>JspTest</title>
  </head>
  <body bgcolor="#ffffff">
     <form action="register.jsp" method="GET">
        <table>
           <tr>
              <th>简单的计数器</th>
           </tr>
           <tr>
              <td>第一个参数</td>
              <td><input type="text" name="firstParam" /></td>
           </tr>
           
           <tr>
              <td>操作符</td>
              <td>
                <select name="operator">
                   <option value="+">+</option>
                   <option value="-">-</option>
                   <option value="*">*</option>
                   <option value="/">/</option>
                   <option value="%">%</option>
                </select>
              </td>
           </tr>
           
           <tr>
              <td>第二个参数</td>
              <td><input type="text" name="secondParam" /></td>
           </tr>
           
           <tr><td><input type="submit" value="计算" /></td></tr>
        </table>
     </form>
  </body>
</html>
register.jsp:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page errorPage="JspTest_error.jsp" %><jsp:useBean id="user" scope="page" class="jspproject.JspBean" />
<jsp:setProperty name="user" property="*" /><html>
  <head>
    <title>register</title>
  </head>
  <body bgcolor="#ffffff">
     <%
        try {
          user.calculate();
        } catch(Exception e) {
          System.err.println(e);
        }
     %>
     
     <jsp:forward page="display.jsp">
        <jsp:param name="operation1" value="<%=user.getFirst() %>"/>
        <jsp:param name="oper" value="<%=user.getOperator() %>"/>
        <jsp:param name="operation2" value="<%=user.getSecond() %>"/>
        <jsp:param name="result" value="<%=user.getResult() %>"/>
     </jsp:forward>
  </body>
</html>
display.jsp:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page errorPage="display_error.jsp" %><%
   String operation1 = request.getParameter("operation1");
   String oper = request.getParameter("oper");
   String operation2 = request.getParameter("operation2");
   String result = request.getParameter("result");
%><html>
<head>
<title>
display
</title>
</head>
<body bgcolor="#ffffff">
     <hr />
     计算结果: 
     <%
        out.println(operation1 + oper + operation2 + "=" + result);
     %>
     <hr />
</body>
</html>
为什么最后显示为null+null=0.0?不能正确传值?
而且在控制台输出java.lang.NullPointerException。。

解决方案 »

  1.   

    user.calculate();是不是给回收了啊?????
      

  2.   

    在register.jsp页面接收参数值的时候,你设置自动匹配,只有operator那个参数能根据名称自动匹配上,另外两个参数都不能按照相同的名称匹配,所以值也就是null,那么在进行user.calculate();的时候下面
    double one = Double.parseDouble(first);
    double two = Double.parseDouble(second);
    这两句的时候自然就会报java.lang.NullPointerException
      

  3.   

    你要把你的bean引用写在你的上一个页面才行
      

  4.   

    你jsp页面的参数名称分别为firstParam、secondParam,而你javabean里面的属性名称分别为first和second,他们之间怎么能匹配呢