我的源码如下:
public class SessionServlet extends HttpServlet {
  static final private String CONTENT_TYPE = "text/html; charset=GB2312";
  RequestDispatcher dispatcher;
  String username;
  String password;
  public void init() throws ServletException {
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    HttpSession session=request.getSession(true);    if(session.getAttribute("username")==null){
         dispatcher=getServletContext().getRequestDispatcher("/clientlogin.jsp");
         if(dispatcher!=null){dispatcher.forward(request,response);}
            username="";
    }else{
         username=session.getAttribute("username").toString();
    }
    if(session.getAttribute("password")==null)
    {
        dispatcher=getServletContext().getRequestDispatcher("/loginservlet");
        if(dispatcher!=null){dispatcher.forward(request,response);}
        password="";
    }else{
        password=session.getAttribute("password").toString();
    }
    ClientInfoAccess cia=new ClientInfoAccess();
    boolean isCorrect=cia.CheckLogin(username,password);
    if(isCorrect==false)
    {
      dispatcher=getServletContext().getRequestDispatcher("/clientlogin.jsp");
      if(dispatcher!=null){dispatcher.forward(request,response);}
   
    }

解决方案 »

  1.   

    Cannot forward after response has been committed
    这句话不是写得很清楚嘛?
    在得定向之前有内容已输出了
      

  2.   

    Cannot forward after response has been committed
    指的是你的response forward到客户端只能一次
    按照你的程序如果session中username和passward都没有的话,forward就会做两次
      

  3.   

    修改如下:::::::::::::::::::::::::::::public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {    response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        HttpSession session=request.getSession(true);    if(session.getAttribute("username")==null){
             dispatcher=getServletContext().getRequestDispatcher("/clientlogin.jsp");
             if(dispatcher!=null){dispatcher.forward(request,response);}
                username="";
    ===========================================================================
                return;
    ===========================================================================
        }else{
             username=session.getAttribute("username").toString();
        }
        if(session.getAttribute("password")==null)
        {
            dispatcher=getServletContext().getRequestDispatcher("/loginservlet");
            if(dispatcher!=null){dispatcher.forward(request,response);}
            password=""; ===========================================================================
                return;
    ===========================================================================
        }else{
            password=session.getAttribute("password").toString();
        }
        ClientInfoAccess cia=new ClientInfoAccess();
        boolean isCorrect=cia.CheckLogin(username,password);
        if(isCorrect==false)
        {
          dispatcher=getServletContext().getRequestDispatcher("/clientlogin.jsp");
          if(dispatcher!=null){dispatcher.forward(request,response);
             ===========================================================================
                return;
    ===========================================================================
           }
       
        }
      

  4.   

    测试正常的,结果是显示"test"
    //TPost.java
    ----------------------------------------------------------------------------
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class  TPost extends HttpServlet
    {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
    String url = "/2.jsp";
    request.setAttribute("b", "test");
    request.getRequestDispatcher(url).forward(request, response);
    } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
    doGet(request, response);
    }
    }
    ------------------------------------------------------------------------------
    2.jsp//根目录下.
    ------------------------------------------------------------------------------
    <%@ page language="java" contentType="text/html;charset=gb2312"%>
    <%
    String b = (String)request.getAttribute("b");
    out.print(b);
    %>
      

  5.   

    你要用forward就不能往Response里面写任何东西,包括调用setContentType