MVC模式中,常常需要各个部分之间交互信息,这就需要Bean。在展示层更是如此。所以就出现了useBean、EL等这些更方便,更优雅的解决方式。这里以hello world为例子,说明useBean的用法和优势。
不用useBean的例子:
web.xml
Word.java
SayHello.java
Show.jsp
视图页面是用来显示信息的,而应该尽量避免使用不必要的逻辑,我不知道“使用脚本者,必死!”这句话到底有多严重。但避免java代码和html标记混合是必要的。
如果在<url-pattern>/say.jsp</url-pattern>改写成<url-pattern>/*</url-pattern>在语法上不会出错,而且这也是许多框架常用的伎俩。但在这里,由于使用RequestDispatcher从定向了,就会出现自己定向到自己,不断的追自己的尾巴。
如果改成useBean去处理Bean的操作,就会很轻松,代码也很美观了。
修改后的Show.jsp
现在,是把精力集中在useBean的用法上来的时候了。
- <jsp:useBean id="bean的名称" class="bean的权限定类名" scope="page/request/session/context" />。这个标记首先会在是定的作用域中查找对象,如果存在,就直接拿来。如果不存在,就重新创建一个对象。这里面的scope是这个Bean的作用域。page表示只在本页面有效,request表示这个bean是request属性,session表示这个bean是session属性context是,这几个属性是servlet中的知识,稍后会解释。
- <jsp:setProperty name="bean的名称" property="属性名称" value="属性值" />就是向bean设置属性。当表单的名称和bean的属性名称相同时可以简写成这样:<jsp:setProperty name="bean的名称" property="*" />这会大大降低代码的编写量。
- <jsp:getProperty name="bean的名称" property="属性名称">这个标记是把bean的属性打印出来。
更近一步的内容请看useBean详解(2)