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