2015-11-02 4 views
-3

Это должен быть простой калькулятор сервлета Jsp, который не работает. Возможно, я слепой, но я думаю, что что-то пропустил. Может кто-нибудь мне помочь?Java Jsp Калькулятор сервлета

У меня есть сервлет:

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); 
     } 
    } 
} 

СПЯ Файл является простым и чистым со значением и результат:

<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'? Также отступ является обязательным для чтения. –

ответ

1

Вы должны изменить setAttribute() вызов:

request.setAttribute("result", result); 

Затем измените следующую строку:

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