getOutputStream()已被调用,但我只是在SpringMVC代码中使用getOutputStream一次

时间:2015-04-01 14:33:49

标签: java jsp

该过程是控制器(跳转) - > jsp(网格) - >控制器(验证码) 所以这是我的代码
控制器(跳转):

/**
 * jump to login in jsp
 * @return
 */
@RequestMapping("/toLogin")
public String toLogin( ) {
    log.debug("to Sign In!---------------------------------------<UserinfoController>");
    return "sign-in";
}

jsp(没有像这样的标签&#34;&lt;%...%&gt;&#34;):

                    <div class="form-group">
                        <label for="code">验证码</label>
                        <input id="code" type="text" name="code" class="span3 form-control ">
                        <a>
                            <img alt="刷新验证码" src="${pageContext.request.contextPath }/code">
                        </a>
                    </div>

控制器(验证码):

    OutputStream os = resp.getOutputStream();  
    ImageIO.write(buffImg, "jpeg", os);
    os.close();

错误是:

  

java.lang.IllegalStateException:已经为此响应调用了getWriter()       在org.apache.catalina.connector.Response.getOutputStream(Response.java:644)       在org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:196)       在com.wyk.pmsys.controller.CodeController.getCode(CodeController.java:107)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在servlet jsp中转换为java使用&#34; out.write()&#34;,这与我的代码&#34; resp.getOutputStream()&#34;? 这就是全部,如何解决它; 如果有别的话,那是什么?以及如何解决它?

1 个答案:

答案 0 :(得分:0)

您需要的只是方法的注释ResponseBody

@RequestMapping("/code")
@ResponseBody //<---- here
public void getCode(HttpServletRequest req, HttpServletResponse resp)  
        throws IOException {