Servlet-java.lang.IllegalStateException:此响应已调用getWriter()

Alt*_*ung 3 java jsp servlets inputstream

我正在使用GlassFish作为服务器和Netbeans IDE 8.0,这是我的项目结构。

在此处输入图片说明

我的程序如何工作:

  1. 客户端打开localhost:8080 / Beer
  2. 她/他选择了啤酒(在index.html中)
  3. 它将发布到BeerSelect.java(简称BS)
  4. BS将调用BeerExpert.java,然后调用result.jsp,以便最终将Test.jar发送给客户端

这是BS中的重要代码。

    /* Result.jsp */
    String c = request.getParameter("color");
    BeerExpert be = new BeerExpert();
    List result = be.getBrands(c);

    request.setAttribute("styles", result);
    RequestDispatcher view = request.getRequestDispatcher("result.jsp");
    view.forward(request, response);

    /* Test Client Download */
    response.setContentType("application/jar");

    ServletContext ctx = getServletContext();
    InputStream is = ctx.getResourceAsStream("/Test.jar");

    int read = 0;
    byte[] bytes = new byte[1024];

    OutputStream os = response.getOutputStream();
    while ((read = is.read(bytes)) != -1){
        os.write(bytes, 0, read);
    }
    os.flush();
Run Code Online (Sandbox Code Playgroud)

错误: 在此处输入图片说明

Ram*_*PVK 7

同时使用ServletRequest.getOutputStream()和ServletRequest.getWriter()是非法的。这已经在这里详细回答了。

java.lang.IllegalStateException:已经使用输出流