jsp与javaBean
在jsp页面内的五种成份中,html是静态成份,服务器对于jsp的静态成份不作处理直接交付给客户机,作数据表示层;但对于jsp页面的动态成份如java程序片、Java表达式等则需作处理,作数据处理层;如果在一个jsp页面中既有静态部分又有动态部分将导致代码混乱和代码的复用率较低,为此可以采用javaBean方式处理数据,将数据的表示和处理进行分离,这也是sun公司所提倡的一种方式。
javaBean是用Java语言按照一种规则编写的类生成的实例,可简称为bean;一个jsp页面的数据处理部分可以交给一个bean或者几个bean完成,只需在jsp页面中调用该创建bean的类并生成实例即可,这种方式可以将数据的处理部分从jsp页面中分离出来更好的实现代码复用;
一、编写和使用javaBean
1、编写创建bean的类
为了能让服务器识别并使用bean,编写创建bean的类必须符合以下规则:
a、如果类的成员变量为XXX,那么为了获得和修改该成员,类中必须提供两个方法getXxx(用来获得类的属性(变量));和setXxx()(用来修改类的属性(变量));
b、对于boolean类型的变量,可以使用“is”代替上面的get和set;
c、类中方法的访问属性必须是public;
d、类的构造函数的访问属性必须是public且是无参数的;
下面创建一个可以计算矩形面积创建bean的类,代码如下:

2、使用bean
jsp使用bean,tomcat服务器必须使用相应类的字节码文件创建一个bean,为了让tomcat服务器找到相应的字节码文件,必须把字节码文件放到指定的目录中,故使用bean应有以下两步:
a.字节码文件放到指定的目录
在当前的服务目录中建立\WEB-INF\classes目录,然后在该目录下根据类的包名建立相应的子目录,最后重新启动服务器后把字节码文件复制到目录中;(若使用eclipse开发工具不需此不,只需在项目里创建类即可)
b、在jsp页面里使用bean
这里将用到jsp页面的动作标记usebean,有两种格式:<jsp:usebean id="给bean起的名字" class="创建bean的类" scope="bean的有效范围"></jsp:usebean>和<jsp:usebean id="给bean起的名字" class="创建bean的类" scope="bean的有效范围"/>,其中id的值为bean的名字,可按此名字调用类的方法,scope的值可取page、session、request和application;当用户使用bean时,服务器根据scope的取值确定分配给用户的bean空间的生存时间,当取值为page时有效范围为该页面,用户离开该页面时释放该空间、取值为session时,bean的有效范围为该用户的所有页面,且只要用户的session会话不关闭,bean一直有效,直到session会话消失并取消分配的bean空间、取值为request时bean的有效范围为当前请求期间,当服务器作出回应时即取消分配的bean空间、当取值为application时bean的有效范围为整个服务器服务期间,只有在服务器关闭时才释放分配的bean空间;下面通过新建一个jsp页面使用上面的类创建一个scope取值为session的bean来计算矩形的面积,代码如下:

二、获取和修改bean的属性
上面通过在Java程序片中使用bean调用相应方法获取和修改bean的属性,下面通过jsp的动作标记获取和修改bean的属性;
1、动作标记getProperty
这个标记可以获得bean的属性,并且将这个值用串的形式显示给客户,格式为:<jsp:getProperty name="bean的名字" property="bean的属性"/>或者为<jsp:getProperty name="bean的名字" property="bean的属性"></jsp:getProperty>
2、动作标记setProperty
setProperty动作标记可以通过3种方式设置bean的属性值;
a、将bean属性的值设置为一个表达式的值或者字符串,设置为表达式时格式为:<jsp:setProperty name="bean的名字" property="bean的属性" value="<%=expression%>"/>;设置为字符串的格式为:<jsp:setProperty name="bean的名字" property="bean的属性" value=字符串/>
b、通过http表单的参数的值来设置bean属性的值
这种方式需要将要提交的表单的参数的名字和bean的属性的名字一致,表单提交后tomcat会自动进行匹配赋值,格式为:<jsp:setProperty name="bean的名字" property="*"/>,该标记只有提交后才会触发;
c、通过request的参数的值来设置bean的相应属性的值
这种方式也要求request的参数的名字和bean的属性的名字相同,格式为:<jsp:setProperty name="bean" property="属性名" param="参数名"/>,该标记只有提交后才会触发;
三种方式的示例代码如下,用上述矩形的bean示例:

注意:第二种和第三种方式只有在被提交的页面才能触发。
3、bean的辅助类
当我们编写一个bean的类的时候,有可能要使用编写的其他类,这时只要将这些类编写在同一个java的源文件里,然后将编译的所有字节码文件复制到指定的目录中即可;