首页 > 其他 > 详细

struts2读取二进制图片并显示

时间:2015-05-26 19:06:50      阅读:251      评论:0      收藏:0      [点我收藏+]

struts2读取二进制图片并显示

struts.xml配置

<action name="activitiAction_*" class="activitiAction" method="{1}"></action>

action文件xxxAction.java:

/**
	 * 生成图片
	 * 
	 * @return
	 * @throws IOException
	 */
	public void generateDiagram() throws IOException
	{
		activitiService.generateDiagram("277501");//调用service实现类中的方法

	}

service实现类ActivitiService.java:

/**
	 * 生成图片
	 */
	@Override
	public void generateDiagram(String processInstanceId)
	{
	        //拿到response
		HttpServletResponse response = ServletActionContext.getResponse();
		
		response.setContentType("image/png");
		//拿到servlet的输出流
		ServletOutputStream out=null;
		try {
			out = response.getOutputStream();
		} catch (IOException e) {
		}
		//以下方法是为了拿到图片输入流		
		ProcessInstance pi =runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
		BpmnModel bm=repositoryService.getBpmnModel(pi.getProcessDefinitionId());
		
		List<String> activeIds=runtimeService.getActiveActivityIds(pi.getId());
		DefaultProcessDiagramGenerator dpg = new DefaultProcessDiagramGenerator();
		InputStream is = dpg.generateDiagram(bm, "png", activeIds,
	                Collections.<String> emptyList(), processEngine
	                        .getProcessEngineConfiguration().getActivityFontName(),
	                        processEngine.getProcessEngineConfiguration().getLabelFontName(),
	                null, 1.0);
		
		//读取输入流
		byte[] bt = new byte[1024];
		int c;
		try {
			while ((c = is.read(bt)) != -1) {
				for (int i = 0; i < c; i++)
					out.write(bt[i]);
			}
			out.flush();
			out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

浏览器访问方式:

http://localhost:8080/oa_learn/activitiAction_generateDiagram.action


struts2读取二进制图片并显示

原文:http://pjwqh.blog.51cto.com/632548/1655343

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!