您的位置:首页 > 编程语言 > Java开发

javaBean

2016-05-18 00:00 316 查看
##1.javaBean

正常的开发模式:jsp+jdbc、jsp+javaBean

##2.WEB目录的标准结构

Web Root > 根目录,一般虚拟目录会直接在此目录中配置。

WEB-INF : 整个web中的最安全目录

Classes :保存所有的*.class文件,所有的class文件必须放在一个包中。

lib : 可以存放第三方的jar文件

web.xml : web的部署描述符。

Css : 存放所有的*.css文件

Js: 存放所有的*.js文件

Jsp : 存放所有的jsp文件

Index.htm,insex.jsp 欢迎的首页

##3.javaBean的使用

###3.1.javaBean的编写要求

命名规范必须遵守

javaBean有以下要求

所有的javaBean必须放在一个包中;

必须使用public class 声明,文件名称要于类名称一致;

类中的全部属性必须封装;

被封装的属性需要通过setter和setter方法设置和访问;

如果直接使用jsp中提供的javaBean语法,则必须存在一个无参构造方法。

##3.2.编写Simple.java

package demo;
public class Simple{
private String name;
private String password;
private int age;
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setPassword(String password){
this.password=password;
}
public String getPassword(){
return password;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return age;
}
}

编写完成之后,生成*.class文件,此文件必须保存在classes文件夹之中。

##3.3使用javaBean

在web中使用javaBean可以通过两种方式完成。

通过page指令导入

通过jsp中定义的javaBean语法访问。

范例:直接在JSP中使用page指令导入

<%@page contentType="text/html;charset=gbk"%>
<%@page import="demo.Simple"%>
<%
Simple s = new Simple();
s.setName("张三");
s.setPassword("HelloWorld!");
s.setAge(18);
%>
<h2>姓名:<%=s.getName()%></h2>
<h2>密码:<%=s.getPassword()%></h2>
<h2>年龄:<%=s.getAge()%></h2>

也可以直接使用JSP中提供好的javabean标签指令完成。

范例:

<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page"/>
<%
s.setName("张三");
s.setPassword("HelloWorld!");
s.setAge(18);
%>
<h2>姓名:<%=s.getName()%></h2>
<h2>密码:<%=s.getPassword()%></h2>
<h2>年龄:<%=s.getAge()%></h2>

此时,两个程序的运行效果是完全一样的,唯一不同的是,第二种使用了JSP中的语法支持。

此语法解释如下:

<jsp:useBean id="s" class="demo.Simple" scope="page"/>


<jsp:useBean>表示在JSP中要使用javaBean

Id:表示生成的实例化对象,凡是在标签使用中,看见了id,则肯定表示一个实例化对象。

Class 此对象对应的包,类名称。

Scope 此javaBean的保存范围,四种范围:page ,request, session , application

实际上此时,实例化的操作是使用反射机制完成的。

javaBean每次修改之后,都必须重新启动服务器,因为重新启动服务器之后,才可以将新的类重新加载进来,等待用户使用。

##说明1:

每次修改javaBean都必须重新启动服务器,太累了。。。。

为了解决这样的问题,在Tomcat中提供了自动加载功能,每次重新加载之后,容器中的全部内容全部清空,如果有session的话,也不存在了。

修改server.xml文件

<Context path="/demo" docBase="C:\Documents and Settings\Administrator\桌面\webdemo" reloadable="true"/>

但是,如果配置了此属性,则服务器一直要监视类的修改情况,会降低系统的性能,所以在项目的开发中往往使用此种配置,而在项目的发布后,此配置一定要关闭。

##说明2:

对于以上的javaBean(Simple)有以下几个名字,必须记住:

POJO 定义类的时候的统称

VO 为Bean中的每隔属性赋值之后

TO 传输对象,实现了Serializable接口的对象

##4.javaBean的应用

javaBean的最大作用在于参数接受上。

###1.接受参数

范例:使用表单的方式传递参数,下面通过两种方式进行比较,观察javaBean语法的特点。

####a) 范例:完成一个*.htm页面

<form action="jbdemo03.jsp" >
姓名:<input type="text" name="name" /><br/>
密码:<input type="text" name="password" /><br/>
年龄:<input type="text" name="age" /><br/>
<input type="submit" value="提交"/>
</form>

####b) 范例:使用原始的方式接受表单的内容

<%@ page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page" />
<%
request.setCharacterEncoding("gbk");
s.setName(request.getParameter("name"));
s.setPassword(request.getParameter("password"));
String age=request.getParameter("age");
s.setAge(Integer.parseInt(age));
%>
<h2>姓名:<%=s.getName()%></h2>
<h2>密码:<%=s.getPassword()%></h2>
<h2>年龄:<%=s.getAge()%></h2>

####c) 那么,使用以上的方式是否存在问题呢?

如果现在表单中的参数很多,则要一个一个的接受,费劲。

下面使用javaBean提供的语法完成。

范例:

<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page" />
<jsp:setProperty name="s" property="*" />
<%	request.setCharacterEncoding("gbk");  %>
<h2>姓名:<%=s.getName()%></h2>
<h2>密码:<%=s.getPassword()%></h2>
<h2>年龄:<%=s.getAge()%></h2>

###2. 设置javaBean中的属性

javaBean定义完成之后,就可以直接使用设置属性的方式,为Bean中的内容赋值,赋值的语句一共有四种:

方法一:通过自省的方式设置内容,是最常用的一种方式。

<jsp:setProperty name=”bean的名称” property=”*” />

  Name的属性就是找的javaBean中定义的id
  Property=”*”以后的所有变化都在此处,此时表示的是根据参数的名称自动进行设置。

方法二:指定一个属性

<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page" />
<jsp:setProperty name="s" property="name" />
<jsp:setProperty name="s" property="password"/>
<%
request.setCharacterEncoding("gbk");
%>
<h2>姓名:<%=s.getName()%></h2>
<h2>密码:<%=s.getPassword()%></h2>
<h2>年龄:<%=s.getAge()%></h2>


方法三:将指定的参数给指定的属性(不常用)

<jsp:setProperty name=”bean的名称” property=”一个具体的属性” param=”参数名称” />
<jsp:setProperty name="s" property="name" param="password"/>
<jsp:setProperty name="s" property="password" param="name"/>


方法四:设置指定的值给属性

<jsp:setProperty name=”bean的名称” property=”一个具体的属性” value=”具体的内容” />

范例:

<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page" />
<%
String name="cs" ;
String pwd ="pwd";
%>
<jsp:setProperty name="s" property="name" value="<%=name%>" />
<jsp:setProperty name="s" property="password" value="<%=pwd%>"/>
<h1>姓名:<%=s.getName()%></h1>
<h1>密码:<%=s.getPassword()%></h1>

综合以上来看,使用”*” 的设置哦方式,是最方便的。

###3.取得指定的属性

<%@page contentType="text/html;charset=gbk"%>
<jsp:useBean id="s" class="demo.Simple" scope="page" />
<%
String name="cs" ;
String pwd ="pwd";
%>
<jsp:setProperty name="s" property="name" value="<%=name%>" />
<jsp:setProperty name="s" property="password" value="<%=pwd%>"/>
<h1>姓名:<jsp:getProperty name="s" property="name" /></h1>
<h1>密码:<jsp:getProperty name="s" property="password" /></h1>

###4.四种范围

在整个javaBean同样保存了四种属性范围,而且这四种范围在使用时是不能修改的。即:一个bean如果定义成了page范围,则不要将其再修改为其他范围。

page范围
<jsp:useBean id="count" class="demo.Count" scope="page" />
只在当前页面保存。
每刷新一次页面之后,Count类都要实例化,证明只在当前页面中有效。跳转之后无效。

request范围
<jsp:useBean id="count" class="demo.Count" scope="request" />
一次服务器跳转有效,客户端跳转无效。

session范围

<jsp:useBean id="count" class="demo.Count" scope="session" />


application范围

<jsp:useBean id="count" class="demo.Count" scope="application" />

###5. javaBean编写

一般情况下,要把重复代码放在javaBean中编写,例如:之前在编写程序的时候,可以发现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaBean jsp