当前位置:编程学习 > JAVA >>

equals 返回值为 false

小弟编写了一段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);
                       }

                   } 
   }
equals session --------------------编程问答-------------------- 你的值放到session里了吗。。。 --------------------编程问答-------------------- 已经放了的,就是测试也能看到那个值是edit --------------------编程问答-------------------- session.getAttribute("ht_p").trim()
试试 --------------------编程问答-------------------- 或者在那个if判断上面,增加打印:System.out.println(session.getAttribute("ht_p"));
看看打印了什么 --------------------编程问答--------------------
引用 3 楼 oh_Maxy 的回复:
session.getAttribute("ht_p").trim()
试试

用.trim的时候就编译错误了 

引用 4 楼 oh_Maxy 的回复:
或者在那个if判断上面,增加打印:System.out.println(session.getAttribute("ht_p"));
看看打印了什么


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"));?
--------------------编程问答--------------------
    	  String htp = ((String)session.getAttribute("ht_p")).trim();
      System.out.println("htp="+htp);
        if("edit".equals(session.getAttribute("ht_p"))) 

如果没打印,说明这个if(ok)的分支没进来,说明ok为false了。 --------------------编程问答-------------------- 你这个if、if判断的不会传不过去(进不去)吧,调试看看 --------------------编程问答--------------------
引用 6 楼 oh_Maxy 的回复:
    	  String htp = ((String)session.getAttribute("ht_p")).trim();
      System.out.println("htp="+htp);
        if("edit".equals(session.getAttribute("ht_p"))) 

如果没打印,说明这个if(ok)的分支没进来,说明ok为false了。


我把那个if(ok)直接改为else都没用
要怎么改呢?  --------------------编程问答--------------------
引用 7 楼 u011222719 的回复:
你这个if、if判断的不会传不过去(进不去)吧,调试看看

我现在觉得应该是这个的问题
不是equals的问题 --------------------编程问答--------------------
引用 8 楼 u010885746 的回复:
Quote: 引用 6 楼 oh_Maxy 的回复:

    	  String htp = ((String)session.getAttribute("ht_p")).trim();
      System.out.println("htp="+htp);
        if("edit".equals(session.getAttribute("ht_p"))) 

如果没打印,说明这个if(ok)的分支没进来,说明ok为false了。


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

直接把if删掉 --------------------编程问答-------------------- 第32行 if("edit".equals(session.getAttribute("ht_p")))中,session.getAttrebute得到的是Object对象,用object来和String作equals比较,应该只能得到false吧。 --------------------编程问答--------------------
引用 11 楼 pander520 的回复:
第32行 if("edit".equals(session.getAttribute("ht_p")))中,session.getAttrebute得到的是Object对象,用object来和String作equals比较,应该只能得到false吧。

但是如果String str="edit",这样也不行吖  --------------------编程问答-------------------- Login login=(Login)session.getAttribute("login"); 
想问一下这样能得到一个对象么
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,