我的java web工程bookStore结构:
bookList.jsp在bookStore/admin/bookList.jsp
QueryServlet.java在包com.weyi.book.servlet.common下,
在bookList.jsp中执行下面: <!--如果图书列表为空,则应该从Servlet处获取最新图书列表  -->
<c:if test="${books==null}">
         <!-- 注意区别JSP五种页面跳转方法的区别 -->
<jsp:forward page="QueryBookServlet"></jsp:forward>
</c:if>
时发现找不到QueryBookServlet,发现原来是<jsp:forward page="QueryBookServlet"></jsp:forward>
请求时自动加上bookStore/admin/QueryBookServlet,请问该怎么办呢?能告诉我请求过程是什么原理吗?为什么会加上那个虚拟根目录呢?

解决方案 »

  1.   

    看看你web.xml中的servlet的路径是什么
      

  2.   

    我的web.xml路径就是
    <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>QueryBookServlet</servlet-name>
    <servlet-class>com.weiyi.book.servlet.user.QueryBookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>QueryBookServlet</servlet-name>
    <url-pattern>/QueryBookServlet</url-pattern>
    </servlet-mapping>要是没有放在amdin这个文件夹下就可以啊???比如我前台的查询过程QueryBookServlet就可以,前台的JSP这些都是直接放在WebRoot下
      

  3.   

    <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>QueryBookServlet</servlet-name>
    <servlet-class>com.weiyi.book.servlet.user.QueryBookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>QueryBookServlet</servlet-name>
    <url-pattern>/bookStore/admin/QueryBookServlet</url-pattern>
    </servlet-mapping>
      

  4.   

    不行啊,还有应该是这样吧<url-pattern>/bookStore/QueryBookServlet</url-pattern>
    ,不过这样也不行
      

  5.   

    还有 出错的信息竟然还是那样,直接把>/bookStore/QueryBookServlet的路径给忽略了
      

  6.   

    原来是这句不行。、不懂为什么
    <c:if test="${books==null}">
             <!-- 注意区别JSP五种页面跳转方法的区别 -->
    <jsp:forward page="<%=path %>/AdminQueryBookServlet"></jsp:forward>
    </c:if>
      

  7.   

    点击forward里面路径包含/bookStore/admin/QueryBookServlet
      

  8.   

    前几天有同学也是纠结这个路径问题,我去帮他看了半天,web.xml配置也没问题。最后好不容易找出问题是他的jsp是用dreamever画出来的html,直接拷过来。页面前面有个路径设置,默认的是页面上面的路径设置到WebROOT下去找servlet,而忽略了你的web.xml配置。不知道楼主页面上面有没有路径的设置,有可能是这个问题。还有一点就是强烈建议使用相对路径,实际项目中没人会用绝对路径,都是用相对路径。
      

  9.   

    嗯 你好,我没配置servlet目录的,还有这个问题用了绝对路径后是对了,可以访问到Servlet,但是问题又来了,JSP里的那段
    <c:if test="${books==null}">
      <!-- 注意区别JSP五种页面跳转方法的区别 -->
    <jsp:forward page="<%=path %>/AdminQueryBookServlet"></jsp:forward>//就是这句。
    </c:if>
    直接就报错,bookList.jsp(42,52)"%>什么之类的异常
    去掉这句后就没错了。接下来你说的这句话
    还有一点就是强烈建议使用相对路径,实际项目中没人会……
    ,我觉得做项目过程中或者以后的维护中,可能会移动些.jsp之类的文件,如果用相对路径,容易出错造成维护困难等,当然这些个人一点观点而已
      

  10.   

    配置没啥子错 JSP是我直接写的