我用的web服务器是Tomcat5.0,项目目录webapps,项目名:jspmvctest 是一个通过提交的体重和身高来测试身体状况的例子
项目各个文件目录:
表示层:jspmvctest/View.jsp jspmvctest/View_Result.jsp
控制器:jspmvctest/WEB-INF/Control_Servlet.java
模型层:jspmvctest/WEB-INF/Model.java
配置:jspmvctest/WEB-INF/web.xml
java文件都编译后放在jspmvctest/WEB-INF/classes文件夹下了运行jsp页面(View.jsp)显示正常,但是一提交就发生错误,错误提示如下:
HTTP Status 404 - /jspmvctest/Control_Servlet
type Status report
message /jspmvctest/Control_Servlet
description The requested resource (/jspmvctest/Control_Servlet) is not available.
说是请求资源不可用,不知道是哪里的问题,谁帮我找找啊,具体代码如下:View.jsp:提交表单
<%@ page contentType="text/html; charset=gb2312" %>
<html>
<head><title>世界卫生组织体重状况测定</title></head>
<body>
<center>
<font color=red size=5 >看看您的体重状况如何</font>
<hr><br>
<form name="view" method="post" action="Control_Servlet" >
&nbsp;
体重&nbsp;<input name="weight" value="" type="text" >公斤<br>
身高&nbsp;<input type="text" name="height" value="" >米<br>
<input type="submit" value="提交" >&nbsp;&nbsp;
<input type="reset" value="重填" >
</form>
</center>
</body>
</html>Control_Servlet.java :接收类
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;public class Control_Servlet extends HttpServlet{

  public void doGet(HttpServletRequest request,HttpServletResponse response)
           throws IOException,ServletException{   //抛出接受请求的过程中的异常信息
   doPost(request,response);
  }
  public void doPost(HttpServletRequest request,HttpServletResponse response)
           throws IOException,ServletException{   //抛出发送信息的过程中异常信息
  
   String weight=request.getParameter("weight");//获取表单中体重的字符串信息
   String height=request.getParameter("height");//获取表单中身高的字符串信息
  
   Model Pro =new Model();           //建立一个model的实例Pro 
   Pro.setBmi(weight,height);   //调用Model的方法来处理事物
   String BMI=Pro.getBmi();   //得到结果
   Pro.setResult(BMI);
   String result=Pro.getResult();
     //通过建立一个model实例Pro,调用模型层组件model处理身高和体重信息
  
   response.setContentType("text/html; charset=gb2312");//指定以中文字符集显示返回信息
  
   request.setAttribute("result",result);
   request.setAttribute("BMI",BMI);
     //使用RequestDispatcher 转发至显示视图页面/view_Result.jsp
   RequestDispatcher requestDispatcher=request.getRequestDispatcher("/View_Result.jsp");//获得RequestDispatcher对象
   requestDispatcher.forward(request,response);//转发
  }
}Model.java :javabean
public class Model
{
public Model(){
} private String result ;
private String bmi ; //体重指数 public void setBmi(String w, String h){
double wt=Double.parseDouble(w);             //将字符串类型的体重数据转换成double类型
double ht=Double.parseDouble(h);             //将字符串类型的身高数据转换成double类型
double bmit =wt/(ht*ht);                      //按给定公式计算BMI体重指数

bmit*=10;
int bmitt=(int)bmit;
bmit=(double)bmitt/10;
bmi=String.valueOf(bmit);
//通过在浮点型和整型之间,先后进行相互的强制转换,使BMI指数只保留一位小数。
}
public String getBmi(){
return bmi;
}

public void setResult(String bmi){               //根据BMI指数大小判定体型
double bmit=Double.parseDouble(bmi);
if(bmit>18.5 && bmit<=25)
result="您的体重在正常范围,请继续保持!";
else if(bmit>25 && bmit<=30)
result="您的体重超重,请加强锻炼!";
else if(bmit>30)
result="您太.........重了,请注意饮食结构,加强锻炼!";
else
result="您的体形偏瘦,请注意营养!";
}
public String getResult(){
return result;           //将处理结果返回控制层组件controller_Servlet
}}View_Result.jsp :显示结果
<%@ page contentType="text/html; charset=GB2312" %>
<%
//输出返回信息
String BMI=(String)request.getAttribute("BMI");
String result=(String)request.getAttribute("result");

        out.println("<html>");
    out.println("<body>");
    out.println("<center>");
    out.println("您的BMI体重指数为:" + "<font color=red>" + BMI + "</font><br>");
   out.println(result);
        out.println("</center>"); 
%>web.xml :
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <servlet>
     <servlet-name>control</servlet-name>
     <servlet-class>Control_Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>control</servlet-name>
     <url-pattern>/controller</url-pattern>
  </servlet-mapping>
</web-app>请帮忙看看,我自己实在是找不出来啊

解决方案 »

  1.   

    <servlet-name>control </servlet-name>
        <url-pattern>/controller </url-pattern> 
    ------------------------
    你看看你的配置哪来的Control_Servlet....是controller提交要到url-pattern,
    <form name="view" method="post" action="Control_Servlet" > =====
    -------------------------
    把aciton那里改掉。。改成如下:
    <form name="view" method="post" action="controller" > 
      

  2.   

    配置有明显错误    <servlet> 
        <servlet-name>control </servlet-name> 
        <servlet-class>Control_Servlet </servlet-class> 
      </servlet> 
      <servlet-mapping> 
        <servlet-name>control </servlet-name> 
        <url-pattern>/controller </url-pattern> 
      </servlet-mapping> <servlet-class>Control_Servlet</servlet-class> 
    红色的部分换成该类的完全路径(包名+类名)
    <url-pattern>/controller</url-pattern> 
    这个才是真正应该请求的路径
      

  3.   

    你建servlet的时候,选择的默认路径是/jspmvctest/Control_Servlet ,其实应该把默认路径改为/Control_Servlet 就可以了.
      

  4.   

    把Control_Servlet 删除 ,重新建一个Control_Servlet 路径改为/Control_Servlet 就行了.
      

  5.   

    我的servlet没有包啊,是直接在jspmvctest/WEB-INF/目录下建的,大家说具体点怎么改啊
      

  6.   


    jspmvctest/下是不是应该有个WebRoot?比如jspmvctest/WebRoot/WEB-INF/classes下放class呢?
      

  7.   

    是你访问路径错误应该是/jspmvctest/controller 而不是/jspmvctest/Control_Servlet 
      

  8.   

    也就是<form name="view" method="post" action="Control_Servlet" > 
    应该改成<form name="view" method="post" action="/controller" > 
      

  9.   

    原来是action提交错误,OK了,谢谢!谢谢大家!!!