JSP采访,如何将数据从Servlet传递到JSP?

时间:2016-06-11 13:33:04

标签: jsp servlets javabeans

我没有能够在我的书面采访中回答这两个问题,大家可以帮助我吗?

问题1)假设您希望Servlet将持久数据发送到JSP页面,以便不同的用户获得不同的数据,以下哪个句子是真的?

- a)您可以使用以下指令:request.getSession()。setAttribute(E,F); JSP页面将使用动作jsp:useBean读取信息,其中scope =" page"和id =" E"。

- b)您可以使用以下指令:request.getSession()。setAttribute(E,F); JSP页面将使用动作jsp:useBean读取信息,其中scope =" session"和id =" E"。

我认为b)可能是正确的答案,但我不确定我是否完全理解了什么"持久数据"是指..

问题2)如果servlet将bean发送到JSP页面,那么在JSP页面内对bean进行的可能更改将始终对将来访问该bean的其他JSP页面或servlet可见。对错吗?

我认为这是假的,但我无法得到一个很好的解释..

先谢谢你们!

2 个答案:

答案 0 :(得分:2)

问题1:以上都不是。没有理由将bean存储在会话属性中。它应该存储在请求属性中。并且视图不应该使用jsp:useBean。这是17年前做到这一点的方法。应该使用JSP EL。但是,当然,尝试在页面范围内查找bean将无法正常工作,因为它已存储在会话范围内。

问题2:首先,JSP不应该修改从servlet接收的bean。 JSP是一个视图,应该显示它从控制器接收的模型。不要修改它。即使它确实修改了bean,它也取决于bean的范围。如果bean已由servlet创建,存储在请求属性中并传递给JSP,则它不会从任何其他组件中看到,并且一旦处理完请求就有资格使用GC。如果它是由servlet传递给多个页面的单例,那么所有页面都将获得相同的单例对象,因此对所有JSP都可以看到更改(假设正确使用了同步)。

坦率地说,这些问题更多地说明雇主关于雇主的答案:雇主似乎并不了解他在做什么,并使用其工具,好像自1999年以来没有任何改变。

答案 1 :(得分:0)

对于问题1: 指令:request.getSession()。setAttribute(E,F); 这是会话范围,属性在会话中设置,因此正确的答案是B. 我认为持久性数据意味着只要会话

,这些数据就会持久存在