写了一个简单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文件部分内容: 展开
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文件部分内容: 展开
4个回答
展开全部
问题还解决了?首先你要说你问题出在什么地方?报错没?还是没有达到你的效果,否则谁有时间帮你瞎弄啊
更多追问追答
追问
没报错,也达到我要的效果,可以说一切都顺利,表面看没问题。问题如标题:对servlet的一次请求,servlet程序自己会运行两次。也就是说请求一次,它应该运行一次,然后返回给客户端结果,但是他运行两次,多运行了一次,我说明白了吗?难道他聪明了?有意识了?有生命了?
追答
你怎么使用doget呢?正常来说,提交表单之类的都用post,还有一个可能就是你回传的时候是不是经过跳转,看看是不是会触发你这个servlet
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你敢不敢设断点跟一下????
追问
断点正常,没什么不对的地方。不知道它为什么要运行两次。
追答
看来你出来结果了,一直以来我也没登,给忘了,抱歉啊……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
也遇到这种情况了,不知怎么办
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好,能否问一下是什么原因?非常感谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询