Cannot forward after response has been committed
时间:2011-12-06
来源:互联网
这个错误主要是由于两次跳转所引发的 但是我的代码总通过if else 判断后只跳转了一次
private void findAllFlowCardList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String clientId = request.getParameter("clientId");
String beginDate = request.getParameter("beginDate");
String endDate = request.getParameter("endDate");
Date dBeginDate=new Date();
Date dEndDate= new Date();
int pageNo = 1;
if (request.getParameter("pageNo") != null && !"".equals(request.getParameter("pageNo"))) {
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
int pageSize = Integer.parseInt(this.getServletContext().getInitParameter("pageSize"));
try {
if (beginDate != null && !"".equals(beginDate)) {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(beginDate+ " 23:59:59");
}else {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
if (endDate != null && !"".equals(endDate)) {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate + " 23:59:59");
}else {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
} catch (ParseException e) {
e.printStackTrace();
}
FlowCardManager flowcardManager = (FlowCardManager)BeanFactory.getInstance().getServiceObject("FlowCardManager");
PageModel pageModel = flowcardManager.findFlowCardList( pageSize, pageNo, clientId, dBeginDate, dEndDate);
if(pageModel.getTotlePage() != 0)
{
request.setAttribute("model", pageModel);
request.getRequestDispatcher("/flowcard/flow_card_maint.jsp").forward(request, response);
return;
}else
{
RequestDispatcher s= request.getRequestDispatcher("/flowcard/flow_card_maint.jsp");
s.forward(request, response);
return;
}
}
现在发现了引起错误的原因 我写的FlowCardServlet extends BaseServlet
在baseservlet中的service方法 中super.service(request, response); 是这行代码引起了跳转
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
command = request.getParameter("command");
user = (User)request.getSession().getAttribute("user");
// super.service(request, response); // 会引起 Cannot forward after response has been committed 提交两次请求跳转
}
现在就很不解 为啥这行代码会引发 “Cannot forward after response has been committed” ??? 请高手指教
private void findAllFlowCardList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String clientId = request.getParameter("clientId");
String beginDate = request.getParameter("beginDate");
String endDate = request.getParameter("endDate");
Date dBeginDate=new Date();
Date dEndDate= new Date();
int pageNo = 1;
if (request.getParameter("pageNo") != null && !"".equals(request.getParameter("pageNo"))) {
pageNo = Integer.parseInt(request.getParameter("pageNo"));
}
int pageSize = Integer.parseInt(this.getServletContext().getInitParameter("pageSize"));
try {
if (beginDate != null && !"".equals(beginDate)) {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(beginDate+ " 23:59:59");
}else {
dBeginDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
if (endDate != null && !"".equals(endDate)) {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endDate + " 23:59:59");
}else {
dEndDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 23:59:59");
}
} catch (ParseException e) {
e.printStackTrace();
}
FlowCardManager flowcardManager = (FlowCardManager)BeanFactory.getInstance().getServiceObject("FlowCardManager");
PageModel pageModel = flowcardManager.findFlowCardList( pageSize, pageNo, clientId, dBeginDate, dEndDate);
if(pageModel.getTotlePage() != 0)
{
request.setAttribute("model", pageModel);
request.getRequestDispatcher("/flowcard/flow_card_maint.jsp").forward(request, response);
return;
}else
{
RequestDispatcher s= request.getRequestDispatcher("/flowcard/flow_card_maint.jsp");
s.forward(request, response);
return;
}
}
现在发现了引起错误的原因 我写的FlowCardServlet extends BaseServlet
在baseservlet中的service方法 中super.service(request, response); 是这行代码引起了跳转
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
command = request.getParameter("command");
user = (User)request.getSession().getAttribute("user");
// super.service(request, response); // 会引起 Cannot forward after response has been committed 提交两次请求跳转
}
现在就很不解 为啥这行代码会引发 “Cannot forward after response has been committed” ??? 请高手指教
作者: shewen45 发布时间: 2011-12-06
补充:BaseServlet extends HttpServlet
作者: shewen45 发布时间: 2011-12-06
看的有点乱,帮顶了!
作者: cgw1123 发布时间: 2011-12-06
代码多了!也没看明白什么,看看是不是super的影响了,你直接找到super父类的接口,你自己写了类直接实现这个接口看看会不会发生这样的情况了,你莫非你现在的这个父类写!
作者: oyxm0 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28