有 -
<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
。这两种方式有什么不同吗?
答案 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”。