写了一个简单servlet下载程序,该程序调用一次,就会运行两次,哪里不对?

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletEx... public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//response.setContentType("text/html;charset=utf-8");
//两个输出流只能用一个
//PrintWriter out = response.getWriter();
System.out.println("down servlet is running.");
String realPath = this.getServletContext().getRealPath("/imgs/猫咪.png");
//取得中文文件的全部名字,在设置相应消息头中要用到
String name = realPath.substring(realPath.lastIndexOf("\\")+1);
//下边的确定文件名字的语句会打印出两次,为何啊???
System.out.println(name);
//输入流输出流,输出流之前,先用response设置相应消息头
InputStream is = new FileInputStream(realPath);
//response.setHeader("Content-Disposition", "attachment;filename=name");
response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(name,"GBK"));
OutputStream os = response.getOutputStream();
byte buff[] = new byte[1024];
int len = -1;
while((len=is.read(buff))!=-1){
os.write(buff, 0, len);
}
is.close();
}
web.xml文件部分内容:
展开
 我来答
happy2012zjh
2013-06-30 · TA获得超过273个赞
知道小有建树答主
回答量:1197
采纳率:100%
帮助的人:512万
展开全部
问题还解决了?首先你要说你问题出在什么地方?报错没?还是没有达到你的效果,否则谁有时间帮你瞎弄啊
更多追问追答
追问
没报错,也达到我要的效果,可以说一切都顺利,表面看没问题。问题如标题:对servlet的一次请求,servlet程序自己会运行两次。也就是说请求一次,它应该运行一次,然后返回给客户端结果,但是他运行两次,多运行了一次,我说明白了吗?难道他聪明了?有意识了?有生命了?
追答
你怎么使用doget呢?正常来说,提交表单之类的都用post,还有一个可能就是你回传的时候是不是经过跳转,看看是不是会触发你这个servlet
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七秒雨言
2013-07-01
知道答主
回答量:12
采纳率:0%
帮助的人:9837
展开全部
你敢不敢设断点跟一下????
追问
断点正常,没什么不对的地方。不知道它为什么要运行两次。
追答
看来你出来结果了,一直以来我也没登,给忘了,抱歉啊……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zy121788
2015-03-06
知道答主
回答量:11
采纳率:0%
帮助的人:8.1万
展开全部
也遇到这种情况了,不知怎么办
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在横店影视城看罗马假日的懒羊羊
2017-04-13
知道答主
回答量:1
采纳率:0%
帮助的人:995
展开全部
你好,能否问一下是什么原因?非常感谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式