zoukankan      html  css  js  c++  java
  • 东软实训2-在jsp中使用javaBean

    在JSP中可以像使用普通类一样访问JavaBean,在脚本元素中实例化类的对象,调用对象的方法。JSP提供了3个动作元素jsp:useBean,jsp:setPropertyjsp:getProperty来访问JavaBean。
    1.1 jsp:useBean
    jsp:useBean动作用于初始化JavaBean,或者定位一个已经存在的JavaBean实例,并把实例的引用赋给一个变量。
    jsp:useBean元素各属性的含义:
    ▶id
    用于标识JavaBean实例的名字,同时,该名字也是声明的脚本变量的名字,并被初始化为JavaBean实例的引用。要注意指定的名字是区分大小写的,并遵照Java语言变量命名的约定。
    ▶scope
    指定一个范围,在这个范围内,JavaBean实例的引用是可用的,实际上也是指定JavaBean实例的生命周期。可能的取值有:page、request、session和application,默认值是page。
    ▶class
    指定JavaBean对象的完整的限定类名。
    ▶beanName
    指定Bean的名字。该名字被提供给java.beans.Beans类的instantiate()方法,来实例化一个JavaBean。
    ▶type
    指定定义的脚本变量的类型。这个类型可以是Bean类本身,它的父类,或者由Bean类实现的接口。该属性默认的值和class属性的值一样。
    jsp:useBean动作的行为如下:
    (1)JSP容器在jsp:useBean元素指定的范围中查找指定id的JavaBean对象。
    (2)如果找到相应的对象,并且在元素中指定了type属性,那么JSP容器会试图把找到的对象转换为指定的type。如果类型转换失败,则抛出java.lang.ClassCastException异常。
    (3)如果没有在指定的范围内找到对象,并且在元素中没有指定class或beanName属性,则会抛出java.lang.InstantiationException异常
    (4)如果没有在指定的范围内找到对象,并且在元素中指定了class属性,则利用这个类创建一个新的对象,将这个对象的引用赋值给由属性id所指定的名字的变量,并将这个对象保存到属性scope指定的范围中(在调用setAttribute()方法时,以属性id指定的名字作为属性名)。
    (5)如果没有在指定的范围中找到对象,并且在元素中指定了beanName属性,则用beanName作为参数调用java.beans.Beans类中的instantiate()方法。如果这个方法执行成功,则把新创建的对象的引用赋值给由属性id所指定的名字的变量,并将这个对象保存到属性scope指定的范围中(在调用setAttribute()方法时,以属性id指定的名字作为属性名)。
    2.2 jsp:setProperty
    jsp:setProperty动作和jsp:useBean一起使用,用来设置JavaBean的简单属性和索引属性。jsp:setProperty动作使用Bean中的setXXX()方法,在Bean中设置一个或多个属性值。在JSP中,经常使用jsp:setProperty动作元素将客户端提交的数据保存到JavaBean的属性中。
    ▶name
    Bean实例的名字,它必须是已经在jsp:useBean元素中通过id属性定义的名字。Bean的实例必须包含可写(具有setXXX()方法)的属性。
    ▶property
    被设置的属性的名字。如果property属性的值是“*”,标签就会在请求对象中查找所有的请求参数,看是否有参数的名字和Bean属性的名字相同,如果找到匹配的参数和属性,就会按照正确的类型(自动进行类型转换)将参数的值设置为属性的值。如果一个参数的值为空(""),对应的属性的值不会被修改。
    ▶param
    指定请求对象中参数的名字。在设置Bean的属性时,如果请求参数的名字和Bean属性的名字不同,可以用param来指定参数的名字。如果没有使用param,那么就认为请求参数的名字和Bean属性的名字相同。在jsp:setProperty元素中,不能同时出现param和value属性。
    ▶value
    指定要赋给Bean属性的值。可以用一个请求时属性表达式(a request-time attribute exception)作为value属性的值。在jsp:setProperty元素中,不能同时出现param和value属性。
    3.3 jsp:getProperty
    jsp:getProperty动作用来访问一个Bean的属性,并把属性的值转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用该对象的toString()方法。
    语法:
    <jsp:getProperty name="name" property="propertyName"/>
    属性含义:
    ▶name Bean实例的名字,从这个实例中可以得到属性。
    ▶property 要得到的属性的名字。Bean的实例必须包含可读(具有getXXX()方法)的属性。
    在编写JavaBean的时候,有两个地方需要注意:一、必须为JavaBean指定一个包名,否则JSP将无法调用JavaBean;二、让UserBean实现了java.io.Serializable接口,也就是让UserBean对象支持序列化。在JSP中,JavaBean对象常常作为数据的持有者,如果在你的应用开发中,JavaBean对象需要在不同的运行环境中传递,或者需要保存到持久存储设备中,那么应该让JavaBean类实现Serializable接口。如果JavaBean只是在单一的环境中使用,而且也不需要被保存到持久存储设备中,那么JavaBean类就不需要实现Serializable接口。
    JavaBean的类和Servlet类放置的位置是一样的,都是放在WEB-INFclasses目录下。

    解决在没有关闭浏览器的情况下,重新输入信息,现实的信息是先前提交的信息的两种方式:
    1.改变useBean对象的范围,设为page或request,但是这样就会在重新打开页面时无法获取到信息;
    2.将jsp:setProperty动作移到jsp:useBean元素的外面调用。

  • 相关阅读:
    Ubuntu 12.10 安装破解sublimetext 2
    封装一个类型转换的方法
    【转】CultureInfo中重要的InvariantCulture
    C# 36进制转10进制
    用泛型的IEqualityComparer<T>接口去重复项
    关于wamp启动是80端口被占用的问题详解(win7系统下WAMP 80端口被MicrosoftHTTPAPI/2.0占用的解决办法)
    Ubuntu 更改鼠标滚轮速度
    edge ctrl+c 复制不起作用
    centos 7 mysql8 安装和卸载
    Windows Terminal 终端 SSH连接centos7 linux
  • 原文地址:https://www.cnblogs.com/KindGod/p/5730111.html
Copyright © 2011-2022 走看看