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元素的外面调用。

  • 相关阅读:
    Atitit attilax要工作研究的要素 纪要 方案 趋势 方向 概念 理论
    Atitit 常见每日流程日程日常工作.docx v7 r8f
    Atitit it 互联网 软件牛人的博客列表
    Atitit 信息链(Information Chain)的概念理解 attilax总结
    Atitit 知识点的体系化 框架与方法 如何了解 看待xxx
    Atitit 聚合搜索多个微博 attilax总结
    Atitit 企业知识管理PKM与PIM
    Atitit 项目沟通管理 Atitit 沟通之道 attilax著.docx
    Atitit 项目管理软件 在线服务 attilax总结 1. 项目管理协作的历史 1 1.1. Worktile 406k 1 1.2. Teambition  584k in baidu
    Atitit.每周末总结 于每周一计划日程表 流程表 v8 import 上周遗漏日志补充 检查话费 检查流量情况 Crm问候 Crm表total and 问候
  • 原文地址:https://www.cnblogs.com/KindGod/p/5730111.html
Copyright © 2011-2022 走看看