- 什么是JavaBean
Bean从实用价值来说就是作为数据模型而存在,也就是说用来渲染jsp页面的模版,当业务代码和jsp代码想分离后,就提高了视图和处理代码的复用度,即所谓MVC设计思想,更 符合工业化潮流。当程序员在jsp中使用Bean的时候,bean的规范就体现出来了,因为比如jsp:usebean的时候会根据属性找到对应的set方法等。太熟悉了,不再赘述。
- JSP中使用JavaBean
- <jsp:useBean id="xx" scope="request" class="xxbean">
jsp解析时遇到该标签会在对应的servlet中成员变量(类似)中创建该bean,并且该对象作为scope对应对象的依赖进行入参,而scope对象就在coid_jspService方法中被声明,因 此bean在其他jsp页面中可以使用对应的scope对象进行访问,当然,也可以使用该动作标签来得到bean。其还有一个子标签是用来和它配合使用的,<jsp:setProperty name="xx" property="*">,这样的写法是用来直接接受来自客户端的请求参数如注入bean对象,很类似于spring的依赖注入,也可以set:property时指定具体的属性值时,一般用 于传递给另一个页面数据模型bean,这是另一种典型用法,接受数据模型的页面可以使用该动作标签获得bean,那时就不需要set:property动作了。
2.<jsp:useBean>和<jsp:setProperty>
两者的搭配使Bean用如上所说,可以直接注入请求参数为bean,该bean可能是用来展示的数据模型,也可能只是方便jsp页面中的处理代码访问,如果是为后者,那么jsp可能 另需要使用usebean动作来声明一个最终要展示的bean给其他jsp,这时就需要在setProperty具体指定属性值。其实也是可以通过java脚本片段来完成的,但是动作元素提供了 很大方便!
3.<jsp:getProperty>
当jsp解析是遇到该动作元素会在对应的servlet代码中编写为out.write("bean.xxx")(貌似是这个方法或是print),写入输出缓冲中。其实也是可以使用java片段、el来实现,牢记其本 质就可以了。
总结:JavaBean的最终目的照我看来,仅仅是在不同的jsp页面中封装请求参数,传递会话参数,传递数据模型,尽管可能还会有其他层出不穷的用法,我也将其忽略,这里只 关注其产生的初衷和设计意图。使用纯粹jsp来设计应用系统,实在是太令人感到痛苦,不光是代码的混杂问题,个人感觉主要根源是页面的设计和逻辑的设计问题掺杂在一起 时,人的理性好像是不能发挥作用的,因为两者时常可能是冲突的,这样的話程序设计就变成了一种手工艺,分工合作更无从谈起,和工业化相悖。