2015-11-02 97 views
-3

这应该是一个简单的Jsp servlet计算器,但它并不工作。我可能是盲目的,但我想我错过了一些东西。 有人可以帮我吗?Java Jsp Servlet计算器

我有一个servlet:

package com.service.servlet; 
import java.io.IOException 
import java.util.Map; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebServlet("/Calculator") 
public class Calculator extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    double result; 

    public Calculator() { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException {} 

    protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

     String valueString = request.getParameter("value"); 
     String resultString = request.getParameter("result"); 

     double result = 0; 
     if (!resultString.isEmpty()) { 
      result = Double.parseDouble(resultString); 
     } 

     if (!valueString.isEmpty()) { 

      double value = Double.parseDouble(valueString); 

      Map parameters = request.getParameterMap(); 
      if (parameters.containsKey("plus")) { 
       result += value; 
      } else if (parameters.containsKey("minus")) { 
       result -= value; 
      } else if (parameters.containsKey("divide")) { 
       result /= value; 
      } else if (parameters.containsKey("multiply")) { 
       result *= value; 
      } 

      request.setAttribute("value", result); 

      RequestDispatcher view = request.getRequestDispatcher("/Calc.jsp"); 
      view.forward(request, response); 

     } else { 

      RequestDispatcher view = request.getRequestDispatcher("/Calc.jsp"); 
      view.forward(request, response); 
     } 
    } 
} 

JSP文件是简单和干净的价值和结果:

<form action="Calculator" method="POST"> 
<input name="value" type="text"/> 
<input name="plus" type="submit" value="+" /> 
<input name="minus" type="submit" value="-" /> 
<input name="divide" type="submit" value="/" /> 
<input name="multiply" type="submit" value="*" /> 
<input name="result" readonly="readonly" type="text" value="" />"; 
</form> 
+0

您是否遇到错误? – Perdomoff

+0

不,我没有错误! – fiberhead

+1

'request.setAttribute(“value”,result);'应该填充名为'result'的输入?此外,缩进是必须的可读性 – 2015-11-02 19:05:26

回答

1

您应该setAttribute()电话更改为:

request.setAttribute("result", result); 

然后修改以下行:

<input name="result" readonly="readonly" type="text" value="${result}" />;