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();
- %>