<jsp:usebean> </jsp:usebean>的不同方式

时间:2012-08-02 18:02:34

标签: java jsp jsp-tags

有 -

<html>
<body>
         <jsp:useBean id="user" class="user.UserData" scope="session"/>
</body>
</html>

和 -

<html>
<body>
         <%
             Object user = session.getAttribute("user.UserData") ; 
         %>
</body>
</html>

假设user.UserData上存在session。这两种方式有什么不同吗?

2 个答案:

答案 0 :(得分:3)

JSP中一个众所周知的问题是:避免使用Java代码和页面(.jsp)。 所以第一种方法更合适,你同意吗? Taglibs <jsp:useBean />是一种很好的访问代码而不混合图层的方法。我几乎没有介绍过的这些概念是MVC“规范”的一部分。

- 编辑 -

获取bean的第二种方式称为scriptlet,应尽可能避免使用。可在此处找到简要比较JSTL vs jsp scriptlets

答案 1 :(得分:2)

<jsp:useBean id="user" class="user.UserData" scope="session"/>

相当于

<%
    Object userDataObject = session.getAttribute("user") ; // id="user" of <jsp:useBean> maps to session attribute name "user"
%>

此外,scriptlet仅从会话中读取现有数据,如果未找到任何属性,则返回null 如果&lt; jsp:useBean&gt;在session中查找属性“user”为null, 它将创建一个'user.UserData'实例,并在会话范围中添加到属性“user”。