javaBean
来源:互联网 发布:盟军敢死队2 for mac 编辑:程序博客网 时间:2024/06/08 04:52
JavaBean是什么
javaBean是描述java的软件组件模型,实质是一个java类,必须设置成员变量的set()和get()方法的类,必须public,必须有一个默认无参数的构造方法(<jsp:useBean>要实例化它,它当然需要满足这些要求)。
javaBean是*.java,但不是servlet,而是被servlet(比如JSP,当然*,java的servlet也可以)调用的。
servlet类必然继承了HttpServlet。
浏览器通过URL可以直接访问servlet对象(Web容器生成的实例),但不能直接访问javabean。
servlet类(*.java)必须先在Web.xml中配置了<Servlet-map>映射,才能被浏览器通过URL直接访问(第一次被访问时,Web容器生成Servlet实例)。
(题外话:组件也是类)
MVC框架中,jsp属于view,javaBean属于MC(将javaBean的数据和(非set\get)方法拆分,分布构造Model和Control。对吧??不对,javabean是M,servlet是C?)
javaBean一般被分为两类:可视化Bean和不可视化Bean,我更喜欢成为数据bean和业务bean。前者可以表示为GUI组件(Model?),后者在后台完成业务逻辑处理功能(这是书上说的,对吧?)。
JavaBean作用域范围
准确的说,<jsp:useBean>实例化得到的JavaBean对象作用范围,由<jsp:useBean>的scope属性决定,包括page、request、session、application。
<jsp:useBean>的scope属性决page、request、session时,servlet是单实例多线程,<jsp:useBean>将JavaBean,实例化,绑定到servlet中,应该是将JavaBean对象作为该servlet的局部变量,这样多线程不共享,线程安全。至于JavaBean对象的作用范围,说明JavaBean对象可以跳出该servlet(page)【比如作为返回值,或者加入全局容器】,那么说明JavaBean对象的名称应该是绑定session ID或者直接保存到request、session这类具有session ID标示的容器(姑且称作容器)中,这样才不会混淆,另外限定使用范围。(对吗?)
至于作用域为application,那么只要<jsp:useBean>将JavaBean实例化为单例模式即可。(对吗?)
JavaBean的动作标记
<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
<jsp:useBean> ,实例化javaBean,id是实例名,class是类名,scope是实例有效范围。
1、例如实例有效范围page
则每次刷新页面,old Bean销毁,new Bean生成。这里的Bean是指<jsp:useBean>生成的实例。
2、例如实例有效范围request
则每次刷新页面,old Bean销毁,new Bean生成。---因为request对象重新生成
而<jsp:forward>和<jsp:include>转向、导入其他JSP页面时,第一个页面会把request对象传递到下一个Jsp页面,而属于这个request对象的JavaBean类也将伴随送出,被第二个JSP页面接收。如果其他JSP页面也有一个<jsp:useBean>,且id、class、scope等和old相同,则新页面不会再实例化javaBean,而是接收传过来的old Bean。
3、例如实例有效范围session
刷新页面、跳转具有相同<jsp:useBean>的新页面,都不会新页面不会再实例化javaBean,而是接收传过来的old Bean。
若打开一个浏览器窗口,在新窗口中请求新页面,则可能再实例化javaBean,这取决于该浏览器窗口访问,使用的session ID和old浏览器窗口是不是相同(相同,则属于一个会话,不会再实例化javaBean,而是接收传过来的old Bean;不同,则不属于一个会话)。
4、例如实例有效范围application
服务器该应用只有一个Bean,所有页面,所有用户都是访问同一个(第一次生成的)Bean。
application是针对于整个服务器应用程序而言的。应用程序没有关闭,则Bean是全局的。只有重启Web服务器(这里是tomcat),才会重新生成一个Bean,不过又是全局的,哈哈。
<jsp:setProperty>,可以通过表达式、字符串直接获得,可以通过http表单参数获得(本质还是访问request对象,对吧?),以及通过request对象获得。
<jsp:getProperty>,很少用(??),通过<%%>中调用Bean.fun()即可获得需要的实例属性。Bean是<jsp:useBean>中id,即实例对象名。
request如何获取客户端的请求信息
request是<jsp:setProperty>的核心。
Get Post类型请求,都是在(JSP转成的)servlet(继承HttpServlet)中调用相应的doGet和doPost方法将客户端请求信息写入了request对象,再调用request对象处理。
- JavaBean
- JAVABEAN
- JavaBean
- javabean
- JAVABEAN
- javabean
- javabean
- JavaBean
- JavaBean
- javabean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- JavaBean
- javaBean
- ExtJS的几个小技巧
- 如何设置让IE9不弹出“只显示安全内容”的提示
- oracle官方文档对连接和会话的解释
- httpclient返回string 和流
- Ext初级学习-Windows
- javaBean
- java中的向上转型和向下转型
- Mapreduce程序中的FileInputFormat.addInputPaths和FileInputFormat.addInputPath方法
- CSS温故知新
- iOS 调用系统发短信以及打电话功能
- 连接打印机提示:找不到驱动程序,windows在网络上找不到Canon LBP2900的驱动程序,若要手动查找,请单击“确定”。否则,请单击“取消”并咨询你的网络管理员或者访问打印机制造商的网站
- 1034. Head of a Gang (30)
- hdu/hdoj 1075 FatMouse and Cheese
- JAVA设计模式-组合模式-Composite