页面重定向到servlet,可以再由servlet请求转发吗

解决方案 »

  1.   

    经过多次跳转报错为:java.lang.IllegalStateException: Cannot forward after response has been committed
    求高手指点:不胜感激!
    一、注册检验servlet代码:
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    Md5code mc=new Md5code ();//MD5加密
    response.setContentType("text/html");
    request.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    UserOperateImpl io=new UserOperateImpl();
    Userinfo ui=new Userinfo();
    String username=request.getParameter("username");
    String userpass=request.getParameter("userpass");
    String confirm=request.getParameter("confirmpass");
    String useremail=request.getParameter("email");
    String code=(String)request.getSession().getAttribute("validateCode");
    String codeshus=request.getParameter("codeshu");
    String codeshu = URLDecoder.decode(codeshus, "UTF-8");
    if(!codeshu.equals(null)&&!"".equals(codeshu)){
    if(code.equals(codeshu)){
    out.write("<font color='green'size='2'>"+"√"+"</font>");
    if(!username.equals(null)&&!"".equals(username)){
    if(!userpass.equals(null)&&!"".equals(userpass)){
    if(userpass.equals(confirm)){
    if(!useremail.equals(null)&&!"".equals(useremail)){
    String memail=mc.getMD5ofStr(useremail);//MD5加密
    String muserpass=mc.getMD5ofStr(userpass);//MD5加密
    ui.setUsername(username);
    ui.setUserpass(muserpass);
    ui.setUseremail(memail);
    try {

    if(io.queryusername(ui)){
    out.print("用户名已存在!");
    }else if(io.queryuseremail(ui)){
    out.print("邮箱已存在!");
    }else{
    boolean bl=io.saveObject(ui);
    if(bl){
    io.queryconfirm(ui);
    request.getSession().setAttribute("userid", ui.getUserid());
    request.getSession().setAttribute("user", username);
    request.getRequestDispatcher("zhuceforward.jsp").forward(request, response);
    //response.sendRedirect("zhuceforward.jsp");

    }
    }
    } catch (Exception e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    }
    }
    }
    }
    }
    }else{
    out.write("<font color='red'size='2'>"+"验证码错误!"+"</font>");
    }
    }else{
    out.write("<font color='red'size='2'>"+"请输入验证码!"+"</font>");
    }

    out.flush();
    out.close();
    }二、
    zhuceforward.jsp代码:
    就是一秒后跳转功能:
     <body >
       <center>
        <font color="red"> 注册成功!&nbsp;&nbsp;<span  id="totalSecond">1</span>秒后跳转</font>
        </center>
    <script type="text/javascript">
        var second = document.getElementById("totalSecond").textContent;
        if (navigator.appName.indexOf("Explorer") > -1)
        {
            second = document.getElementById("totalSecond").innerText;
        } else
        {
            second = document.getElementById("totalSecond").textContent;
        }
        setInterval("redirect()", 1000);
        function redirect()
        {
            if (second < 0)
            {
             window.location="Toindex";
            } else
            {
                if (navigator.appName.indexOf("Explorer") > -1)
                {
                    document.getElementById("totalSecond").innerText = second--;
                } else
                {
                    document.getElementById("totalSecond").textContent = second--;
                }
            }
        }
    </script>
      </body>  三、servlet  Toindex中代码:public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    request.getRequestDispatcher("index.jsp").forward(request,response);
    //response.sendRedirect("index.jsp");
    }