if(passed1==true&&passed2==true){response.sendRedirect("login.jsp");}
应该放到程序哪才不报错?package com.yourcompany.struts.action;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;
import dao.LoginDao; public class Validaction extends HttpServlet {
   public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   response.setCharacterEncoding("UTF-8");
     PrintWriter out = response.getWriter();
     String qxfp =request.getParameter("qxfp");
        String username =request.getParameter("username");
        System.out.println(qxfp+username);
        if(qxfp!=null&&username==null){
        boolean passed1 = validateDate1(qxfp,request.getRemoteAddr());
        response.setContentType("text/xml");
        response.setHeader("Cache-Control", "no-cache");
       String message1 = "此岗位未授权予本机!";
        if (passed1) {
            message1 = "√";
       }
        System.out.println(message1+passed1);
        out.println("<response>");
        out.println("<passed1>" + Boolean.toString(passed1) + "</passed1>");
        out.println("<message1>" + message1 + "</message1>");
        out.println("</response>");
        out.close();
         }
        
       if(qxfp!=null&&username!=null){
       boolean passed2 = validateDate2(qxfp,username);
        response.setContentType("text/xml");
        response.setHeader("Cache-Control", "no-cache");
       String message2 = "该岗位无此用户名!";
           if (passed2) {
            message2 = "√";
        }
           System.out.println(message2+passed2);
        out.println("<response>");
        out.println("<passed2>" + Boolean.toString(passed2) + "</passed2>");
        out.println("<message2>" + message2 + "</message2>");
        out.println("</response>");
        out.close();}
   }
  
   private boolean validateDate1(String date,String date0) {
       boolean isValid = true;
           LoginDao loginDao=new LoginDao();
        ArrayList ips=loginDao.getIpByQxfp(date);
        int size = ips.size();
         if(size>0){
        for(int i=0;i<size;i++){
         String dateIp = (String)ips.get(i);
          System.out.println(dateIp);
         if(dateIp.equals(date0)) {                 
        isValid = true;
         break;          }
         else isValid = false;
         continue; 
         }}
        else isValid = false;       
         return isValid;
   }
   private boolean validateDate2(String date,String date0) {
       boolean isValid = true;
                LoginDao loginDao=new LoginDao();
             ArrayList usernames=loginDao.getUsernameByQxfp(date);
               int size = usernames.size();
               if(size>0){
               for(int i=0;i<size;i++){
             String user = (String)usernames.get(i);
              System.out.println(user);
             if(user.equals(date0)) {                 
            isValid = true;
             break;          }
             else isValid = false;
             continue; 
             }}
            else isValid = false;
               return isValid;
         } }

解决方案 »

  1.   

    if(passed1==true&&passed2==true){response.sendRedirect("login.jsp");} 
    不需要这么写吧
    if(passed1&&passed2){response.sendRedirect("login.jsp");} 
    就可以了
      

  2.   

    if(passed1&&passed2){response.sendRedirect("login.jsp");} 放到哪里才对?package com.yourcompany.struts.action; 
    import java.io.*; 
    import javax.servlet.*; 
    import javax.servlet.http.*; 
    import java.util.ArrayList; 
    import dao.LoginDao; public class Validaction extends HttpServlet { 
      public void doGet(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException { 
      response.setCharacterEncoding("UTF-8"); 
        PrintWriter out = response.getWriter(); 
        String qxfp =request.getParameter("qxfp"); 
            String username =request.getParameter("username"); 
            System.out.println(qxfp+username); 
            if(qxfp!=null&&username==null){ 
            boolean passed1 = validateDate1(qxfp,request.getRemoteAddr()); 
            response.setContentType("text/xml"); 
            response.setHeader("Cache-Control", "no-cache"); 
          String message1 = "此岗位未授权予本机!"; 
            if (passed1) { 
                message1 = "√"; 
          } 
            System.out.println(message1+passed1); 
            out.println(" <response>"); 
            out.println(" <passed1>" + Boolean.toString(passed1) + " </passed1>"); 
            out.println(" <message1>" + message1 + " </message1>"); 
            out.println(" </response>"); 
            out.close(); 
            } 
            
          if(qxfp!=null&&username!=null){ 
          boolean passed2 = validateDate2(qxfp,username); 
          response.setContentType("text/xml"); 
            response.setHeader("Cache-Control", "no-cache"); 
          String message2 = "该岗位无此用户名!"; 
              if (passed2) { 
                message2 = "√"; 
            } 
              System.out.println(message2+passed2); 
            out.println(" <response>"); 
            out.println(" <passed2>" + Boolean.toString(passed2) + " </passed2>"); 
            out.println(" <message2>" + message2 + " </message2>"); 
            out.println(" </response>"); 
            out.close();} 
      } 
      
      private boolean validateDate1(String date,String date0) { 
          boolean isValid = true; 
              LoginDao loginDao=new LoginDao(); 
          ArrayList ips=loginDao.getIpByQxfp(date); 
          int size = ips.size(); 
          if(size>0){ 
          for(int i=0;i <size;i++){ 
          String dateIp = (String)ips.get(i); 
          System.out.println(dateIp); 
          if(dateIp.equals(date0)) {                
        isValid = true; 
          break;          } 
          else isValid = false; 
          continue; 
          }} 
          else isValid = false;      
          return isValid; 
      } 
      private boolean validateDate2(String date,String date0) { 
          boolean isValid = true; 
                  LoginDao loginDao=new LoginDao(); 
              ArrayList usernames=loginDao.getUsernameByQxfp(date); 
                int size = usernames.size(); 
                if(size>0){ 
                for(int i=0;i <size;i++){ 
              String user = (String)usernames.get(i); 
              System.out.println(user); 
              if(user.equals(date0)) {                
            isValid = true; 
              break;          } 
              else isValid = false; 
              continue; 
              }} 
              else isValid = false; 
                return isValid; 
            } }
      

  3.   

    放在哪都不对。因为你passed1在第一个if块里定义,passed2在第二个if块里定义。
      

  4.   

    楼主的思路完全没弄清楚。
    首先:
    ---------------------
    这个验证程序用于AJAX 登录验证,此Servlet 输出内容为验证后的 xml 内容,浏览器端javascript 在异步获取xml数据以后根据返回的结果执行相应的功能
    所以应该是一个AJAX 登录的实例
    此Servlet 只是提供验证的结果,并不存在任何功能性的返回结果
    ---------------------
    正确的操作
    javascript:function AJAXResponse(xmlDom){
       try{
       var passed1=xmlDom.selectSingleNode("//passed1").nodeValue.replace(/^\d+|\d+$/g,"");
       var passed2=xmlDom.selectSingleNode("//passed2").nodeValue.replace(/^\d+|\d+$/g,"");;
       if((passed1=="true" || passed1==true) && (passed2=="true" || passed2==true) )){
            window.location="login.jsp";
       }
       catch(e){
           alert(e);
       }
    }
      

  5.   

     public class Validaction extends HttpServlet {
       public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
       response.setCharacterEncoding("UTF-8");
         PrintWriter out = response.getWriter();
         String qxfp =request.getParameter("qxfp");
            String username =request.getParameter("username");
            System.out.println(qxfp+username);
            boolean passed1 = validateDate1(qxfp,request.getRemoteAddr());
            boolean passed2 = validateDate2(qxfp,username);
            if(qxfp!=null&&username==null){
            response.setContentType("text/xml");
            response.setHeader("Cache-Control", "no-cache");
           String message1 = "此岗位未授权予本机!";
            if (passed1) {
                message1 = "√";
           }
            System.out.println(message1+passed1);
            out.println("<response>");
            out.println("<passed1>" + Boolean.toString(passed1) + "</passed1>");
            out.println("<message1>" + message1 + "</message1>");
            out.println("</response>");
            out.close();
             }
            
           if(qxfp!=null&&username!=null){
           
            response.setContentType("text/xml");
            response.setHeader("Cache-Control", "no-cache");
           String message2 = "该岗位无此用户名!";
               if (passed2) {
                message2 = "√";
            }
               System.out.println(message2+passed2);
            out.println("<response>");
            out.println("<passed2>" + Boolean.toString(passed2) + "</passed2>");
            out.println("<message2>" + message2 + "</message2>");
            out.println("</response>");
            out.close();}
           if(passed1&&passed2){response.sendRedirect("index.jsp");//这一行
           return;}
          
      }
         
       
       private boolean validateDate1(String date,String date0) {
           boolean isValid = true;
               LoginDao loginDao=new LoginDao();
            ArrayList ips=loginDao.getIpByQxfp(date);
            int size = ips.size();
             if(size>0){
            for(int i=0;i<size;i++){
             String dateIp = (String)ips.get(i);
              System.out.println(dateIp);
             if(dateIp.equals(date0)) {                 
            isValid = true;
             break;          }
             else isValid = false;
             continue; 
             }}
            else isValid = false;       
             return isValid;
       }
       private boolean validateDate2(String date,String date0) {
           boolean isValid = true;
                    LoginDao loginDao=new LoginDao();
                 ArrayList usernames=loginDao.getUsernameByQxfp(date);
                   int size = usernames.size();
                   if(size>0){
                   for(int i=0;i<size;i++){
                 String user = (String)usernames.get(i);
                  System.out.println(user);
                 if(user.equals(date0)) {                 
                isValid = true;
                 break;          }
                 else isValid = false;
                 continue; 
                 }}
                else isValid = false;
                   return isValid;
             }
       
     }
     Servlet.service() for servlet Validaction threw exception
    java.lang.IllegalStateException
    at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:432)
    at com.yourcompany.struts.action.Validaction.doGet(Validaction.java:47)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:619)
      

  6.   

    你已经调用了out=response.getWriter()输出信息到页面上,当out关闭的时候,这个response就应该结束了。不能再用response.sendRedirect方法跳到另一个页面。