JSP---JavaBean的使用-jsp:useBean标签相关

JavaBean介绍:

JavaBean其实就是一个遵循特定写法的java类,但是必须具有如下特点:

    1.这个java类必须具有一个公开的无参构造函数

    2.属性必须私有化,类必须公开

    3.私有化的属性必须通过public类型的方法暴露给其他程序,并且方法的命名也必须遵守一定的命名规范---getXxx和setXxx方法。

定义:

 把一个拥有对属性进行set和get方法的类,我们就可以称之为JavaBean。实际上JavaBean就是一个java类,在这个java类中就默认形成了一种规则——对属性进行设置和获得。而反之将说ava类就是一个JavaBean,这种说法是错误的,因为一个java类中不一定有对属性的设置和获得的方法(也就是不一定有set和get方法)。

在JSP中访问JavaBean的语法:

1、声明JavaBean对像-必须使用完整类名:
<jsp:useBean id=“someBean” class=“package.SomeBean” scope=“page”/>
以上声明相当于:
SomeBean someBean = new SomeBean();
pageContext.setAttribute(“someBean”,someBean);
scope的可选值为:page|request|session|application
需要说明的是:一般情况下,我们保留<jsp:useBean/>的body部分为空,如果不为空,则只有初始化此Bean时执行,如:
<jsp:useBean id=“person” class=“cn.Person”>
        这是body部分,只会在初始化时执行一次
</jsp:userBean>
2、访问JavaBean的属性:
<jsp:setProperty name=“someBean” property=“name” value=“Tom”/>
<jsp:getProperty name=“someBean” property=“name”/>
也可以在页面上使用Java代码直接访问它的属性和其他方法。

<jsp:useBean>标记:

      <jsp:useBean id="name" class="classname" scope="page|request|session|application"/>

      id:代表jsp页面中的实例对象 通过这个对象引用类中的成员,如,id="wq", wq.成员();

      class: 代表JavaBean类,如: class="com.Test",引用com包中的Test类

      scope:指明了javabean的生存时间

JavaBean的范围:

JavaBean的scope属性决定的Bean的范围,默认为page范围。

当声明了一个Bean并将它放到某个范畴之后,在同一个范围内再次使用<jsp:useBean../>将不再创建。而是直接给你返回已经创建过的Bean的实例。此过程可以通过查看容器翻译的源代码得知。

演示属性名是基本数据类型时的jsp:useBean用法:

User.java:

package cn.hncu.regServletPojo.domain;

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}

javaBean.jsp:

package cn.hncu.regServletPojo.domain;

public class User {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + "]";
    }
}

doBeanForm.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>

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

    <jsp:useBean id="user3" class="cn.hncu.regServletPojo.domain.User"></jsp:useBean>
    <!-- 下面这句相当于user3.setName( request.getParameter("name") ); -->
    <jsp:setProperty property="name" name="user3" param="name"/>
    <jsp:setProperty property="age" name="user3" param="age"/>
    ${user3}

    <br/><br/>
    <jsp:useBean id="user4" class="cn.hncu.regServletPojo.domain.User"></jsp:useBean>
    <!-- 属性用“*”号,就是让系统自动根据提交上来的参数去找对应的属性赋值 -->
    <jsp:setProperty property="*" name="user4"/>
    ${user4}
    <br/><br/>
  </body>
</html>

演示属性名与setter-getter方法比较特殊时的jsp:useBean用法:

Person.java:

package cn.hncu.bean;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author 陈浩翔
 *
 * 2016-7-30
 */
public class Person {
    private String name;
    private Integer age;//最好用Integer对象,而不用int
    private Date birth;
    //特殊的属性(这个变量的类型不是基本数据类型时,<jsp:setProperty>标记无法直接使用!)
    //解决方案:不写它自己默认的setter-getter--setBirth(Date)
    //而是写一对替代该属性的setter-getter ---setBirthday(String)方法
    //另外,在页面使用<jsp:setProperty>时,属性名应该用替代setter-getter 方法反推出的属性名-这里要用---birthday

    //开始我想着用重载做,其实重载也是可以实现这个一样的功能,不过注意哦,返回类型不能重载的!所以get方法是肯定不行的,综合,还是上面那个方法好。

    public Person() {
        super();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    /*
     //我们要做的就是改这个2个方法
    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }
    */

    //注入日期格式
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    public String getBirthday(){
        return sdf.format(birth);
    }

    public void setBirthday(String strDate){
        try {
            Date birth = sdf.parse(strDate);
            this.birth=birth;
        } catch (ParseException e) {
            throw new RuntimeException("日期格式错误", e);
        }

    }

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", birth=" + birth
                + "]";
    }
}

javaBean.jsp:增加代码

<br/><br/>
    <!-- 以下演示属性名与setter-getter方法比较特殊时的jsp:userBean用法 -->
    <jsp:useBean id="person" class="cn.hncu.bean.Person"></jsp:useBean>
    <jsp:setProperty property="name" name="person" value="Tom"/>
    <jsp:setProperty property="age" name="person" value="35"/>
    <!-- 注意下面这句的property的值是:birthday !!!-->
    <jsp:setProperty property="birthday" name="person" value="2016-7-30"/>

    <jsp:getProperty property="name" name="person"/>
    <jsp:getProperty property="age" name="person"/>
    <jsp:getProperty property="birthday" name="person"/>

演示结果:

时间: 2024-10-18 14:10:55

JSP---JavaBean的使用-jsp:useBean标签相关的相关文章

Java Web学习(19):阶段项目之使用JSP+JavaBean完成用户登录

Model1简介 Java Web应用程序的开发总体上来说有两个模型就是Model1和Model2.Model1模型出现前,整个Web应用 的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.这样的弊端显露无 疑:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性特别差. JavaBean的出现可以使JSP页面中使用JavaBean封装的数据或者调用JavaBean的业务逻辑代码,这样大大提高 了程序的可维护性. Model

JAVAWEB开发之Session的追踪创建和销毁、JSP详解(指令,标签,内置对象,动作即转发和包含)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的服务器端技术,当客户端第一次访问资源时 如果调用request.getSession() 就会在服务器端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,如果浏览器没有禁用cookie的话,当浏览器再次访问项目中的Servlet程序时会将JSESSIONID带着,这时JSESSIONID就像唯一的一把钥匙  开启服务器端对应的session空间,进而获取到sessi

JAVAWEB开发之Session的追踪创建和销毁、JSP具体解释(指令,标签,内置对象,动作即转发和包括)、JavaBean及内省技术以及EL表达式获取内容的使用

Session的追踪技术 已知Session是利用cookie机制的server端技术.当client第一次訪问资源时 假设调用request.getSession() 就会在server端创建一个由浏览器独享的session空间,并分配一个唯一且名称为JSESSIONID的cookie发送到浏览器端,假设浏览器没有禁用cookie的话,当浏览器再次訪问项目中的Servlet程序时会将JSESSIONID带着.这时JSESSIONID就像唯一的一把钥匙  开启server端相应的session空

&lt;jsp:javabean&gt;动作标签实例

<jsp:javabean>动作标签实例 之后补齐基础知识 scope属性 该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.<jsp:useBean>标识被执行时,首先会在scope属性指定的范围来查找指定的Bean实例,如果该实例已经存在,则引用这个Bean,否则重新创建,并将其存储在scope属性指定的范围内. scope属性可选值如下 page:(当前页面范围) 制定了所创建的Bean实例只能够在当前的JSP文件中使用,包括在通过include指令静态包

day12(jsp指令&内置对象&动作标签、JavaBean、EL表达式&函数库)

day12 JSP指令 JSP指令概述 JSP指令的格式:<%@指令名 attr1="" attr2="" %>,一般都会把JSP指令放到JSP文件的最上方,但这不是必须的. JSP中有三大指令:page.include.taglib,最为常用,也最为复杂的就是page指令了. 2 page指令 page指令是最为常用的指定,也是属性最多的属性! page指令没有必须属性,都是可选属性.例如<%@page %>,没有给出任何属性也是可以的!

Java进阶学习第十二天——JSP JavaBean EL

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.05.04 lutianfei none session(拓展) session的追踪(了解) session的创建和销毁 创建session : 第一次访问资源,调用request.getSession() session销毁的三种方法: 非正常关闭服务器 session的过期,默认是30分钟.(tomcat/conf/web.xml) <session-config> <session-timeout>

jsp JavaBean el表达式

JSP三大指令 一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info="xxx"...%> * pageEncoding和contentType: > pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成.java时需要使用pageEncoding! > contentType:它表示添加一个响应头:Co

抄袭的用Jsp+JavaBean+Mysql实现的登录和注册

用Jsp+JavaBean+Mysql实现的登录和注册 (2010-11-18 20:54:43) 转载▼ 标签: 软件   共同学习和进步:一个简单的用户登录和注册系统. 代码比较简单,希望对刚开始学习的同学有所帮助. 具体代码如下: *******用户注册页面 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%><html>  <he

使用jsp+javabean完成用户登陆功能

User.java package com.po; public class User implements java.io.Serializable { private String username; private String password; public User() { } public String getUsername() { return username; } public void setUsername(String username) { this.usernam