为什么能通过property="*"的方式,将内容设置到Bean中,其根本原因是使用了Java的反射机制,根据传递参数的名称找到相应的方法,比如,参数名称为name,则自动找到setName方法。
- 原则:使用JavaBean自动设置内容时,一定要让参数名称与Bean中的属性名称一致,这样通过Java的命名规范,可以达到统一
- 当需要指定某个属性内容时候,可以在property中指定参数
- <jsp:setProperty name="sb" property="*"/> :自动匹配,开发中常采用这种做法
- <jsp:setProperty name="sb" property="name"/>:可以根据自己的需要设置需要的属性值
- <jsp:setProperty name="sb" property="name" param="password"/>:可以根据自己的需要,任意选择传递参数
- <jsp:setProperty name="sb" property="name" value="password"/>:根据用户的需要自己设置参数的值
JavaBean取得属性的方法:
- <jsp:getProperty name="sb" property="name"/>取得属性没有自动匹配
使用JavaBean的setProperty方法可以自动将传递过来的只有数字的字符串变为整形,之后将内容赋值给具体的属性 –>智能
JavaBean的属性范围:
- page范围:属性只在当前页有效,如果跳转其他页面,则需要重新实例化
- request范围:属性只保存在一次服务器跳转中,前提是使用<jsp:forward>跳转才行
- session范围:属性保存在一次会话中,可以任意方式连接其他页面,则此对象只实例化一次
- application范围:属性公有,此对象在整个服务器上只实例化一次。尽量少用因为application会占用资源
alex Java bean, Java, javabean, jsp, 属性, 范围
Java中的对象必须先实例化再用:分配内存空间
在JSP中,由WEB容器对对象进行实例化
常见对象及作用域:
| 对象名 |
类型 |
作用域 |
| request |
javax.servlet.ServletRequest的子类 |
Request |
| response |
javax.servlet.ServletResponse的子类 |
Page |
| pageContext |
javax.servlet.jsp.PageContext |
Page |
| session |
javax.servlet.http.HttpSession |
Session |
| application |
javax.servlet.ServletContext |
Application |
| out |
javax.servlet.jsp.JspWriter |
Page |
| config |
javax.servlet.ServletConfig |
Page |
| page |
java.lang.Object |
Page |
| exception |
java.lang.Throwable |
Page |
!!最重要的概念:四种属性的保存范围
- 设置属性:Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute) ★★属性名称为字符串、属性值可以为任意对象
- 取得属性:Public abstract Void setAttribute(java.lang.String name)
四种属性保存范围:
- 在一个页面范围内 :page
- 在一次服务器请求范围内:request
- 在一次会话范围内:session
- 在一个应用服务器范围内:application
page范围:
- 在jsp中设置一个页的属性范围必须通过pageContext完成
- pageContext属性范围是最为重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,则此属性显示不出用处
request范围★:
- 将属性保存在一次请求范围内的前提是,必须使用服务器端跳转<jsp:forward />
- 应用点:MVC设计模式、Struts、Webwork
session范围:
- 只保留一个用户的信息
- 只要设置了属性,则不管是什么跳转都可以取得属性
- 与session有关的任何打开页面都可以取得session
- ★session的主要功能:用于验证用户是否登陆
application范围:
- 只要设置一次则所有的网页窗口都可以取得数据
- 如果要释放application资源只能重新启动服务器
application、session、request都需要跨多个页
保持性能不降低的原则:若能用request就不不要使用session,能使用session就不要使用application
★★重要概念:
- pageContext默认情况下表示一个页面的保存范围
- 另一种设置属性的方法Public abstract Void setAttribute(java.lang.String name,java.lang.Object attribute,int scope)
- scope可以取:Public Static final int APPLICATION_SCOPE、Public Static final int SESSION_SCOPE、Public Static final int REQUEST_SCOPE、Public Static final int PAGE_SCOPE
- ★★总结:四种属性范围都是依靠pageContext展开的,但是在开发中,往往使用session、request范围最多。
- 四种属性范围是整个J2EE WEB端开发必须深刻记住的概念,包括设置属性和取得属性的参数类型,返回值类型。
alex Java Java, jsp, 对象, 属性, 范围
最新评论