求助 Cannot forward after response has been committed 给个正确的修改方法

lovelyworms 2009-03-15 06:05:25
错误这样
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.IllegalStateException: Cannot forward after response has been committed
StudentLoginSvlt.doError(StudentLoginSvlt.java:107)
StudentLoginSvlt.doEnrol(StudentLoginSvlt.java:69)
StudentLoginSvlt.doGet(StudentLoginSvlt.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

jsp中这样
<td><a href="StudentLoginSvlt?action=enrol&id=<%=id%>&cour_id=<%=cour_id%>&class_id=<%=class_id%>&prepare=<%=prepare%> ">注册</a>

studentologinsvlt.java代码
import java.io.*;
import java.sql.ResultSet;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import com.sqlBean;
import com.checkEnrol;
public class StudentLoginSvlt extends HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

String stu_id =req.getParameter("id");
String cour_id=req.getParameter("cour_id");
String class_id=req.getParameter("class_id");
String prepare=req.getParameter("prepare");
String pw1=null;
String pw2=null;
String e_mail=null;
String tel=null;
String action = req.getParameter("action");

ResultSet rs=null;

if ("update".equalsIgnoreCase(action)) {

stu_id =req.getParameter("id");
pw1=req.getParameter("password1");
pw2=req.getParameter("password2");
if(pw1.equals("") || pw2.equals("") || pw1==null || pw2==null)
doError(req,res,"密码不能为空!");
e_mail=req.getParameter("e_mail");
tel=req.getParameter("tel");
doUpdate(req,res,pw1,pw2,e_mail,tel,stu_id);
res.sendRedirect("/test/student.jsp");
}


if ("checkmark".equalsIgnoreCase(action)) {
rs=getScore(stu_id) ;
sendResultSet(req,res,rs,"/checkmark.jsp");
}

if("enrol".equalsIgnoreCase(action)){

doEnrol(req,res,stu_id,cour_id,class_id,prepare);
//res.sendRedirect("/test/DisplayCourse.jsp");
}

}


public void doEnrol(HttpServletRequest req, HttpServletResponse res,String stu_id,String cour_id,String class_id,String prepare) throws ServletException, IOException {

int num=0;
checkEnrol check=new checkEnrol();

if(prepare.equals("0") )
{ num= check.enrol(class_id,stu_id); }
else {
if( check.hasPassPrepare(prepare))
{num= check.enrol(class_id,stu_id);}
else doError(req,res,"清先完成预修课");

}

if(num==0){
doError(req,res,"注册课程失败!!");
}

}

public void doUpdate(HttpServletRequest req, HttpServletResponse res,
String pw1,String pw2,String e_mail,String tel,String id)
throws ServletException, IOException{
int num=0;
if(!pw1.equals(pw2))
doError(req,res,"密码不一致,请重输!");
checkEnrol check=new checkEnrol();
sqlBean db = new sqlBean();
num= check.updatestu(pw1,id,e_mail,tel);
if(num==0) doError(req,res,"更新失败");
}



public ResultSet getScore(String stu_id){
String sql="select enrol.score , course.name ,course.mark "+
"from enrol ,course ,classes "+
"where stu_id='"+stu_id+"' "+
"and enrol.class_id=classes.id "+
"and classes.cour_id=course.id ";
sqlBean db = new sqlBean();
ResultSet rs= db.executeQuery(sql);
return rs;
}

public void doError(HttpServletRequest req,
HttpServletResponse res,
String str)
throws ServletException, IOException {


req.setAttribute("problem", str);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/errorpage.jsp");
rd.forward(req, res);

}

public void sendResultSet(HttpServletRequest req, HttpServletResponse res,
java.sql.ResultSet rs, String target)
throws ServletException, IOException {
req.setAttribute("rs", rs);
RequestDispatcher rd = getServletContext().getRequestDispatcher(target);
rd.forward(req, res);
return;

}

public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {

doGet(req, res);

}




}


...全文
339 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
段丁荣 2011-04-03
  • 打赏
  • 举报
回复
楼上的兄弟,这个怎么改呢??
ziming1019 2009-05-22
  • 打赏
  • 举报
回复
res.sendRedirect("/test/student.jsp");
return和sendRedirect 都执行了 重复提交

81,092

社区成员

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

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