猿问

求解Servlet中的setAttribute和JSP中的EL表达式的问题

如题,我有点想不通,实体类中有用户类Users,里面的属性都是私有属性,必须通过get和set方法取值和赋值。

在用户登录页面获取用户输入的用户名和密码提交到DoLoginServlet,与数据库中的用户名和密码匹配成功后保存到用户类的一个实例logUser中,并将该返回的用户实例保存到request.getSession().setAttribute("user",logUser)中,然后

request.getRequestDispatcher("welcome.jsp").forward(request, response);转发到welcome.jsp中,关键来了,在welcome.jsp中使用EL表达式读取时,${user.getUserName()}报错org.apache.jasper.JasperException: /welcome.jsp(22,59) The function getUserName must be used with a prefix when a default namespace is not specified,我以为是没将用户类导入导致的,然后我试了下${user}是可以读出对象,再试着${user.userName}果然就正确 显示用户名了,为什么?这属性是私有的,求解!!!


迷失代码林
浏览 2324回答 1
1回答

亚努人

属性是私有的没错,但是EL表达式底层的实现就是通过属性的get方法获取属性的值,在使用的时候,这一特性被封装了,直接用对象.属性就可以获取值了,这就是EL表达式的方便之处,否则还不如直接用jsp的表达式。
随时随地看视频慕课网APP

相关分类

WebApp
我要回答