zoukankan      html  css  js  c++  java
  • javaBean的相关知识和应用

    javaBean

    JavaBean 简介

    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。JSP的开发中可以使用javaBean减少重复代码,使整个JSP代码的开发更简洁.JSP搭配JavaBean来使用,有以下优点:

    1.可将HTMLjava代码分离,好维护

    2.将常用的程序携程javaBean组件,当在JSP要使用时,只要调用就可以,避免编写重复代码

    JavaBean开发要求

    1.javaBean本身就是一个类,属于java面向对象的编程

    2.JSP中如果要应用jsp提供的javabean的标签来啊哦做简单类的话,则此类必须满足如下的开发要求:

    01.所有的类必须放在一个包中,web中没有包的是不存在的

    02.所有的类必须声明为public class,这样才能够被外部所方位

    03.类中所有的属性都必须使用private封装

    04.封装的属性如果需要被外部所操作,则必须编写对应的setter.getter方法

    05.一个javabean中至少存在一个无参构造方法,此为jsp中的标签所使用

    实例:

    package cn.bdqn.javaBean;

    public class Person {

    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对象

    PO: persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。

    注意:当一个javabean修改后,一定要重启服务器

    当然Tomcat中提供了自动的加载机制,但是这种加载机制需要通过配置server.xml进行配置

    在配置的虚拟目录的,context节点中添加属性reloadable=”true”

    这样配置后,Tomcat会自动进行检测,如果javabean修改,会自动进行重新加载

    由于reloadable一致要处于监视状态,所以服务器真正用于项目运行的时候,此属性一定要设置成false,否则性能会下载.

    每当进行完重新加载之后,之前所设置的全部的session范围的属性将彻底消失

    JavaBean与表单

    Jsp表单页面代码如下:

    <form action="control.jsp" method="post">

    <table>

    <tr>

    <td>姓名</td>

    <td><input name="name" placeholder="请输入姓名">

    </td>

    </tr>

    <tr>

    <td>年龄</td>

    <td><input type="password" name="age" placeholder="请输入年龄">

    </td>

    </tr>

    <tr>

    <td colspan="2"><input type='submit' value="提交"></td>

    </tr>

    </table>

    </form>

    方法一:

    使用<%@ page import=”.类名称”%>进行引入,就可以使用new关键字,进行对象的创建了

    实例:

    <%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

        <%@ page import="cn.bdqn.javaBean.Person"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>Insert title here</title>

    </head>

    <body>

    <%request.setCharacterEncoding("UTF-8"); %>

    <%

    Person p=new Person();

    p.setName(request.getParameter("name"));

    p.setAge(Integer.parseInt(request.getParameter("age")));

    %>

    <%=p.getName() %>

    <%=p.getAge()%>

    </body>

    </html>

    方法二:

    使用<jsp:useBean id=”实例化对象的名称” scope=”保存范围(四大作用域)” class=”.类名称”/>

    Id是被实例化的对象的名称,这样使用就直接拿这个对象进行使用.

    <jsp:useBean id="P2" scope="page" class="cn.bdqn.javaBean.Person"/>

    <%--jsp:useBean标签中的id是被实例化的对象,

    jsp:setProperty标签中的name属性的值是需要被修改属性值的实例化对象名称

    property属性是需要被修改的属性的名称 值为*,表示全部匹配 --%>

    <jsp:setProperty name="p2" property=* />

    通过一个<jsp:Property>标签就可以完成所有请求参数的自动设置,而且可以自动

    将输入的String型变为int型的数据,这个标签的语法如下:

    <jsp:setProperty>:表示操作指定javabean中的属性,里面定义了两个属性:

    -name:表示使用javabean中的id的定义;

    -property:表示的是设置里面的属性内容,如果为*则表示自动匹配,与表单相匹配.

    如果想要让表单的参数自动设置到javabean之中的化.就需要让参数的名称与属性一致 .但是这种说法并不明确,因为在这之中还包含了一个概念.

    在编写简单java类的时候类的属性使用private封装,而且编写了对应的settergetter方法.

    使用这种操作.实际上最终调用的是javabean中的setter方法,setter方法又有严格的命名要求.所以可以简单的理解为要想设置.则参数名称必须与属性一致,否则无法完成设置.

    这种操作的原理是反射机制,但是这种操作本身存在一个问题.如果要求输入的内容是int型的,则必须输入数字否则会报错

    Javabean的优点必须结合表单才能看出来

    方法三:

    使用反射机制

    javaBean设置和取得属性

    1设置属性:<jsp:setProperty>

    <jsp:setProperty>标签一共有四种使用方法:

    -01 自动匹配:<jsp:setProperty name=”实例化对象的名称(:useBaen标签中的id属性的值)”  property=”*”/>

    -02 指定属性:<jsp:setProperty name=”实例化对象的名称(:useBaen标签中的id属性的值)”  property=”属性名称”/>

    -03 指定参数:<jsp:setProperty name=”实例化对象的名称(:useBaen标签中的id属性的值)”  property=”属性名称” param=”参数名称”/>

    -04 指定内容:<jsp:setProperty name=”实例化对象的名称(:useBaen标签中的id属性的值)”  property=”属性名称” value=”内容”/>

    建议使用第一种

    1取得属性:<jsp:getProperty>

    javaBean的操作标签中也提供了专门取得属性的标签:

    <jsp:getProperty>,此标签会自动调用JavaBean中的getter()方法,与设置属性的标签相比,取得属性的标签只有一种语法:

    <jsp:getProperty name=”实例化对象的名称(useBean标签中id属性的属性值)” 

    property=”属性名称”>

    jsp:getProperty 标签将获取属性值并打印到页面

     当以后再JSP页面中再也看不到任何的<%%>的时候,基本上jsp的开发标准模式也就形成类

    以后只要看见jsp标签上出现类id属性,则不管何种情况基本上都表示一个实例化对象,如果标签上看见类name属性,肯定找的是属性范围中的内容,就是id属性的属性值,如果有类property则表示的就是一个类中的属性

    jsp:getProperty jsp:setProperty标签都是利用反射机制完成的

    javaBean的保存范围

    <jsp:useBean>指令上存在一个scope属性,表示的是一个javaBean的保存范围,保存范围一共有四种:page,request,session,application.:jsp四大作用域

    javaBean的删除

     JavaBean虽然使用类<jsp:useBean>标准进行创建,但是其操作依靠的仍然是四种属性范围,如果一个JavaBean不再使用的话,则可以直接使用四中属性范围的removeAttribute()方法进行删除

    -1删除page范围的JavaBean可以使用;

    pageContext.removeAttribute(JavaBean的实例化对象名称);

    -2删除request范围的javaBean可以使用:

    request.removeAttribute(JavaBean的实例化对象名称);

    -3删除session范围的javaBean可以使用:

    session.removeAttribute(JavaBean的实例化对象名称);

    -4删除application范围的javaBean可以使用:

    application.removeAttribute(JavaBean的实例化对象名称);

     

  • 相关阅读:
    反射学习(三)--------利用反射调用方法
    list实体数据分组
    利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)
    基于数组的shell脚本编写
    Ansible中文权威指南
    几种方法来实现scp拷贝时无需输入密码
    Java 中&&和&的区别
    常用javaScript小常识
    mysql数据库函数
    Hidden的应用
  • 原文地址:https://www.cnblogs.com/zqr99/p/7571096.html
Copyright © 2011-2022 走看看