zoukankan      html  css  js  c++  java
  • (二十六)JavaBean

    一、定义

      1   JavaBean是一个遵循特定写法的Java类,它通常具有如下特点:

    • 这个Java类必须具有一个无参的构造函数
    • 属性必须私有化。
    • 私有化的属性必须通过public类型的方法暴露给其它程序即要有getset()方法,并且方法的命名也必须遵守一定的命名规范。

      二、在java中使用javabean

      JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为:

    • <jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
    • <jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
    • <jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

      2.1  <jsp:useBean>标签

      <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。
      常用语法:
        <jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>
      "id"属性用于指定JavaBean实例对象的引用名称和其存储在域范围中的名称。
      "class"属性用于指定JavaBean的完整类名(即必须带有包名)。
      "scope"属性用于指定JavaBean实例对象所存储的域范围,其取值只能是page、request、session和application等四个值中的一个,其默认值是page。

    • 应用:

    index.jsp:

     1 <%@ page language="java" import="java.util.Date" import="bo.*" pageEncoding="UTF-8"%>
     2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     3 <html>
     4   <head>
     5     <title>First Jsp</title>
     6   </head>
     7   <body>
     8    <jsp:useBean id="stu" class="bo.Student" scope="request"></jsp:useBean>
     9    <jsp:setProperty property="name" name="stu" value="张三"/>
    10    <jsp:setProperty property="passWd" name="stu" value="123520"/>
    11    <% session.setAttribute("stu", stu); %>
    12    <jsp:forward page="html/a.jsp"></jsp:forward>
    13   </body>
    14 </html>

    bo包里的javaBean:

    html/a.jsp:
     1 <%@ page language="java" import="bo.*" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     4 <html>
     5 <head>
     6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     7 <title>Insert title here</title>
     8 </head>
     9 <body>
    10     <%
    11     Student stu=(Student)session.getAttribute("stu");  //getAttribute()得到的是Object类型
    12     out.print(stu.getName()+"="+stu.getPassWd());
    13     %>
    14 </body>
    15 </html>

    结果:

      

      2.2  <jsp:setProperty>标签

        <jsp:setProperty>标签用于设置和访问JavaBean对象的属性。

        语法格式一:
        <jsp:setProperty name="beanName" property="propertyName" value="string字符串"/>

      语法格式二:
        <jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />

      语法格式三:
        <jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>

      语法格式四:
        <jsp:setProperty name="beanName" property= "*" />
      name属性用于指定JavaBean对象的名称。
      property属性用于指定JavaBean实例对象的属性名。
      value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。为字符串时,该值会自动转化为JavaBean属性相应的类型,如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。  
      param属性用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

      2.2.1 使用jsp:setProperty标签设置person对象的属性值

     1 <jsp:useBean id="my" class="jspprojec.Person" scope="request"></jsp:useBean>
     2 
     3 <jsp:setProperty property="name" name="my" value="王五"/>
     4 <jsp:setProperty property="sex" name="my" value="n"/>
     5 
     6 <%
     7  session.setAttribute("my", my);
     8 %>
     9 
    10 <jsp:forward page="index1.jsp"></jsp:forward>

        //创建一个Person的对象my之后,用《jsp:setProperty》标签给对象name="my" 的property="name"属性设置值为value="王五";

        2.2.2 使用请求参数为bean的属性赋值

    <jsp:useBean id="my" class="jspprojec.Person" scope="request"></jsp:useBean>

    <jsp:setProperty property="name" name="my"  param="name"/>

    <%
     session.setAttribute("my", my);
    %>

    <jsp:forward page="index1.jsp"></jsp:forward>
    index1.jsp:
    1 <%
    2     Person p=(Person)session.getAttribute("my");
    3     out.print(p.getName());
    4     out.print(p.getSex());
    5     %>

    我们在浏览器输入 http://localhost:8080/jspprojec/index.jsp?name=zjamgsm   就会获取name的值赋给my对象的name属性。

        2.2.3  使用所有请求参数为bean的属性赋值

    1 <jsp:useBean id="my" class="jspprojec.Person" scope="request"></jsp:useBean>
    2 
    3 <jsp:setProperty property="*" name="my" />
    4 
    5 <%
    6  session.setAttribute("my", my);
    7 %>
    8 
    9 <jsp:forward page="index1.jsp"></jsp:forward>
    index1.jsp:
    1 <%
    2     Person p=(Person)session.getAttribute("my");
    3     out.print(p.getName());
    4     out.print(p.getSex());
    5     %>

    我们在浏览器输入 http://localhost:8080/jspprojec/index.jsp?name=zjamgsm&sex=f   就会从地址栏里获取所有属性.

      2.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”的字符串。

    1 <jsp:useBean id="my" class="jspprojec.Person" scope="request"></jsp:useBean>
    2 <jsp:setProperty property="name" name="my" value="zhangsanfeng"/>
    3 <jsp:getProperty property="name" name="my"/>
  • 相关阅读:
    本来一行可以代替的树节点搜索
    mssql 重新开始标识
    TabContainer实现服务器端回传
    CSS中图片路径的问题
    Javascript在IE下设置innerHTML时出现"未知的运行时错误"
    sql union和union all的用法及效率
    关于动态添加TabPanel遇到的问题以及思考
    关于linq to sql调用存储过程,出现"无法枚举查询结果多次"的问题
    SQL Server 2005连接服务器时的26号错误解决!
    SQL 2000和2005 获取两表的差集
  • 原文地址:https://www.cnblogs.com/shyroke/p/6529402.html
Copyright © 2011-2022 走看看