JavaBean

1、JavaBean简介

JavaBean是使用Java语言开发的一个可重用的组件,是符合某种特定规范的Java类。在JSP中使用JavaBean减少重复代码,减少代码冗余,功能区分明确,使整个JSP代码的开发更简洁,提高了代码的维护性。

JSP搭配JavaBean来使用有以下优点:

  • 可将HTML和Java代码分离,这主要是为了日后的维护方便。
  • 可利用JavaBean的优点,将常用到的程序写成JavaBean组件,当JSP使用时,只要调用JavaBean组件来执行用户所要的功能,不用再重复写相同的程序,这样也可以节省开发所需要的时间。
2、JavaBean的设计原则

在JSP中如果要应用JSP提供的JavaBean的标签来操作简单类,则此类必须满足如下的开发要求:

  • 所有的类必须放在同一个包中,在Web中没有包的类是不存在的。
  • 所有的类必须声明为public class,这样才能被外部所访问。
  • 类中所有的属性都必须封装,即使用private声明。
  • 封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法。
  • 一个JavaBean中至少存在一个无惨构造方法,此方法为JSP中的标签所使用。
JSP设计原则

开发第一个JavaBean:

public class SimpleBean {
    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的功能非常简单,只包含了name和age两个属性,同时包含了对应的getter、setter方法。
以上的类中会自动生成一个无惨构造方法。
如果一个类中只包含了属性、getter、setter方法,那么这种类就称为简单JavaBean

3、在JSP中使用JavaBean

在WEB-INF目录中定义了一个classes的文件夹,实际上此文件夹中可以保存所有的*.class文件。
一个JavaBean编写完成进行编译打包,编译好的JavaBean保存WEB-INF\classes文件夹中即可。

3.1、普通的使用方法

使用JSP的page指令导入所需要的JavaBean。向使用普通Java类一样,创建JavaBean实例。

在JSP中可以使用<%@ page%>指令导入所需要的包,那么一个JavaBean开发完成后,也可以按照此方法导入。如下代码所示:

<%@ pagecontentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="cn.mldn.demo.SimpleBean"%>
<html>
<head><title>Web 开发</title></head>
<body>
<%
    SimpleBean simple = new SimpleBean();
    simple.setName("xiaoli");
    simple.setAge(22);
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

3.2、使用<jsp:useBean>指令

除了使用import语句外,也可以使用JSP中提供的<jsp:useBean>指令完成操作。
<jsp:useBean>的作用,在jsp页面中实例化或者在指定范围内使用JavaBean。
如法如下:

<jsp:useBean id="实例化对象名称" scope="保存范围" class="包.类名称">

上边的scope:一共有page、request、session、application4种属性范围。

<%@ pagecontentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<html>
<head><title>Web 开发</title></head>
<body>
<%
    simple.setName("xiaoli");
    simple.setAge(22);
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

与import语句相比,此步骤省略了手工实例化对象的过程。
在使用<jsp:useBean>指令时,实际上会默认调用SimpleBean类中的无惨构造方法进行对象实例化。

每次修改JavaBean都需要重新启动服务器,为了减少麻烦,可以使用自动加载。
在Tomcat中直接配置自动加载:

<Context path="/mldn" docBase="D:\mldnwebdemo" reloadable="true" />

这种方法只适合于开发,当项目真正发布的时候,要将 reloadable设置成false,以提升服务器运行性能。

4、JavaBean与表单

在JavaBean语法中实际上最大的特点就是在于与表单的交互上,

<html>
<head>
    <title>Web 开发</title>
</head>
<body>
    <form action="input_bean.jsp" method="post">
        姓名:<input type="text" name="name">
        年龄:<input type="text" name="age">
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>
</body>
</html>

input_bean.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
    <title>Web 开发</title>
</head>
<% request.setCharacterEncoding("UTF-8") %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="*"/>
<body>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

程序运行结果:

输入:李华,26
输出:李华,26

上面的代码使用<jsp:useBean>标签定义了一个JavaBean,然后又使用<jsp:setProperty>标签将全部的属性设置到对应的SimpleBean属性中。
<jsp:setProperty>中的name属性对应着<jsp:useBean>中的id属性,表示使用指定的JavaBean。
property属性表示要操作的属性,“*”表示自动匹配。

5、设置属性<jsp:setProperty>

通过<jsp:setProperty>标签的操作发现,可以通过“*”的形式完成属性的自动设置,但实际上<jsp:setProperty>标签一共有4种使用方法。

设置属性操作

5.1、设置指定属性

如果在使用<jsp:setProperty>设置属性时没有指定“*”,而是指定了具体的属性,那么就表示只为这个具体的属性设置请求内容。

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
    <title>Web 开发</title>
</head>
<% request.setCharacterEncoding("UTF-8") %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="name"/>
<body>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

程序运行结果:

输入:李华,26
输出:李华,null

5.2、指定设置属性的参数

在默认情况下,所有的属性会和请求的参数名称进行匹配,匹配成功,则进行设置,这时也可以通过param属性指定属性设置时所需要的具体参数。

<html>
<head>
    <title>Web 开发</title>
</head>
<body>
    <form action="input_bean.jsp?myage=666" method="post">
        姓名:<input type="text" name="name">
        年龄:<input type="text" name="age">
        <input type="submit" value="提交">
        <input type="reset" value="重置">
    </form>
</body>
</html>

input_bean.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
    <title>Web 开发</title>
</head>
<% request.setCharacterEncoding("UTF-8") %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="name"/>
<jsp:setProperty name="simple" property="age" param="myage"/>
<body>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

程序运行结果:

输入:李华,26
输出:李华,666

5.3、为属性设置具体内容

如果要将一个具体的内容设置给JavaBean中的指定属性,则在<jsp:setProperty>标签中直接使用value即可。

<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
    <title>Web 开发</title>
</head>
<% request.setCharacterEncoding("UTF-8") %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="name" value=“zhangsan”/>
<jsp:setProperty name="simple" property="age" value=“20”/>
<body>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

程序运行结果:

输入:李华,26
输出:zhangsan,20

自动设置的方式使用的最多,在开发中页最为常见

6、取得属性<jsp:getProperty>

在JavaBean的操作标签中也提供了专门取得属性的<jsp:getProperty>标签,此标签会自动调用JavaBean中的getter()方法。与设置属性的标签相比,取得属性的标签只有如下一种语法格式:

<jsp:getProperty name="实例化对象的名称(id)" property="属性名称">
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
    <title>Web 开发</title>
</head>
<% request.setCharacterEncoding("UTF-8") %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="*"/>
<body>
    <h3>姓名:<jsp:getProoerty name="simple" property="name"/></h3>
    <h3>年龄:<jsp:getProoerty name="simple" property="age"/></h3>
</body>
</html>

本程序直接使用<jsp:getProperty>标签代替getter()方法的调用。

7、JavaBean的保存范围

<jsp:useBean>指令上存在一个scope属性,表示一个JavaBean的保存范围。保存到范围共有以下4种:

  • page:仅在当前页面有效。跳转后此JavaBean无效。
  • request:一个JavaBean对象可以保存在一次服务器跳转的范围中。
    可以使用HttpRequest.getAttribute()方法取得JavaBean对象。
  • session:在一个用户的会话范围中保存,重新打开六浏览器时才会声明新的JavaBean。
    可以使用HttpSession.getAttribute()方法取得JavaBean对象。
  • application:在整个服务器上保存,服务器关闭时才会消失。
    可以使用application.getAttribute()方法取得JavaBean对象。
8、JavaBean的删除

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

  • 删除page范围的JavaBean可以使用pageContext.removeAttribute(JavaBean名称);
  • 删除request范围的JavaBean可以使用request.removeAttribute(JavaBean名称);
  • 删除session范围的JavaBean可以使用session.removeAttribute(JavaBean名称);
  • 删除application范围的JavaBean可以使用application.removeAttribute(JavaBean名称);
9、实例操作:注册验证

使用JSP+JavaBean完成一个简单的注册验证程序。用户在表单中填写表单名、年龄、email地址。如果用户的内容输入的正确,则进行输入内容的显示;如果不正确,则在错误的地方进行显示,而正确的内容将继续保存下来。

程序完成需要的页面


作者:年少懵懂的流年梦
链接:https://www.jianshu.com/p/cdd54c9c1b4d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值