2016-03-20 15 views
0

を返し、私は私のJSPページへの希望:呼び出すサーブレットはIllegalStateExceptionが

<%@page contentType="text/html" pageEncoding="windows-1250"%> 
<%@page import="java.util.Random"%> 
<%@page import = "java.util.*" session="true"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=windows- 
       1250"> 
     <title>JSP Page</title> 
    </head> 
    <body> 
     <% 
      String text = "text"; 
     %> 

     <jsp:include page="header.jsp"> 
      <jsp:param name="test" value="<%=text%>"/> 
     </jsp:include> 
    </body> 
</html> 

パラメータ "テスト" とheader.jspを呼び出し喚起:

<%@page contentType="text/html" pageEncoding="windows-1250"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 
<table bgcolor="#aaaaaa"> 
    <tr> 
     <td> 
      <h1>Image: 
       <br> 
       <jsp:include page="/ServletExample"/> 
      </h1> 
     </td> 
    </tr> 
</table> 

をし、これは、サーブレットを呼び出しました:

@WebServlet(name = "ServletExample", urlPatterns = {"/ServletExample"}) 
public class ServletExample extends HttpServlet { 

    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> 
    * methods. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     request.setCharacterEncoding("UTF-8"); 

     BufferedImage graph = new BufferedImage(500, 500, BufferedImage.TYPE_INT_ARGB); 
     Graphics2D g2d = (Graphics2D) graph.getGraphics(); 
     g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
     g2d.setColor(Color.ORANGE); 
     String text = request.getParameter("test")== null ? "no text" : request.getParameter("text"); 
     g2d.drawString(text, 100, 100); 

     OutputStream out; 
     response.setContentType("image/png"); 
     try { 
      ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
      ImageIO.write(graph, "PNG", buffer); 
      response.setContentLength(buffer.size()); 
      out = response.getOutputStream(); 
      out.write(buffer.toByteArray()); 
     } catch (Exception ex) { 
      throw new ServletException(ex); 
     } 
     out.close(); 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
    /** 
    * Handles the HTTP <code>GET</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Handles the HTTP <code>POST</code> method. 
    * 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    /** 
    * Returns a short description of the servlet. 
    * 
    * @return a String containing servlet description 
    */ 
    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 

} 

"out = response.getOutputStream();"という行にあります。例外をスロー:

Warning: Servlet.service() for servlet jsp threw exception 
java.lang.IllegalStateException 
    at org.apache.jasper.runtime.ServletResponseWrapperInclude.getOutputStream(ServletResponseWrapperInclude.java:124) 
    at example.ServletExample.processRequest(ServletExample.java:59) 
    at example.ServletExample.doGet(ServletExample.java:79) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 
    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.doInclude(ApplicationDispatcher.java:695) 

私は(フラッシュを設定しようとした)が、それは動作しません。あなたは同様の問題に遭遇しましたか?

+0

私は(サイドJSPなし)に直接サーブレットを呼び出すときにすることを追加する画像を表示するには、テキスト「テキストなし」 –

+1

使用 ''とPNG形式に私を返すサーブレットではなく、 ''。複製は正確なプロセスを説明しています(単に "データベース"を "Java2D"に置き換えてください)。 – BalusC

答えて

0

textは、testとなります。

String text = request.getParameter("test")== null ? "no text" : request.getParameter("test"); 
関連する問題