RequestDispatcher无法将我提取到JSP页面

时间:2014-12-14 16:58:03

标签: java jsp servlets requestdispatcher

所以,我所做的是调用servlet(purchasecreate.java),然后它应该将我重定向到purchaseCreateM.jsp。我不知道什么是错的,但每次运行时,它都会将我重定向到PurchaseCreate的空白页面。因此,我取消了RequestDispatcher并转发以检查程序可以运行多远。该程序能够完全运行但是当我将调度程序设置回来时,它会再次将我带到空白页面。有人可以帮我吗?

PurchaseCreate.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
         Members member = new Members();
            Stocks stock = new Stocks();
            Purchase purc = new Purchase();
            String purcid = "";
            stock.setStockid(request.getParameter("stockid"));
            String stockid = stock.getStockid();

            String purcdid = "";
            int quantity = 0 ;
            PrintWriter out = response.getWriter();
            try{
                       out.println(stockid);
            out.println("Hello");
            int idNum = GeneratePdid();
            if(idNum<10)
                 purcdid = "PD0000"+String.valueOf(idNum);
            else if(idNum<100)
                 purcdid = "PD000"+String.valueOf(idNum);       
            else if(idNum<1000)
                 purcdid = "PD00"+String.valueOf(idNum);
            else if(idNum<10000)
                 purcdid = "PD0"+String.valueOf(idNum);
            else if(idNum<100000)
                 purcdid = "PD"+String.valueOf(idNum);
            int PidNum = GeneratePid();
            if(PidNum<10)
                 purcid = "P000"+String.valueOf(PidNum);
            else if(PidNum<100)
                 purcid = "P00"+String.valueOf(PidNum);       
            else if(PidNum<1000)
                 purcid = "P0"+String.valueOf(PidNum);
            else if(PidNum<10000)
                 purcid = "P"+String.valueOf(PidNum);

            out.println("Hello");
            out.println(stockid);
            stock.setStockid(stockid);
            out.println(purcid);
            purc.setPurchaseid(purcid);
            out.println(purcdid);


            out.println("Hello");
            quantity = Integer.parseInt(request.getParameter("quantity"));
            out.println(quantity);
            Purchasedetails purchased = new Purchasedetails(purcdid,quantity,stock,purc);
            out.println(stock);
            out.println(purc);         
            Query query = em.createNamedQuery("Purchasedetails.findAll");
            List<Purchasedetails> listDetails = query.getResultList();

             Query query2 = em.createNamedQuery("Stocks.findAll");
               List<Stocks> stockPrice = query2.getResultList();
               double stockPriceReal = 0; 
     for(int i = 0 ; i <stockPrice.size(); i++){
         String stockid2 = stockPrice.get(i).getStockid();
         if(stockid2.equals(stockid))
         {
          stockPriceReal = Double.parseDouble(stockPrice.get(i).getStockprice().toString());
         }
     }
            out.print(stockPriceReal);
            HttpSession session = request.getSession();
            request.setAttribute("listDetails",listDetails);
            request.setAttribute("stockPriceReal",stockPriceReal);
            out.print(stockPriceReal);
           //  response.sendRedirect("MemberAccess/PurchaseCreateM.jsp");
            RequestDispatcher rd = request.getRequestDispatcher("MemberAccess/PurchaseCreateM.jsp");
            rd.forward(request, response);

      } catch (Exception ex) {
    Logger.getLogger(PurchaseCreate.class.getName()).log(Level.SEVERE, null, ex);
} 
            finally{
                out.close();
            }


    }


public int GeneratePid(){  

            Query query = em.createNamedQuery("Purchase.findAll");
            List<Purchase> purchaseList = query.getResultList();
            String lastId = "";

                    if(!purchaseList.isEmpty()){
                        lastId = purchaseList.get(purchaseList.size()-1).getPurchaseid();
                    }
                    System.out.println(lastId);
                String subString = lastId.substring(1,4);
                int realId = Integer.parseInt(subString) +1;
            return realId;   
         }

public int GeneratePdid(){
    Query query = em.createNamedQuery("Purchasedetails.findAll");
    List<Purchasedetails> purchaseDetailsL = query.getResultList();
    String lastId = "";


                    if(!purchaseDetailsL.isEmpty()){
                        lastId = purchaseDetailsL.get(purchaseDetailsL.size()-1).getPurchasedetailid();
                    }
                String subString = lastId.substring(2,6);
                int realId = Integer.parseInt(subString) +1;
            return realId;   

}

PurchaseCreate.jsp

<%@page import="java.util.ArrayList"%>\
<%@page import="model.*"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>


    <html>
        <head>

            <title>Cart</title>
    </head>
    <% List<Purchasedetails> list = (List<Purchasedetails>)request.getAttribute("listDetails"); %>


     <% double StockPrice = (double)request.getAttribute("stockPriceReal"); %>
     <%!  double stockArray[]; %>
     <%     if(stockArray.length == 0)
        stockArray[0] = StockPrice;
        else
         for(int i = 0; i <stockArray.length;i++)
         stockArray[i] = StockPrice;
                %>

     <% int size= list.size(); %>
     <%! String pDID = "";%>
     <%! int pDIDno = 0; %>
     <%! String pDIDSub = ""; %>
     <%! String pDIDreal = ""; %>
     <body>
          <% if (size != 1){ %>
          <% pDID = list.get(list.size()-1).getPurchasedetailid(); %>

     <% pDIDSub = pDID.substring(2, 6); %>
     <% pDIDno = Integer.parseInt(pDIDSub) + (size-1);}%>
     <% if(pDIDno<10)
                 pDIDreal = "PD0000"+pDIDno;
            else if(pDIDno<100)
                 pDIDreal = "PD000"+ String.valueOf(pDIDno);       
            else if(pDIDno<1000)
                 pDIDreal = "PD00"+ String.valueOf(pDIDno);
            else if(pDIDno<10000)
                 pDIDreal = "PD0"+ String.valueOf(pDIDno);
            else if(pDIDno<100000)
                 pDIDreal = "PD"+String.valueOf(pDIDno);
                 Purchasedetails pd = new Purchasedetails(pDIDreal);
               // list.get(list.size()-1).setPurchasedetailid(pDIDreal);
                  list.set(list.size()-1, pd);
     %>
   <table border="1">
            <thead>
                <tr>
                    <th>No.</th>
                    <th>Purchase Details ID</th>
                    <th>Stock ID</th>
                    <th>Quantity</th>
                    <th>Price</th>
                </tr>
            </thead>
            <tbody>

                <% for (int i = 0; i <list.size(); i++) { %>
                <tr>
                    <td><%= i+1 %></td>
                    <td><%= list.get(i).getPurchasedetailid() %></td>
                    <td><%= list.get(i).getStockid()  %></td>
                    <td><%= list.get(i).getOrderqty() %></td>
                    <td><%= stockArray[i] %></td>
                </tr>
                <% i++;%>
                <% } %>
            </tbody>
        </table>
     </body>
</html>

EDIT(15/12/14):这是打印在服务器日志上的内容。

   [2014-12-15T01:07:06.526+0800] [glassfish 4.0] [SEVERE] [] [] [tid: _ThreadID=107 _ThreadName=Thread-4] [timeMillis: 1418576826526] [levelValue: 1000] [[
  org.apache.jasper.JasperException: PWC6033: Error in Javac compilation for JSP

PWC6199: Generated servlet error:
source value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error:
target value 1.5 is obsolete and will be removed in a future release

PWC6199: Generated servlet error:
To suppress warnings about obsolete options, use -Xlint:-options.

PWC6197: An error occurred at line: 20 in the jsp file: /MemberAccess/PurchaseCreateM.jsp
PWC6199: Generated servlet error:
incompatible types: java.lang.Object cannot be converted to double

PWC6199: Generated servlet error:
/PurchaseCreateM_jsp.java uses unchecked or unsafe operations.

PWC6199: Generated servlet error:
Recompile with -Xlint:unchecked for details.


    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:129)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:299)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:392)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:739)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:575)
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:546)
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:428)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:378)
    at controller.PurchaseCreate.doPost(PurchaseCreate.java:106)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:745)]]

1 个答案:

答案 0 :(得分:1)

你在JSP中有一个编译错误:在jsp中的行:20,“java.lang.Object不能转换为double”

声明

double StockPrice = (double)request.getAttribute("stockPriceReal");

需要,

double StockPrice = (Double)request.getAttribute("stockPriceReal");

对象不能直接类型转换为原始变量。使用包装类Double而不是