求高人进来看看这个问题,本人刚入门,不太懂。求教

心中自然无码 2013-05-22 10:53:56
报错信息如下:
严重: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
严重: Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407)
at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:725)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.creatway.Cnfilter.EncodingFilter.doFilter(EncodingFilter.java:33)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)

JSP页面如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'sendgoods.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>
<script type="text/javascript">
function shuliang(){

var one =document.getElementById("a").value;
var two = document.getElementById("b").value;
var san = parseInt(one/two);
document.getElementById("c").value=san;
setTimeout("shuliang()",1);
}

function del(){
if(!confirm("确认填写信息准确并打印?"))
{
event.returnValue = false;
}
}

</script>

<body onload="shuliang()">

<form action="printqrcode.action">
您的包装数量为<input type="text" id="b" name="sendgoodsnum"/> <input type="submit" value="打印二维码" onclick="del()"/><br/>
您实际发的货物数量为<input type="text" id="a" /><br/>
您此次需要打印条码张数为:<input type="text" id="c" onfocus="this.blur()" style="border:0px"/><br/>


</form>

</body>
</html>


Action文件:
package com.creatway.action;

import java.io.File;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Random;

import com.creatway.creatIcon.ChartGraphics;
import com.creatway.creatQrcode.QRCodeEncoderTest;
import com.creatway.dao.SqlserviceJdbcConnection;
import com.creatway.entity.Goods;
import com.creatway.getdate.Getdate;
import com.creatway.getdate.PrintDate;
import com.lowagie.text.pdf.hyphenation.TernaryTree.Iterator;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class PrintQrcodeAction extends ActionSupport {
private String sendgoodsnum;
private String date=null;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
Map<String, Object> session=ActionContext.getContext().getSession();
/*
*
*/
PrintDate getdate=new PrintDate();//获取生成本地时间
Random random=new Random();//产生随机数,用于随即产生二维码图片名称
int i=random.nextInt();
String Filename=null;
/*
* 二维条码规则:存货编码(8位)+批号(8位,格式为“YYMMDD”+2位预留位置,
* 其中批号为当天打印日期)+供应商编码(预留10位)+采购订单号+数量(预留6位),
* 每项内容中间用英文半角点号分隔“.”。
*/
date=getdate.getDate()+"01";
Goods goods=(Goods) session.get("printqrcodegoods"+session.get("num"));
String data=goods.getCinvcode()+"."+date+"."+goods.getCvencode()+"."+goods.getCpoid()+"."+sendgoodsnum;
QRCodeEncoderTest qrt=new QRCodeEncoderTest("D://qrcode"+i+".png", data);
Thread.sleep(1000);//缓冲一下,可以不要!
/*
* ChartGraphics 主要完成对图片文字的输入以及图片的合成
*/
ChartGraphics cg=new ChartGraphics(goods.getCinvcode(),goods.getCinvstd(),goods.getCvencode(),goods.getCpoid(),sendgoodsnum,date,"D://qrcode"+i+".png");
session.put("file", "D:/union.jpg");
File f1=new File("D:\\qrcode"+i+".png");//删掉生成的二维码图片
f1.delete();
return SUCCESS;
}
public String getSendgoodsnum() {
return sendgoodsnum;
}
public void setSendgoodsnum(String sendgoodsnum) {
this.sendgoodsnum = sendgoodsnum;
}

}
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中自然无码 2013-05-22
  • 打赏
  • 举报
回复
找到原因了. 在使用完输出流以后调用以下两行代码即可: out.clear(); out = pageContext.pushBody();
心中自然无码 2013-05-22
  • 打赏
  • 举报
回复
是.action啊.我估计是下载时出现的问题
<%@ page import="java.io.*,java.util.*;"  pageEncoding="UTF-8"%>
	<!-- 实现下载某个目录下文件的功能 -->
<%
    String downloadFile = (String)session.getAttribute("file");
    BufferedInputStream inputstream = new BufferedInputStream(new
        FileInputStream(downloadFile));
    response.setContentType("application/octet-stream");
    response.addHeader("Content-Disposition","attachment; filename="+downloadFile.substring(downloadFile.length()-8,downloadFile.length()));
    response.setHeader("Accept-ranges", "bytes");
    byte[] b = new byte[100];
    int len;
  OutputStream outp=response.getOutputStream();
try{
    while ( (len = inputstream.read(b)) > 0) {
    outp.write(b, 0, len);
    }
    inputstream.close();
	outp.close();}
catch(Exception e){
  e.printStackTrace();
	outp.close();
}
%>
求人帮我看看到底是啥原因啊
freedomTTT 2013-05-22
  • 打赏
  • 举报
回复
struts2的配置文件 检查 下 !printqrcode web.xml中struts配置的后缀是否是.action
心中自然无码 2013-05-22
  • 打赏
  • 举报
回复
没人知道吗。。。。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧