Servlets 显示方法的内容作为对doPost的响应

Servlets 显示方法的内容作为对doPost的响应,servlets,methods,Servlets,Methods,你好。我目前正在servlet中创建一个简单的工资计算器程序,它将显示用户的GrossPay、StoppingTax和NetPay。计算器的计算是正确的。我的问题是,在用户输入所需的数据后,用户的薪资详细信息将显示在Eclipse的控制台中,而不是web浏览器中。我刚刚开始学习servlet,非常感谢您的帮助。代码如下 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Se

你好。我目前正在servlet中创建一个简单的工资计算器程序,它将显示用户的GrossPay、StoppingTax和NetPay。计算器的计算是正确的。我的问题是,在用户输入所需的数据后,用户的薪资详细信息将显示在Eclipse的控制台中,而不是web浏览器中。我刚刚开始学习servlet,非常感谢您的帮助。代码如下

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

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    double hrsWorked1 = 0;
    double ratePHour1 = 0;


    if ((request.getParameter("hrsWorked") != null)||(request.getParameter("ratePHour") != null)) {
        hrsWorked1 = Double.parseDouble(request.getParameter("hrsWorked"));
        ratePHour1 = Double.parseDouble(request.getParameter("ratePHour"));

        if((hrsWorked1 < 0)||(ratePHour1 < 0)){
            out.print("<h1>Invalid amount - must be positive.</h1>");
            out.print("<h3>Click <a href='index.html'>here</a> to try again.</h3>");
        }
    }
    computeSalary(hrsWorked1, ratePHour1);
    out.close();     
}

private void computeSalary(double hrsWorked , double ratePHour) {
        double grosspay = hrsWorked * ratePHour;
        double withholdingTax; 
        double sss = 1500.00;
        double hdmf = 1000.00;
        double deductions; 
        double netpay; 

    if(grosspay <= 10000){
        withholdingTax = grosspay * .08;
        deductions = withholdingTax + hdmf + sss;
        netpay = grosspay - deductions;
        System.out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
        System.out.println("<h4>Withholding (PHP): </h4>" + withholdingTax );
        System.out.println("<h4>SSS (PHP): </h4>" + sss );
        System.out.println("<h4>HDMF (PHP): </h4>" + hdmf );
        System.out.println("<h4>Net Pay (PHP): </h4>" + netpay );
    }
    else if((grosspay >= 10001)&&(grosspay <= 15000)){
        withholdingTax = grosspay * .10;
        deductions = withholdingTax + hdmf + sss;
        netpay = grosspay - deductions;
        System.out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
        System.out.println("<h4>Withholding (PHP): </h4>" + withholdingTax );
        System.out.println("<h4>SSS (PHP): </h4>" + sss );
        System.out.println("<h4>HDMF (PHP): </h4>" + hdmf );
        System.out.println("<h4>Net Pay (PHP): </h4>" + netpay );
    }
    else if((grosspay >= 15001)&&(grosspay <= 25000)){
        withholdingTax = grosspay * .14;
        deductions = withholdingTax + hdmf + sss;
        netpay = grosspay - deductions;
        System.out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
        System.out.println("<h4>Withholding (PHP): </h4>" + withholdingTax );
        System.out.println("<h4>SSS (PHP): </h4>" + sss );
        System.out.println("<h4>HDMF (PHP): </h4>" + hdmf );
        System.out.println("<h4>Net Pay (PHP): </h4>" + netpay );
    }
    else if((grosspay >= 25001)&&(grosspay < 35000)){
        withholdingTax = grosspay * .18;
        deductions = withholdingTax + hdmf + sss;
        netpay = grosspay - deductions;
        System.out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
        System.out.println("<h4>Withholding (PHP): </h4>" + withholdingTax );
        System.out.println("<h4>SSS (PHP): </h4>" + sss );
        System.out.println("<h4>HDMF (PHP): </h4>" + hdmf );
        System.out.println("<h4>Net Pay (PHP): </h4>" + netpay );
    }
    else{
        withholdingTax = grosspay * .25;
        deductions = withholdingTax + hdmf + sss;
        netpay = grosspay - deductions;
        System.out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
        System.out.println("<h4>Withholding (PHP): </h4>" + withholdingTax );
        System.out.println("<h4>SSS (PHP): </h4>" + sss );
        System.out.println("<h4>HDMF (PHP): </h4>" + hdmf );
        System.out.println("<h4>Net Pay (PHP): </h4>" + netpay );
    }
}


}

问题是computeSalary方法正在写入System.out,而不是从响应中获取的变量out

您需要更改computeSalary方法,以按如下方式获取响应PrintWriter:

private void computeSalary(double hrsWorked , double ratePHour, PrintWriter out)
out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );
然后你需要使用它,而不是像这样使用System.out:

private void computeSalary(double hrsWorked , double ratePHour, PrintWriter out)
out.println("<h4>Gross Pay (PHP): </h4>" + grosspay );

如果您从Chrome拨打电话并在网络选项卡中检查响应,您是否在响应中看到任何内容?@bhspencer Chrome中没有显示任何内容。输出应该显示在浏览器中,而不是eclipse的控制台中。@bhspencer我认为问题出在computeSalary方法中,我显示表单输出的方式。我只是不知道什么是正确的显示方式。这一行computeSalaryhrsWorked1,ratePHour1;中出现错误;。它说:PayrollComp类型中的computeSalarydouble,double,PrintWriter方法不适用于参数double,double