public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print( " <script> alert( 'Booking successfully ') </script> ");
        ByteArrayOutputStream out1 = QRCode.from(all).to(ImageType.PNG).stream();
            response.setContentType("image/png");
            response.setContentLength(out1.size());
            
           OutputStream outStream = response.getOutputStream();
            outStream.write(out1.toByteArray());            outStream.flush();                        
            outStream.close();上網看過,只能用其中一個.但是我想用2個. 怎樣做. 另外,我試過加out.clear() 和out = pageContext.pushBody(); 就出錯.cannot find symbol.

解决方案 »

  1.   

    你是想显示图片吧。直接<img src="ImgServlet" />获取图片。也就是图片另外用个servlet。
      

  2.   

    你那段script代码完全可以拿到jsp里控制,而且你的这种逻辑有必要吗
      

  3.   

    我只是選了少部分的代碼出來..image我是把value轉為QR code.所以會用到outputstream
      

  4.   

    原本的代碼    @Override
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();        String doc_id = request.getParameter("doctor").toString();
            String TIME1 = request.getParameter("time");
            String date1 = request.getParameter("datepicker");
            SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
            SimpleDateFormat sdf1 = new SimpleDateFormat("HH:mm");
            HttpSession session = request.getSession(true);
            //connect database
            PreparedStatement statement = null;
            Statement stmt = null;
            ResultSet rs = null;
            try {
                Class.forName(driver).newInstance();
                con = DriverManager.getConnection(url + dbName, username, password);
                stmt = con.createStatement();            statement = con.prepareStatement("INSERT INTO booking (booking_id,client_id,doctor_id,booking_date,booking_time,status) VALUES(?,?,?,?,?,?)");
                rs = stmt.executeQuery("select count(*)+1 as rowCount from booking");
                java.util.Date date = new java.util.Date();
                java.util.Date time1 = new java.util.Date();
                date = sdf.parse(date1);
                time1 = sdf1.parse(TIME1);
                           rs.next();
                int count = rs.getInt("rowCount");
                if (count < 10) {
                    statement.setString(1, "B0000" + count);
                } else if (count >= 10 || count <= 99) {
                    statement.setString(1, "B000" + count);
                }else if(count>=100 || count<=999){
                    statement.setString(1, "B00" + count);
                }
                statement.setString(2, (String) session.getAttribute("Username"));
                statement.setString(3, doc_id);
                statement.setDate(4, new java.sql.Date(date.getTime()));
                statement.setTime(5, new java.sql.Time(time1.getTime()));
                statement.setString(6, "N");
                statement.executeUpdate();
               out.print( " <script> alert( 'Booking successfully ') </script> ");
                
                String qrtext2 = request.getParameter("subject").toString();
                String all="client id: "+session.getAttribute("Username")+"\n"+"doc id: "+doc_id+"\n"+"subject: "+qrtext2+"\n"+"Date: "+date1+"\n"+"Time: "+TIME1;              ByteArrayOutputStream out1 = QRCode.from(all).to(ImageType.PNG).stream();
                response.setContentType("image/png");
                response.setContentLength(out1.size());
                
               OutputStream outStream = response.getOutputStream();
                outStream.write(out1.toByteArray());            outStream.flush();                        
                outStream.close();
                
                //out.clear();
    //out = pageContext.pushBody();        } catch (Exception e) {
                out.print(e);
            } finally {
                try {
                    statement.close();
                    rs.close();
                    stmt.close();
                    con.close();
                    out.close();            } catch (Exception e) {
                }
                out.close();
            }
        }
      

  5.   

    一样的道理,另外写个servlet,你可以把ID传过去再获取你要的东西
      

  6.   

    現在我弄清楚了..直接out print<img src=servlet?all
     
    servlet: 放入qr code代碼和getParameter("all");但是最後出來的是死圖.
      

  7.   

    解決了..
    加out.print("<img src="+request.getContextPath()+"/QRcode?bid="+all+">"); 就可以了