spring mvc 将图片文件以源的方式写入到jsp页面
spring mvc 将图片文件以流的方式写入到jsp页面
spring mvc不像struts2:
- <action name="TwoDimensionalCodeAction" class="com.wsg.action.TwoDimensionalCodeAction">
- <result type="stream">
- <param name="inputName">inputStream</param>
- </result>
- <result name="testForm">/form_success.jsp</result>
- </action>
直接设置结果既可实现跳转,显示页面。
在spring mvc的action中需要设置response,具体如下:
@RequestMapping(value="/getpic", method = RequestMethod.GET) public String getpic(Model model, HttpServletResponse response) throws IOException { response.setContentType("image/jpeg"); // 设置返回内容格式 File file = new File("d:/a.jpg"); //括号里参数为文件图片路径 if(file.exists()){ /如果文件存在 InputStream in = new FileInputStream("d:/a.jpg"); //用该文件创建一个输入流 OutputStream os = response.getOutputStream(); //创建输出流 byte[] b = new byte[1024]; while( in.read(b)!= -1){ os.write(b); } in.close(); os.flush(); os.close(); } return null; }
这里选择相应的跳转,return null即可!
如果这样在把二进制流发送到页面时,response的流会出现一个问题:
- threw exception [java.lang.IllegalStateException: getOutputStream() has already been called for this response] with root cause
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
这个时候页面加上以下代码即可解决
- <%
- out.clear();
- out=pageContext.pushBody();
- %>