给你个参考
package web;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.ws.http.HTTPException;
import java.io.*;
public class BMIServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)
throws HTTPException,IOException{
//设置服务器解码时所采用的编码格式,该编码必须与浏览器发送请求时的编码格式一致
request.setCharacterEncoding("utf-8");
String weight = request.getParameter("weight");
String height = request.getParameter("height");
String gendar = request.getParameter("gendar");
String rs = jugde(weight,height,gendar);
// step3 将处理结果写入到response对象上
// 生成一个消息头(content-type).告诉浏览器返回的数据类型
response.setContentType("text/html;charset=utf-8");
// 获得输出流
PrintWriter out = response.getWriter();
// 向流中输出数据
out.println(rs);
out.close();
}
public String jugde(String weight,String height,String gendar){
int bmi = (int)((Double.parseDouble(weight))/(Double.parseDouble(height)*Double.parseDouble(height)));
String str="";
if(gendar.equals("m")){
if(bmi<20){
str="你的BMI指数是:"+bmi+"体形偏轻";
}else if(bmi>=20 && bmi<25){
str="你的BMI指数是:"+bmi+"体形适中 ";
}else if(bmi>=25 && bmi<30){
str="你的BMI指数是:"+bmi+"体形偏胖";
}else if(bmi>=30 && bmi<35){
str="你的BMI指数是:"+bmi+"体形肥胖";
}else{
str="你的BMI指数是:"+bmi+"体形 非常肥胖";
}
}
if(gendar.equals("f")){
if(bmi<19){
str="你的BMI指数是:"+bmi+"体形偏轻";
}else if(bmi>=19 && bmi<24){
str="你的BMI指数是:"+bmi+"体形适中";
}else if(bmi>=24 && bmi<29){
str="你的BMI指数是:"+bmi+"体形偏胖";
}else if(bmi>=29 && bmi<34){
str="你的BMI指数是:"+bmi+"体形肥胖";
}else{
str="你的BMI指数是:"+bmi+"体形 非常肥胖";
}
}
return str;
}
}
jsp:
doPost(HttpServlet request, HttpServlet response)
你方法的参数类型都不对,应该是doPost(HttpServlet request, HttpServlet response)
所以才会出现提示。
doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
你把改语句上面的那个注释行给取消注释,该方法必须在charset被设置之后调用。Writer必须知道如何将Java内部的Unicode字符转换成字节流
这里是不可以这样写的。跳转到一个页面吧。