你还得写: 
 <servlet>
    <servlet-name>controller</servlet-name>
    <servlet-class>你的包名.ControlServlet</servlet-class>
  </servlet>

解决方案 »

  1.   

    楼主,多此一举,为什么映射成*.html,对于.html的文件首先在服务器端是由html的引擎处理的,那里轮到jsp的引擎。
      

  2.   

    楼主的做法的确比较奇怪,如果非要这么做的话,可以参考struts中actionservlet的作法
      

  3.   

    感谢诸位回答。对:zyymmm(娃哈哈) 我的web.xml有相应的设置。我的想法是先把对html的访问请求完全交由一个控制器Servlet来控制,再由控制器分配到相应的jsp页面上。这是Professional Java Programming J2EE 一书中介绍的MVC实现手段,但不知为何我的设置不行。盼望高手们继续指点!谢谢!
      

  4.   

    你这样:
          ServletContext context = this.getServletContext() ;
          RequestDispatcher rd = context.getRequestDispatcher(page);
          rd.forward(request,response);
          //page 是你要的*.html你的程序咋写的,帖给我看看
      

  5.   

    程序如下:package myweb;import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;public class ControllerServlet extends HttpServlet
    {
      public void init() throws ServletException
      {
      }  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
      {
        String viewURL = "handle.jsp";
        request.getRequestDispatcher(viewURL).forward(request,response);
      }
      public void destroy()
      {
      }
    }相应web.xml文件如下:<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
      <servlet>
        <servlet-name>controllerservlet</servlet-name>
        <servlet-class>myweb.ControllerServlet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>controllerservlet</servlet-name>
        <url-pattern>/*.html</url-pattern>
      </servlet-mapping>
    </web-app>在JBuilder中运行时,默认指向了localhost:8080/myweb/*.html(为何它不识别"*"昨为通配符?),显示正常,但输入其它html网址(如index.html)则出现"document not found"错误。 是不是"/*.html"并不代表所有html文件?
      

  6.   

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
      {
        String viewURL = "handle.jsp";
        request.getRequestDispatcher(viewURL).forward(request,response);
      }
    你这段根本没办法跳转,当你定义了映射了之后*.html并不代表html文件,它只是一个请求,你要把这个*.html对应到实际的html文件,虽然他们可能是相同的,然后通过request.getRequestDispatcher(viewURL).forward(request,response);跳转,记得viewURL需要转化为时间的html文件的名字
      

  7.   

    To: ZeroC(笨小孩) 多谢! 还是有一点不明白,怎么“把这个*.html对应到实际的html文件”?难道要在web.xml中把所有可能请求的html都列出来吗? 请指教谢谢!
      

  8.   

    handle.jsp在什么位置?你servlet的启动页面是的路径是localhost:8080/myweb/*.html
    当然你的启动html的名称也为*.html,让后在*.html中提交servlet处理处理是你的handle.jsp应该放在myweb这个目录下面 当然*在里面是不会识别为通配符的
      

  9.   

    何必非要用后缀匹配呢?前缀匹配覆盖你所有的html不就没这么多麻烦事了
      

  10.   

    To:yfh0919(梦白) 我的文件路径和你说的一样。既然"*"不作为通配符,那如何实现我的要求呢?To:phoenixtree(单身贵族) 怎样实现前缀匹配?望指教,谢谢!
      

  11.   

    /test/*那么所有以这个为前缀的URL(比如:http://localhost:8080/test/controller/your.html)都会交给对应的servlet处理
      

  12.   

    ZeroC(笨小孩)的“把这个*.html对应到实际的html文件”?
    是指你的jsp或html中的<form>中的action应为“??.html"而不是页面hHtml页面我的一个例子create_customer.jsp
    <%@ page contentType="text/html;charset=UTF-8" %>
    <%@ taglib uri="/WEB-INF/waftags.tld" prefix="waf" %><form method="POST" action="createcustomer.do"><input type="hidden" name="action" value="create"/><table cellpadding="5" cellspacing="0" width="100%" border="0"><tr>
    <td colspan="3"><p class="kmcatv_title"><h1>请填写客户信息</h1></p></td>
    </tr></table>
    </form>
    web.xml
    <servlet>
        <servlet-name>MainServlet</servlet-name>
        <display-name>MainServlet</display-name>
        <description>The Front Controller for the Pet Store</description>
        <servlet-class>com.sun.j2ee.blueprints.waf.controller.web.MainServlet</servlet-class>
        <init-param>
          <param-name>default_locale</param-name>
          <param-value>en_US</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
      </servlet><servlet-mapping>
        <servlet-name>MainServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>是模仿pet store 做的。
      

  13.   

    注意:
    <servlet-mapping>
        <servlet-name>MainServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>中*.do不要/,切记,
    我也因/*.do而报错。
      

  14.   

    如果是resin的话,要看看resin.conf中的servlet-mapping