java吧 关注:1,250,225贴子:12,734,684

求助个问题,jsp中就是拿不到servlet传过来的值,一直是null

只看楼主收藏回复


这里是我的Dao里的list方法

这个是我servlet里的代码

这里是我的jsp页面里的代码

死活拿不到数据
然后我用request.getAttribute("heros")得出的是null


IP属地:广东1楼2017-05-26 21:47回复
    难受的一批,如果直接在servlet中写这么一段
    resp.setContentType("text/html;charset=UTF-8");
    List<Hero> heros = new HeroDao().list(0,Short.MAX_VALUE);
    StringBuffer sb = new StringBuffer();
    sb.append("<table algin=center border='1' cellspacing='0'>\r\n");
    sb.append("<tr><td>id</td><td>name</td><td>hp</td><td>damage</td></tr>\r\n");
    String trFormat = "<tr><td>%d</td><td>%s</td><td>%f</td><td>%d</td></tr>\r\n";
    for (Hero hero : heros)
    {
    String str = String.format(trFormat, hero.getId(), hero.getName(), hero.getHp(),hero.getDamage());
    sb.append(str);
    }
    sb.append("</table>");
    resp.getWriter().write(sb.toString());
    输出到页面的内容正常,
    数据完全能显示,
    所以我的Dao和servlet的代码应该没问题的。。


    IP属地:广东2楼2017-05-26 21:50
    回复
      servlet里先打印一下,看看有没有数据


      IP属地:甘肃来自Android客户端3楼2017-05-26 21:53
      收起回复
        太晚了没人?大神教教我,这问题是咋回事


        IP属地:广东来自Android客户端4楼2017-05-26 22:03
        收起回复
          看看你的属性。写错了!damage?damege?你的sql语句,查询的属性是否跟数据库的属性一致?除非你用了as,没有的话,而且得不到属性。就是你的属性和数据库的属性不一样!好好检查下。name,hp,demege?等等


          IP属地:北京来自iPhone客户端6楼2017-05-26 22:32
          收起回复
            null,就是你业务层属性定义的和数据库中的属性不一致,所以返回得不到任何结果。


            IP属地:北京来自iPhone客户端7楼2017-05-26 22:34
            收起回复
              问题要把报错的错误页面贴出来,有经验的人都是根据错误页面找问题,不然谁能一下找出错误得细节!


              IP属地:广东来自Android客户端8楼2017-05-26 23:20
              收起回复
                不对,楼主你用setattribute获得的是一个Object,要强转成List<hero>才能用


                IP属地:江苏来自Android客户端10楼2017-05-27 07:26
                收起回复
                  底层方法是不是出错了


                  IP属地:河北来自Android客户端11楼2017-05-27 09:22
                  收起回复
                    加一下<%@page isELIgnored="false"%
                    这个


                    12楼2017-05-27 10:34
                    收起回复
                      你在jsp写request.get获取heroes 再用el表达式就可以了


                      IP属地:上海13楼2017-05-27 10:37
                      收起回复
                        应该是了解数据库出错了,看看加载上没有,不然不会是null


                        IP属地:四川来自iPhone客户端14楼2017-05-27 11:38
                        收起回复
                          第一,你是如何请求的?确定是请求servlet转发到jsp?确定请求流程
                          第二,检查数据库查出来有无数据,从dao开始检查,这里发现有几个问题,数据库用完没有关闭,加上finally语句,不要在try后加括号,看得很别扭,直接将代码写try语句块里面,catch语句把异常信息打印,不打印异常是很恐怖的。
                          第三在servlet里显示一下hero的数据和数量,直接打印到控制台就行了,检查不用那么麻烦的,获取数据你就不能获取10条8条,非要来个short的maxvalue
                          第四,把数据放到request中后到页面用request的getAttribute获取,先不要用el,检查有无数据,如果没有问题在用el
                          第五,检查一下环境有没有问题,是否缺包之类,
                          第六,再不行debug


                          IP属地:广东来自iPhone客户端15楼2017-05-27 14:37
                          收起回复
                            谢谢楼上各位大神的解答,我早上把jsp上的table内嵌到form中,然后sumbit提交到listHero,然后jsp就能收到servlet转发过来的数据,然后我就很纳闷,是不是jsp不先发送请求到servlet,servlet就不会转发数据?


                            IP属地:广东来自Android客户端17楼2017-05-27 16:18
                            收起回复



                              IP属地:广东18楼2017-05-27 16:21
                              回复