小弟编写了一段servlet的代码,从session取值,然后与一个字符串比较,用来判断权限的,可是一直返回值为false,请各位大神帮忙解救.下面是servlet的部分代码:package myservlet.control;
import mybean.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HandleUpload extends HttpServlet{
   public void init(ServletConfig config) throws ServletException{
      super.init(config);
      try{  
           Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
      }
      catch(Exception e){} 
   }
   public  void  doPost(HttpServletRequest request,HttpServletResponse response) 
                        throws ServletException,IOException{
      HttpSession session=request.getSession();
      Login login=(Login)session.getAttribute("login"); 
      boolean ok=true; 
      if(login==null){
         ok=false; 
         response.sendRedirect("login.jsp"); 
      }
      if(ok==true){ if("edit".equals(session.getAttribute("ht_p")))  {         String logname=login.getLogname();
          uploadFileMethod(request,response,logname);   
                     } else {
                  response.setCharacterEncoding("GB2312");
  PrintWriter out = response.getWriter();
  out.print(str);
                       }                   } 
   }equalssession

解决方案 »

  1.   

    已经放了的,就是测试也能看到那个值是edit
      

  2.   

    session.getAttribute("ht_p").trim()
    试试
      

  3.   

    或者在那个if判断上面,增加打印:System.out.println(session.getAttribute("ht_p"));
    看看打印了什么
      

  4.   

    用.trim的时候就编译错误了 
    System.out.println("<th>"+session.getAttribute("ht_p")+"</th>");
    if("edit".equals(session.getAttribute("ht_p")))  {      String logname=login.getLogname();
         uploadFileMethod(request,response,logname);   
     } else { response.setCharacterEncoding("GB2312");
    PrintWriter out = response.getWriter();
      out.print("<th>这是if里面的"+session.getAttribute("ht_p")+"</th>");}我是这样加的代码,但是他只是显示了这是if里面的edit ,所以是不是说其实他并没有去执行System.out.println(session.getAttribute("ht_p"));?
      

  5.   

           String htp = ((String)session.getAttribute("ht_p")).trim();
          System.out.println("htp="+htp);
            if("edit".equals(session.getAttribute("ht_p"))) 
    如果没打印,说明这个if(ok)的分支没进来,说明ok为false了。
      

  6.   

    你这个if、if判断的不会传不过去(进不去)吧,调试看看
      

  7.   


    我把那个if(ok)直接改为else都没用
    要怎么改呢? 
      

  8.   

    我现在觉得应该是这个的问题
    不是equals的问题
      

  9.   


    我把那个if(ok)直接改为else都没用
    要怎么改呢? 
    直接把if删掉
      

  10.   

    第32行 if("edit".equals(session.getAttribute("ht_p")))中,session.getAttrebute得到的是Object对象,用object来和String作equals比较,应该只能得到false吧。
      

  11.   

    但是如果String str="edit",这样也不行吖 
      

  12.   

    Login login=(Login)session.getAttribute("login"); 
    想问一下这样能得到一个对象么