JSP网页的EL表达式,无法获取另一个servlet类的request域对象中的数据。

jsp页面主要代码:

    <c:forEach items="${contacts }" var="con" varStatus="varSta">
        <tr align="center">
            <td>${varSta.count}</td>
            <td>${con.name }</td>
            <td>${con.gender }</td>
            <td>${con.age }</td>
            <td>${con.phone }</td>
            <td>${con.email}</td>
            <td>${con.city }</td>
        </tr>
</c:forEach>


    servlet页面代码:

    ContactService cs=new ContactServiceImple();
    List<Contact> list=cs.findContacts();
    request.setAttribute("contacts", list);//设置request域对象
    request.getRequestDispatcher("/contactList.jsp").forward(request, response);

问题补充:

如果我访问这个Servlet类,这个类会转发到上面那个jsp页面,并传入的还有数据,可是我先访问这个JSP页面,页面是没有request域对象数据。

我是新手,很多都不知道所以然,这个错误调试4个小时了,现在都凌晨1点了还没休息,实在没办法了,希望各位前辈释惑。谢谢!

下面是我自己的错误分析:

    xml中的文件不自动读取,contactList.jsp表现不出来xml中的内容。

待解决:




    错误分析:

访问contactListServlet类(路径--->http://localhost:8080/ContanctSys/ContactList)


    转发到contactlist.jsp页面,xml文件中的联系人可以表现出来。

        那么说明:这个ContactList类在初次访问contactList.jsp页面时没有加载处理,

              没有处理xml文件,也没有把数据主动转发到jsp,jsp从request域中

              不会获取到数据。


那么问题出在哪呢?

    我怀疑tomcat服务器加载类的顺序没有设置好,可是这个类就算最后加载,那也是处理了,也是会

返回数据的呀!




    测试:1) contactList.jsp没有问题


    测试:2)ContactList.java没有问题

我也是新手,曾经我也不知道这种情况,后面才发现如果直接访问jsp页面是不能得到数据的,你可以直接访问Servlet,然后它会自动返回数据并且跳转到jsp页面的

Servlet是controller(控制器),当你请求Servlet时,Servlet会设置请求参数(request.setAttribute("contacts", list)),然后带着参数转发到jsp(request.getRequestDispatcher("/contactList.jsp").forward(request, response);),如果你先访问jsp,没有设置参数,怎么会有数据。

web应用简单点说就是把数据友好的展示给用户看,而数据的处理一般在后台,数据的展示在前台,所以一般是:jsp接收数据——》Servlet处理数据——》返回给jsp显示数据,这是最简单的。。。

你直接访问jsp页面,根本没有存数据(contacts ),肯定没有数据。 jsp是一个展示给用户看的。 数据都是后台(servlet)传过来的。 在servlet里,你把数据存在作用域里,当你转发时,他们共享一个作用域。 我只是一个打酱油路过的围观群众

herf=“contactList.jsp”换成href="(你的servlet)"

你要经过servlet处理后才能才能得到数据 解决方案的话就是楼上说的改链接

我猜楼主想表达的意思是 EL表达式中接收不到servlet中存入的域对象吧?我也遇到这种情况,但目前没有找到解决的办法