• JavaWeb学习笔记--3.JavaBean


    JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 的属性。

    符合下面设计规则的任何Java类都是一个JavaBean

    (1) 对于数据类型"protype"的每个可读属性,bean必须有下面签名的一个方法:public proptype getProperty(){} 

    (2) 对于数据类型"protype"的每个可写属性,bean必须有下面签名的一个方法:public setProperty(proptype x){} 

    (3)定义一个不带任何参数的构造函数

    想要在JSP中调用JavaBean,就需要使用到 <jsp:useBean>动作指令,该动作指令主要用于创建和查找JavaBean的示例对象。语法格式如下:
    <jsp:useBean id="对象名称" scope="存储范围" class="类名"> </jsp:useBean>

    JavaBean的Scope属性

      对于JSP 程序而言,使用JavaBeans 组件不仅可以封装许多信息,而且还可以将一些数据处理的逻辑隐藏到JavaBeans 的内部,除此之外,我们还可以设定JavaBeans 的Scope属性,使得JavaBeans 组件对于不同的任务具有不同的生命周期和不同的使用范围。Scope属性具有四个可能的值分别是application 、session 、request、page分别代表JavaBeans 的四种不同的生命周期和四种不同的使用范围。bean只有在它定义的范围里才能使用,在它的活动范围外将无法访问到它。JSP为它设定的范围有:

    page: bean的缺省使用范围

    request:作用于任何相同请求的JSP文件中,直到页面执行完毕向客户端发回响应或在此这之前已通过某种方式(如重定向、链接等方式)转到另一个文件为止。
    还可通过使用 Request对象访问bean,如request.getAttribute(beanName)

    session:作用于整个session的生存周期内,在session的生存周期内,对此bean属性的任何改动,都会影响到在此session内的另一page、另一request里对此bean的调用。但必须在创建此bean的文件里事先用page指令指定了session=true。

    application:作用于整个application的生存周期内,在application周期内,对此bean属性的任何改动,都会影响到此application内另一page、另一request以及另一session里对此bean的调用。

    例1:

    Student.java

    package com.jsp;
    
    public class Student {
        private long classno;
        private String name;
        private int age;
        private boolean sex;
        private String major;
        
        public Student(){
            
        } 
        
        public long getClassno() {
            return classno;
        }
        public void setClassno(long classno) {
            this.classno = classno;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public boolean isSex() {
            return sex;
        }
        public void setSex(boolean sex) {
            this.sex = sex;
        }
        public String getMajor() {
            return major;
        }
        public void setMajor(String major) {
            this.major = major;
        }
    }

    测试代码 input.html

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>JavaBean测试</title>
      </head>
      
      <body bgcolor = "#FFFFFF">
      <jsp:useBean id="student1" scope = "page" class = "com.jsp.Student"/>
          利用标记获取JavaBean属性:
      <jsp:getProperty name = "student1" property = "name"/>
      <br>
      
          利用对象方法获取JavaBean属性:
      <%=student1.getName()%>
      <br>
          利用标记设置JavaBean属性name为temp
      <jsp:setProperty name = "student1" property="name" value = "小明"/>
      <br>
          获取新的属性:
      <jsp:getProperty name = "student1" property = "name"/>
      <br>
          
      </body>
    </html>

     

    例2:

    第一部分同例1的Student.java

    input.jsp

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    
    <html>
      <head>
        <title>Param HTML</title>
      </head>
      
      <body>
        <form action ="param.jsp">
        姓名:<input type = "text" name ="Username"><br>
        年龄:<input type = "text" name = "age"><br>
        专业:<input type = "text" name = "major"><br>
        <input type ="submit" value="提交">
        
        </form>
      </body>
    </html>

    param.jsp
    设置属性用这种方式:

       <jsp:setProperty name="student2" property="name" param="Username"/> 

    如果input.jsp中的<input type = "text" name ="Username">,令name="name"而不是name="Username",即和Student.java中姓名的属性名一样时,那么在param.jsp中设置属性是可以省略param属性。代码如下:

       <jsp:setProperty name="student2" property="name"/> 

    获取属性可以用下面这两种方式:

    <jsp:getProperty name = "student2" property="name"/>
    <%out.println(student2.getName()); %>

    代码:

    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%request.setCharacterEncoding("gb2312");%>
    
    <html>
      <head>
        <title>利用请求参数设置JavaBean属性</title>   
      </head>
      
      <body bgcolor="#ffffff">
       <jsp:useBean id = "student2" scope="page" class="com.jsp.Student"/>
       <jsp:setProperty name="student2" property="name" param="Username"/> 
       <!--  注意第三个参数名为param,因为上一个页面传过来的为参数
            如果为valule="Username" 那么名字就会被设置为"Username"而不是参数值 -->
       <jsp:setProperty name="student2" property="age" param="age"/>
       <jsp:setProperty name="student2" property="major" param="major"/>
       <table>
       <tr>
           <td>姓名</td>
           <td><jsp:getProperty name = "student2" property="name"/></td>
           <td><%out.println(student2.getName()); %></td>
       </tr>
       <tr>
           <td>年龄</td>
           <td><jsp:getProperty name = "student2" property="age"/></td>
           <td><%out.println(student2.getAge()); %></td>
       </tr>
       <tr>
           <td>专业</td>
           <td><jsp:getProperty name = "student2" property="major"/></td>
           <td><%out.println(student2.getMajor()); %></td>
       </tr>
           
       </table>
      </body>
    </html>

     页面效果:

  • 相关阅读:
    并查集
    贪心
    分治
    二分
    操作系统基础知识--《操作系统原理(第4版)(普通高等教育"十一五"国家级规划教材)》读书笔记
    《自控力》读书记录
    计算机组成原理基础知识--《计算机组成原理与汇编语言程序设计(第4版)(高等学校规划教材)》读书笔记
    ansible自动部署模板文件中列表长度判断
    《股市稳赚》摘录
    yarn学习小结
  • 原文地址:https://www.cnblogs.com/gnivor/p/4345707.html
Copyright © 2020-2023  润新知