java_web学习(1)理解JavaBean
JavaBean简介
package org.it315;
public class RegisterBean
{
private String nickName = null;
private boolean male = false;
public void setNickName(String nickName)
{
this.nickName = nickName;
}
public String getNickName()
{
return nickName;
}
public void setMale(boolean male)
{
this.male = male;
}
public boolean isMale()
{
return male;
}
}
2)Indexed属性
package org.it315;
public class RegisterBean
{
private String [] specialities =
new String[]{"none","none","none","none","none"};
public void setSpecialities(String [] sp)
{
this.specialities = sp;
}
public void setSpecialities(int index,String sp)
{
specialities[index] = sp;
}
public String [] getSpecialities()
{
return specialities;
}
public String getSpecialities(int index)
{
return specialities[index];
}
}
JavaBean在JSP中的应用
//例1:testBean.jsp
<jsp:useBean id="currentDate" class="java.util.Date"/>
<jsp:setProperty name="currentDate" property="time" value="1234567"/>
<jsp:getProperty name="currentDate" property="time"/> //例2:testBean.jsp
<%
java.util.Date currentDate = new java.util.Date();
currentDate.setTime(1234567);
out.println(currentDate.getTime());
%>
1)<jsp:useBean>标签
<jsp:useBean id="beanInstanceName " class="package.class" scope="page|request|session|application"/>
<jsp:useBean>标签内部原理
//JSP中的语句:
<jsp:useBean id="currentDate" class="java.util.Date"/>
//翻译成的Servlet源码:
java.util.Date currentDate = null;
synchronized (_jspx_page_context) {
currentDate = (java.util.Date) _jspx_page_context.getAttribute("currentDate", PageContext.PAGE_SCOPE);
if (currentDate == null){
currentDate = new java.util.Date();
_jspx_page_context.setAttribute("currentDate",currentDate, PageContext.PAGE_SCOPE);
}
}
<jsp:useBean>标签完整语法
//完整语法:
<jsp:useBean id="beanInstanceName"
scope="page | request | session | application"
{
class="package.class" | type="package.class" | class="package.class" type="package.class" | beanName="{package.class | <%= expression %>}" type="package.class"
} />
type属性用于指定JavaBean实例对象的引用变量的类型,它必须是JavaBean对象的类名称、超类名称和所实现的接口名称中的一个,其默认值为class属性的设置值。beanName属性用于指定JavaBean的名称,这个名称不是JavaBean实例对象的引用名称,而是JavaBeans规范中定义的一种名称,它将被作为传递给java.beans.Beans类的instantiate方法的参数,例如,a.b.c。a.b.c可以代表一个类的完整名称,也可以代表a/b/c.ser这样的资源文件,java.beans.Beans类的instantiate方法可以从这个资源文件中产生出JavaBean的实例对象。beanName属性值还可以通过一个表达式来产生。
带标签体的<jsp:useBean>标签
//语法:
<jsp:useBean ...>
Body
</jsp:useBean>
//功能:
//Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。
2)<jsp:setProperty>标签
//语法格式:
<jsp:setProperty name="beanInstanceName"
{
property="propertyName" value="{string | <%= expression %>}" |property="propertyName" [ param="parameterName" ] | property= "*"
}/>
name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。
property属性用于指定JavaBean实例对象的属性名。
<jsp:setProperty name="beanInstanceName" property="propertyName" value="{string | <%= expression %>}" />
<jsp:setProperty name="beanInstanceName" property="propertyName" param="parameterName" />
<jsp:setProperty name="beanInstanceName" property="propertyName" />
<jsp:setProperty name="beanInstanceName" property="*" />
<jsp:useBean id="beanInstanceName" …/>
…
<jsp:setProperty name="beanInstanceName" property="propertyName" …/>
…
</jsp:useBean>
3)<jsp:getProperty>标签
<jsp:getProperty>标签用于读取JavaBean对象的属性,也就是调用JavaBean对象的getter方法,然后将读取的属性值转换成字符串后插入进输出的响应正文中。
//语法:
<jsp:getProperty name="beanInstanceName" property="PropertyName" />
name属性用于指定JavaBean实例对象的名称,其值应与<jsp:useBean>标签的id属性值相同。property属性用于指定JavaBean实例对象的属性名。
如果一个JavaBean实例对象的某个属性的值为null,那么,使用<jsp:getProperty>标签输出该属性的结果将是一个内容为“null”的字符串。
使用JavaBean的注意事项
JSP开发模式
1)MVC设计模式
MVC(模型-视图-控制器)是一种分离业务逻辑与显示界面的设计方法。MVC的模型(Model)部分负责管理程序的业务数据,视图(View)部分负责显示界面,控制器(Controller)部分则负责与用户进行交互(接受请求和选择响应视图)。
2)JPS设计模式(两种模式)
最新文章
- 关于Python 获取windows信息收集
- php访问url的四种方式
- Lazarus中TScreen类使用介绍
- Spring MVC体系结构
- Hibernate从入门到精通(九)一对多双向关联映射
- asp.net 备份和恢复数据库
- C#如何控制方法的执行时间,超时则强制退出方法执行
- 基于 Groovy 的自动化构建工具 Gradle 入门(转)
- C++该函数隐藏
- oracle 导入sql中文乱码(转)
- ion-scroll zooming=";true"; android端无法缩放的问题
- window下nginx的常用命令
- Scrapy运行错误:ImportError: No module named win32api
- django drf 开发 ~ models基础学习
- php 防跨站表单提交
- 自制操作系统Antz(15)——实现启动界面
- 关于ijkplayer下载的demo不能运行,这是因为FFmpeg
- Spring boot 线上部署
- Oracle数据库备份/导入工具
- Ubuntu16.10上安装NodeJS6.9.2
热门文章
- ubuntu ssh重启
- onItemClick
- photoshop基础教程视频-贺叶铭-传智播客-笔记
- C​# ​日​期​时​间
- javascript类的继承
- mysql安装使用--2 用户管理
- mysql----快速删除数据表(drop,truncate.delete)
- PAT (Advanced Level) 1013. Battle Over Cities (25)
- STL中map的一个知识点
- BZOJ 2276 Temperature