刚刚在写完了一个jsp程序,结果在数据提交后,网页跳转的时候报错了。错误原因:Cannot forward after response has been committed 自己不懂那就去麻烦一下百度大哥了,得到一个不是很明确的答案:这个是错误是由于response多次提交引起的。既然如此,那就看看自己什么地方多次使用跳转了吧。错误代码如下:
- package com.neeke.calc.control;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.io.*;
- import java.util.*;
- import com.neeke.calc.bean.LogicBean;
- import com.neeke.calc.bean.EntityBean;
- public class CalcServlet extends HttpServlet {
- private static final String CONTENT_TYPE = "text/html; charset=GBK";
- //Initialize global variables
- public void init() throws ServletException {
- }
- //Process the HTTP Get request
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
- response.setContentType(CONTENT_TYPE);
- request.setCharacterEncoding("GBK");
- String money = request.getParameter("earning").trim();
- String local = request.getParameter("localTax").trim();
- String temp = "";
- double earning = 0;
- double localTax = 0;
- if (money != null && local != null) {
- if (money.equals("") || local.equals("")) {
- temp = "未输入收入或当地税额!";
- request.setAttribute("result", temp);
- request.setAttribute("result", temp);
- request.getRequestDispatcher("/error.jsp").forward(request,
- response);
- } else {
- try {
- earning = Double.parseDouble(money);
- localTax = Double.parseDouble(local);
- } catch (NumberFormatException ex) {
- temp = "输入内容有误!";
- request.setAttribute("result", temp);
- request.getRequestDispatcher("/error.jsp").forward(request,
- response);
- }
- EntityBean ebean = new EntityBean(); lass="alt"> LogicBean lbean = new LogicBean();
- ebean.setYourTax(lbean.calculateTax(earning, localTax));
- request.setAttribute("bean", ebean);
- request.getRequestDispatcher("/result.jsp").forward(request,
- response);
- }
- }
- }
- //Process the HTTP Post request
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
- doGet(request, response);
- }
- //Clean up resources
- public void destroy() {
- }
- }
修改后的代码:
- package com.neeke.calc.control;
- import javax.servlet.*;
- import javax.servlet.http.*;
- import java.io.*;
- import java.util.*;
- import com.neeke.calc.bean.LogicBean;
- import com.neeke.calc.bean.EntityBean;
- public class CalcServlet extends HttpServlet {
- private static final String CONTENT_TYPE = "text/html; charset=GBK";
- //Initialize global variables
- public void init() throws ServletException {
- }
- //Process the HTTP Get request
- public void doGet(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
- response.setContentType(CONTENT_TYPE);
- request.setCharacterEncoding("GBK");
- String money = request.getParameter("earning").trim();
- String local = request.getParameter("localTax").trim();
- String temp = "";
- double earning = 0;
- double localTax = 0;
- if (money != null && local != null) {
- boolean y = false;
- if (money.equals("") || local.equals("")) {
- temp = "未输入收入或当地税额!";
- request.setAttribute("result", temp);
- y = true;
- } else {
- try {
- earning = Double.parseDouble(money);
- localTax = Double.parseDouble(local);
- } catch (NumberFormatException ex) {
- temp = "输入内容有误!";
- y = true;
- }
- }
- if (y) {
- request.setAttribute("result", temp);
- request.getRequestDispatcher("/error.jsp").forward(request,
- response);
- } else {
- EntityBean ebean = new EntityBean();
- LogicBean lbean = new LogicBean();
- ebean.setYourTax(lbean.calculateTax(earning, localTax));
- request.setAttribute("bean", ebean);
- request.getRequestDispatcher("/result.jsp").forward(request,
- response);
- }
- }
- }
- //Process the HTTP Post request
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws
- ServletException, IOException {
- doGet(request, response);
- }
- //Clean up resources
- public void destroy() {
- }
- }
经过对比可以看出问题出在
- if (money.equals("") || local.equals("")) {
- temp = "未输入收入或当地税额!";
- request.setAttribute("result", temp);
- request.setAttribute("result", temp);
- request.getRequestDispatcher("/error.jsp").forward(request,
- response);
- } else {
- try {
- earning = Double.parseDouble(money);
- localTax = Double.parseDouble(local);
- } catch (NumberFormatException ex) {
- temp = "输入内容有误!";
- request.setAttribute("result", temp);
- request.getRequestDispatcher("/error.jsp").forward(request,
- response);
- }
不过究竟为什么这样就会出错就不清楚了,以前写的好像也有过多次跳转的这个,但是都没有错的啊!郁闷了~~~不过知道问题出在哪里了,以后尽量避免这样写就是了。o(∩_∩)o...
» 除非另有声明,本站文章均为原创。
» 转载原创文章请以链接形式注明:
» 转载自:[Neeke] » [Cannot forward after response has been committed]
» 本文链接地址: http://www.ineeke.com/archives/578/
» 如果喜欢可以:点此邮件订阅或者点此阅读器订阅