web.xml的配置修改  
如上所说组成Web应用程序的Servlet,还包含初始化参数。在Tomcat中,也可以将放在Web-INF/classes中的Servlet直接以servlet/Servlet名访问,但是一般来说,不推荐这样使用。而且这样的使用方法还会导致Servlet的相关资源组织的复杂性。所以一般来说推荐将所有的Servlet在这里定义出来。在tomcat中定义Servlet的方法与JBuidler中稍有不同,以我们的报表应用程序为例,配置如下:  
<servlet>  
       <servlet-name>jsp</servlet-name>  
       <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
       <init-param>  
           <param-name>logVerbosityLevel</param-name>  
           <param-value>WARNING</param-value>  
       </init-param>  
       <load-on-startup>3</load-on-startup>  
   </servlet>  
 
<servlet>  
       <servlet-name>pubparam</servlet-name>  
       <servlet-class>servlet.pubparam</servlet-class>  
   </servlet>  
     
<servlet>  
       <servlet-name>DoTask</servlet-name>  
       <servlet-class>servlet.DoTask</servlet-class>  
   </servlet>  
     
<servlet>  
       <servlet-name>Actpubparam</servlet-name>  
       <servlet-class>servlet.Actpubparam</servlet-class>  
   </servlet>  
 
   <servlet>  
       <servlet-name>RptSave</servlet-name>  
       <servlet-class>servlet.RptSave</servlet-class>  
   </servlet>  
     
   <servlet>  
       <servlet-name>historyDel</servlet-name>  
       <servlet-class>servlet.historyRpt</servlet-class>  
   </servlet>  
 
   <servlet>  
       <servlet-name>ReportViewControl</servlet-name>  
       <servlet-class>servlet.ReportViewControl</servlet-class>  
   </servlet>  
 
   <servlet>  
       <servlet-name>ReportTemplateControl</servlet-name>  
       <servlet-class>servlet.ReportTemplateControl</servlet-class>  
   </servlet>  
 
   <servlet>  
       <servlet-name>DoShare</servlet-name>  
       <servlet-class>servlet.DoShare</servlet-class>  
   </servlet>  
   
 <servlet>  
       <servlet-name>DoTmp</servlet-name>  
       <servlet-class>servlet.DoTmp</servlet-class>  
   </servlet>  
 
 <servlet>  
       <servlet-name>TmpUpLoad</servlet-name>  
       <servlet-class>servlet.TmpUpLoad</servlet-class>  
   </servlet>  
 
 <servlet>  
       <servlet-name>Authority</servlet-name>  
       <servlet-class>servlet.Authority</servlet-class>  
   </servlet>  
 
 <servlet>  
       <servlet-name>calendar</servlet-name>  
       <servlet-class>servlet.calendar</servlet-class>  
   </servlet>  
 
 <servlet>  
       <servlet-name>svt_DownloadToExcel</servlet-name>  
       <servlet-class>servlet.svt_DownloadToExcel</servlet-class>  
   </servlet>  
<!--  ================  Built  In  Servlet  Mappings  =========================  -->  
 
 
   <!--  The  servlet  mappings  for  the  built  in  servlets  defined  above.    Note    -->  
   <!--  that,  by  default,  the  CGI  and  SSI  servlets  are  *not*  mapped.    You        -->  
   <!--  must  uncomment  these  mappings  (or  add  them  to  your  application's  own  -->  
   <!--  web.xml  deployment  descriptor)  to  enable  these  services                            -->  
   <!--  The  mapping  for  the  default  servlet  -->  
<servlet-mapping>  
       <servlet-name>pubparam</servlet-name>  
       <url-pattern>/pubparam</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>DoTask</servlet-name>  
       <url-pattern>/DoTask</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>Actpubparam</servlet-name>  
       <url-pattern>/Actpubparam</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>RptSave</servlet-name>  
       <url-pattern>/RptSave</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>historyDel</servlet-name>  
       <url-pattern>/historyDel</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>ReportViewControl</servlet-name>  
       <url-pattern>/ReportViewControl</url-pattern>  
   </servlet-mapping>  
 
       <servlet-mapping>  
       <servlet-name>ReportTemplateControl</servlet-name>  
       <url-pattern>/ReportTemplateControl</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>DoShare</servlet-name>  
       <url-pattern>/DoShare</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>DoTmp</servlet-name>  
       <url-pattern>/DoTmp</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>TmpUpLoad</servlet-name>  
       <url-pattern>/TmpUpLoad</url-pattern>  
   </servlet-mapping>  
 
   <servlet-mapping>  
       <servlet-name>Authority</servlet-name>  
       <url-pattern>/Authority</url-pattern>  
   </servlet-mapping>  
 
       <servlet-mapping>  
       <servlet-name>calendar</servlet-name>  
       <url-pattern>/Calendar</url-pattern>  
   </servlet-mapping>  
 
       <servlet-mapping>  
       <servlet-name>svt_DownloadToExcel</servlet-name>  
       <url-pattern>/DownloadToExcel</url-pattern>  
   </servlet-mapping>  
注意上面的代码中蓝色部分的为报表程序所需要的servlet的配置信息。其中<servlet>部分描述的是servlet的名称和对应的包名。<servlet-mapping>部分描述的是servlet的名称和对应的物理目录名。在tomcat中这两部分不能写在一起,必须所有的servlet元素写在一起,所有的Servlet-mapping写在一起。这一点非常重要。

解决方案 »

  1.   

    如果我现在不想改web.xml,请问我的问题出在什么地方了?
    应该怎么修改?
    谢谢。
      

  2.   

    不改web.xml似乎不太可能:)因为你要指定你的servlet程序访问的路径——但好象可以把你的servlet放在一个默认的路径里,也是可以不用改web.xml就可以访问的,不过我不记得了,帮你up一把吧
      

  3.   

    好像是classpath或者java-home的设置有了问题。我装tomcat的时候就是因为这个原因在执行jsp脚本是就出现了同样的出错信息
      

  4.   

    看看你的tomcat的example里的servlet例子的存放路径,把你的servlet程序放到那里,在web.xml中照“猫”画一个servlet声明就好使了:)