03---javabean01(javabean的简介及属性)

来源:互联网 发布:中国乡村 萧公权知乎 编辑:程序博客网 时间:2024/06/11 12:23

JavaBean简介:
 JavaBean是java语言开发的一个可重用的组件,在jsp的开发中可以使用javaBean减少重复代码


 是整个jsp开发变得更简洁;jsp搭配javabean来使用的优点:
 ·可以讲html和java代码分离,这主要是为了日后的维护方便;
 ·将常用的代码写成JavaBean组件,当使用的时候调用即可,重复利用代码;
  如数据库的操作块可写成JavaBean;

 

注意:JavaBean 是一种JAVA语言写成的可重用组件。不单单指setter和getter,还包含许多其他的方法

                   比如数据库访问的方法等;像我们经常见到数据类(UserBean.java)也可以成为数据bean,只是

                  JavaBean的一种;

 

 

JavaBean开发要求:
 JavaBean本身就是一个类,属于Java的面向对象编程。
 在JSP中如果要应用JSP提供的JavaBean的标签来操作类的话,则必须满足一下开发要求:
 ·所有的类必须放在一个包中,在WEB中没有包的是不存在的;
 ·所哟的类必须声明为public class 这样才能被外部访问到;
 ·类中的所有属性必须封装
 ·封装的属性通过setter和getter被操作;
 ·一个JavaBean中至少存在一个无参构造函数,此为JSP中的标签所使用;

 package org.lid.demo;
 public class SimpleBean{
  private String name;
  private int age;
  public void setName(String name){
   this.name=name;
   }
  public void setAge(int age){
   this.age=age;
   }
  public String getName(){
   return this.name();
   }
  public int getAge(){
   return this.age;
   }
  }
 对于这样的简单的JavaBean也有几个名词:
  ·VO:值对象,存放所有的传递数据的操作上;
  ·POJO:简单的java对象
  ·TO:传输对象,一个类必须现实了Serializable接口后才称为传输对象;
 JavaBean本身是一个*.java的文件,按照最原始的方式解释,现在的java程序编译成*.class
  文件才可以使用;但是放在什么地方呢?jsp直接放在工作目录中即可,而*.java文件

呢?
 这是我们必须了解web开发的目录结构;
 
 WEB开发的标准目录结构:
  WEB ROOT下包括:
   WEB-INF、jsp、js、css、images、index.jsp;
  WEB-INF下包含:
    web.xml、lib、classes、tags;
 实际上在WEB-INF中的lib和classes文件夹就相当于一个默认的classpath;
 Classpath是类执行时所需要的一个重要的环境属性,当tomcat启动之后,WEB-INF/lid和WEB-

INF/classes
  都会自动的配置到classpath中;
 进入到javaeedemo\WEB-INF\classes 通过javac编译SimpleBean.java
 编译完后,可以通过两种方式使用javabean,因为WEB-INF/classes文件夹就是一个classpath路

径,
  所以可以直接使用page指令导入所需的JavaBean;
   <%@ page contentType="text/html" pageEncoding="gbk"%>
   <%@ page import="org.lid.demo.SimpleBean"%>
   <html>
   <head><title>这是测试</title></head>
   <body>
    <%
     SimpleBean simple=new SimpleBean();
     simple.setName("lid");
     simple.setAge(20);
    %> 
     
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
   </body>
   </html>
  除了这种方法之外,也可以使用专门提供的jsp标签完成操作,在整个JavaBean对于这

种简单
   bean的操作提供了一useBean的标签;
 
<jsp:useBean>指令:
 除了使用import的语句之外,也可以使用jsp中提供的:<jsp:userBean>指令完成;
 ·<jsp:useBean id="实例化对象的名称" scope="保存范围" class="包.类名称"/> 
 ·主要属性:
  id:表示实例化对象的名称---即class对应的类的实例的名称,自己定义;
  scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、

application
  class:对象所对应的包.类名称
   <%@ page contentType="text/html" pageEncoding="gbk"%>
   <jsp:useBean id="simple" scope="request"

class="org.lid.demo.SimpleBean"/>
   <html>
   <head><title>这是测试</title></head>
   <body>
    <%
     simple.setName("lid");
     simple.setAge(20);
    %> 
     
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
   </body>
   </html>
 实际上在使用以上的标签的时候,都会自动调用JavaBean中的无参构造方法,所以在定义

JavaBean
 的时候要求至少存在一个无参构造函数;

 记住当JavaBean修改后,必须重新编译该JavaBean(即javac一下),然后必须重新启动服务器后

才能加载进来新的修改后的JavaBean;
 
 因为JavaBean需要经常的修改,每次修改都要重新启动服务器的话是很麻烦的
 解决办法就是修改server.xml文件:
  <Context path="/lid" docBase="D:\javaeedemo" reloadable="true">
 即加上reloadable="true"即可;

 注意:加上reloading就想当与服务器出去监听状态,javabean一发生变化就相当于重新启动一


  服务器,所以之前的session和application范围的属性全部消失;

为什么将修改完的javabean编译以后,要重启tomcat?
 因为javabean是在tomcat启动时就加载到内存中的,所以修改完的javabean编译后,如果不重新

启动tomcat是不会将新的javabean
 加载到内存中的;如果不重新启动服务器的话,在内存中的javabean还是修改前的javabean;

为什么jsp修改后不用重新启动tomcat?
 jsp是tomcat负责解析的,请求jsp时tomcat就进行解析,所以jsp修改后不用重新启动;