最近做一个小系统,从数据库读取多条数据存入list到jsp页面显示的时候出现这样的情况,如下:
[com.v.entity.BookType@74591d, com.v.entity.BookType@86a728, com.v.entity.BookType@485016, com.v.entity.BookType@181dcb3, com.v.entity.BookType@c0ab1e, com.v.entity.BookType@1224415, com.v.entity.BookType@a3f7b3, com.v.entity.BookType@db22be, com.v.entity.BookType@c5fded, com.v.entity.BookType@a1df4f]数据库应该没有问题,以前用的好好的,sqlserver2000,读出来的数据有中文也有英文字符还有数字,
所以不存在中文乱码的情况,我怀疑是不是压根没读到数据?急求各位大侠的解答,先谢过了!

解决方案 »

  1.   

    1、[com.v.entity.BookType@74591d, ...] 应该是你的jsp中直接<%=list%>,的出来的 ;2、这不是乱码啊老大,这是对象toString()显示,因为你没有把toString()方法给覆盖重写 ,所以直接输出对象时,是这个格式:类得完整路径+ "@" + Integer.toHexString(this.hashCode()) ,即类得完整路径+ "@" +他的hashCode的十六进制表示字符串 ;
      比如 :你可以在BookType中加入方法     public Static void main(String args[]){
               BookType  bt = new  BookType() ;
     
              System.out.println(bt) ;  //显示的就是这样子:com.v.entity.BookType@XXXXXX ;     }
    运行测试一下 ;
    3、你显示的时候 用你的实体类 BookType强制转换一 下你的list.get(i),
    如:BookType bt = (BookType)list.get(i) ;然后再通过bt来决定需要显示BookType的内容 ;4、或者你在BookType实体类中 把toString()方法给覆盖重写 ;如
       public String toString(){
          return "BookType[" + this.属性1 + " -- " + this.属性2 + ...+"]"  ;
       }
    然后再运行一下第2步,结果是否改变 ;
      

  2.   

    com.v.entity.BookType@74591d这个是你的BookType的实体。你在页面的迭代显示方法不对。
      

  3.   

    这个不是乱码,乱码的概念你还不太清楚。英文和数字并不是乱码。
    根据你的描述表明你已经取到了数据,的输出结果是列表中的所有BookType对象(有10个),而你要修改输出代码,来输出你想显示的结果。
    比如你想输出BookType的名称(假设为name),假设使用JSTL与EL表达式:
    <c:foreach items="${bookTypeList}" var="type">
          BookType的名称为:${type.name} 
    </c:foreach>这样就会输出每一个BookType的名称了。
    如果不是JSTL,EL,那么用页面脚本循环也可以输出。
      

  4.   

    你这明显是取的list对象,没有循环输出,这叫那门子乱码,多看看书吧~
      

  5.   

    你要得到list遍历呀
    <tr>
    <%
    for(BookType type:BookTypes){//BookTypes是你从数据得到的list
      <%=type.name%>
    }
    %>
    </tr>