肯定会抛造型异常的
子类引址是不能存放父类实例的
我不知道你为什么要强行造型
disp.forward((ServletRequest)request, (ServletResponse)response); 

解决方案 »

  1.   

    我先前一直就是用:
    disp.forward(request, response); 
    但还是会抛出那个异常,之后看文档觉得forward的参数是(ServletRequest request, ServletResponse response);
    我考虑会不会是参数不对的问题,才强制转换类型的。
    而且我把RequestDispatcher disp =this.getServletContext().getRequestDispatcher("/catalog.jsp"); 里面的catalog.jsp换成别的jsp页面是会正常运行的,显示了jsp页面的内容。
      

  2.   

    我刚才看错了
    你的写法没错
    但确实没表要强行造型说不定你的程序已经转向成功了
    查查会不会是/catalog.jsp的问题
      

  3.   

    恩,明星鱼确实厉害,应该是catalog.jsp的问题
    一开始我以为是catalogservlet在web.xml里的mapping和catalog.jsp同名了,所以将
    /catalog.jsp改成/showCatalog.jsp.
    下面代码是catalog.jsp的内容,我如果把<%  %>中的内容删掉,就可以转向成功。
    那还请帮我看下里面有没有错误,,谢谢了啊,
    这个问题困扰了我快一个星期了~!~<%@ page import="examples.ProductItem" %>
    <html>
        <head><title> Jasmine's Catalog page </title></head>
        <body>
            <jsp:include page="title.jsp" />
            <h3><A HREF="/jasmine/showQuote">View Current Shopping Cart</A></h3>
            <h3>Please choose from our selections</h3>
            <center><table>        
            <%
    //Retrieves catalog vector from HTTPSession and displays product item details in a table format
            session = request.getSession(false);
            Vector products=(Vector)session.getAttribute("products");
            int size=products.size();
            ProductItem item=null;
            for(int i=0; i<size;i++){
                item=(ProductItem)products.elementAt(i);
                %>
                <tr>
                    <td bgcolor="#ffffaa"><a href="/jasmine/catalog?productId=<%=item.getProductID()%>"><b><%=item.getName()%><b></td>
                    <td align="right" bgcolor="#ffffaa"><%=item.getBasePrice()%></td>        
                    <td bgcolor="#ffffaa"> <A HREF="/jasmine/catalog?Buy=<%=item.getProductID()%>">  Add to Cart</A></td>
                </tr>
            <%}%>
            </table></center>
            <P>    
                <%
        // Displays the name of the product item added to the cart, at the bottom of the page.
                String productName = (String) request.getAttribute("ProductPurchased");
                if (productName != null) {
                %>
                    <i> <%=productName%></i> has been added to your shopping cart.
             <% } %>
        </body>
    </html>
      

  4.   

    这里的帖子怎么不能删除或者修改啊, 
    上面我发的那个太乱了,想修改一下都不行,我想问一下,jsp里面能不能发送消息到服务器控制台显示窗口?! 
    也就是说怎么调试jsp页面?!
      

  5.   

    要在JSP中调试可以在需要的地方使用System.out就OKAY了,例如:
    <%
    System.out.println("程序乖乖能跑到这儿么??????");
    %>
    因为JSP在运行时其实也是先被编译成Servlet的
    转向已经成功,在这个JSP中好像有3处造型:
    Vector products=(Vector)session.getAttribute("products");
    ProductItem item=null;
            for(int i=0; i<size;i++){
                item=(ProductItem)products.elementAt(i);
    String productName = (String) request.getAttribute("ProductPurchased");
    你自己查查是哪个的问题吧另外,你为什么要使用vector呢,虽然它可以自动保持线程同步,但效率实在挺差……
      

  6.   

    呵呵,我这是改的书上的源代码,《 精通EJB 》 上面的。
    Vector  products=(Vector)session.getAttribute(  "products  ");  
    这个地方估计有错,我把它加上之后就报错了,
    源代码里是那么写的,我也不太懂,
    换作你的话,你会怎么写呢?因为products里包含的是product的信息,而且是多个product,这么多东西通过什么类型传送呢?ps:能否介绍本jsp的书啊?