JSP笔记-JavaBean技术

来源:互联网 发布:东方财富网软件下载 编辑:程序博客网 时间:2024/06/11 22:54

“蓝瘦,香菇,香菇在这里”


1 JavaBean技术

JavaBean 的产生,使 JSP 页面中的业务逻辑变得更加清晰,程序之中的实体对象及业务逻辑可以单独封装到 Java 类之中,JSP 页面可以通过 自身操作 JavaBean 的动作标识对其进行操作,改变了 HTML 网页代码与 Java 代码混乱的编写方式,不仅提高了程序的可读性、易维护性,而且提高了 代码的重用性。

JavaBean 是一种 JAVA 语言写成的可重用组件
Javabean 就是为了和 jsp 页面传数据化简交互过程而产生的。
使 JSP 页面中的 java 代码分离出去,降低了耦合

接下来给出的是JavaBean与其它Java类相比而言独一无二的特征(规范):

  • 提供一个默认的无参构造函数。
  • 需要被序列化并且实现了Serializable接口。(实现序列化表示将对象转换成可存储或可传输的状态,好像可以不用)
  • 可能有一系列可读写属性。
  • 可能有一系列的”getter”或”setter”方法。

1.1 JavaBean的种类

可视化 JavaBean:用于实现可视化界面,一般用于 Swing 的程序中,JSP开发少用

非可视化 JavaBean : 分为值 JavaBean 和 工具 JavaBean

值 JavaBean :严格遵循 JavaBean的命名规范,通常用来封装表单数据,作为信息的容器

工具JavaBean :可以不遵循 JavaBean的命名规范 用于封装业务逻辑,数据操作等,连接数据库等,实现业务逻辑与页面显示的分离,提高了代码的可读性与易维护性。

值 JavaBean

UserBean.java

public class UesrBean {    private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    private String password;    @Override    public String toString() {        return "UesrBean [name=" + name + ", password=" + password + "]";    }}

工具 JavaBean
MyTools.java

// 转换字符串中的 “<” 与 “>” 字符public class MyTools {    public String change(String source) {        source = source.replace("<","&lt;");        source = source.replace(">","&gt;");    }}

1.2 JavaBean的应用

1 获取 JavaBean的属性

首先引入 JavaBean 类,在通过 JSP 动作标识进行获取

<jsp:useBean id="produce" class="com.bean.Produce"></jsp:useBean><jsp:getProperty property="name" name="produce"/>

Produce.java

//package experiment06;public class Produce {    // 商品名称    private String name = "LOL进阶指南";    // 商品价格    private double price = 298;    // 数量    private int count = 10;    // 出厂地址    private String factoryAdd = "火星进坑有限公司";    public String getName() {        return name;    }    public double getPrice() {        return price;    }    public int getCount() {        return count;    }    public String getFactoryAdd() {        return factoryAdd;    }    public void setName(String name) {        this.name = name;    }    public void setPrice(double price) {        this.price = price;    }    public void setCount(int count) {        this.count = count;    }    public void setFactoryAdd(String factoryAdd) {        this.factoryAdd = factoryAdd;    }}

Produce 类必须遵循 JavaBean 规范 ,getProperty 标签才能根据 getter方法获取值,

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><jsp:useBean id="produce" class="com.bean.Produce"></jsp:useBean><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>显示商品信息</title></head><body><div>    <ul>        <li>            商品名称:<jsp:getProperty property="name" name="produce"/>        </li>        <li>            价格:<jsp:getProperty property="price" name="produce"/>(元)        </li>        <li>            数量:<jsp:getProperty property="count" name="produce"/>        </li>        <li>            厂址:<jsp:getProperty property="factoryAdd" name="produce"/>        </li>    </ul></div></body></html>

2 对 JavaBean 属性赋值

对上个例子中的的属性赋值,这里关联了 setter 方法。

<jsp:setProperty property="name" name="produce" value="手机"/><jsp:setProperty property="price" name="produce" value="1980.88"/><jsp:setProperty property="count" name="produce" value="1"/><jsp:setProperty property="factoryAdd" name="produce" value="广东省xxx公司"/>

3 在JSP 页面中应用 JavaBean

这个例子关键就是这个:

<jsp:useBean id="person" class="com.wgh.Person" scope="page">    <jsp:setProperty name="person" property="*" /></jsp:useBean>

scope 表示JavaBean实例的有效范围, property=”*” 表示所有值。

Person.java

//package com.wgh;public class Person {        private String name;    // 姓名        private int age;    // 年龄        private String sex;     // 性别        private String address;     // 住址        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 String getSex() {            return sex;        }        public void setSex(String sex) {            this.sex = sex;        }        public String getAddress() {            return address;        }        public void setAddress(String address) {            this.address = address;        }}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>录入员工信息页面</title><style type="text/css">ul {    list-style: none; /*设置不显示项目符号*/    margin:0px;     /*设置外边距*/    padding:5px;        /*设置内边距*/}li {    padding:5px; /*设置内边距*/}</style></head><body>    <form action="register.jsp" method="post">        <ul>            <li>姓 名:<input type="text" name="name"></li>            <li>年 龄:<input type="text" name="age"></li>            <li>性 别:<input type="text" name="sex"></li>            <li>住 址:<input type="text" name="address" size="35"></li>            <li><input type="submit" value="添 加"></li>        </ul>    </form></body></html>

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%    request.setCharacterEncoding("UTF-8");%><jsp:useBean id="person" class="com.wgh.Person" scope="page">    <jsp:setProperty name="person" property="*" /></jsp:useBean><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>显示录入的员工信息页面</title><style type="text/css">ul {    list-style: none; /*设置不显示项目符号*/    margin: 0px; /*设置外边距*/    padding: 5px; /*设置内边距*/}li {    padding: 5px; /*设置内边距*/}</style></head><body>    <ul>        <li>姓 名:<jsp:getProperty property="name" name="person" /></li>        <li>年 龄:<jsp:getProperty property="age" name="person" /></li>        <li>性 别:<jsp:getProperty property="sex" name="person" /></li>        <li>住 址:<jsp:getProperty property="address" name="person" /></li>    </ul></body></html>

实例-应用JavaBean 解决中文乱码

<jsp:useBean id="messageBean" class="com.wgh.MessageBean" scope="request"/>
<%=MyTools.toChinese(messageBean.getAuthor()) %>

MessageBean.java

package com.wgh;public class MessageBean {    private String author;// 存储留言者    private String title;// 存储留言标题    private String content;// 存储留言内容    public String getAuthor() {        return author;    }    public void setAuthor(String author) {        this.author = author;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}

MyTools.java

package com.wgh;import java.io.UnsupportedEncodingException;public class MyTools {    public static String toChinese(String str) {        if (str == null)            str = "";        try {            // 通过String类的构造方法,将指定的字符串转换为“UTF-8”编码            str = new String(str.getBytes("ISO-8859-1"), "UTF-8");        } catch (UnsupportedEncodingException e) {            str = "";            e.printStackTrace();        }        return str;    }}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>留言页面</title><style type="text/css">ul {    list-style: none; /*设置不显示项目符号*/    margin:0px;     /*设置外边距*/    padding:5px;        /*设置内边距*/}li {    padding:5px; /*设置内边距*/}</style></head><body>    <form action="deal.jsp" method="post">        <ul>            <li>留 &nbsp;言 &nbsp;者:<input type="text" name="author" size="20"></li>            <li>留言标题:<input type="text" name="title" size="30"></li>            <li>留言内容:<textarea name="content" rows="6" cols="30"></textarea></li>            <li><input type="submit" value="提交"> <input type="reset"                value="重置"></li>        </ul>    </form></body></html>

deal.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><jsp:useBean id="messageBean" class="com.wgh.MessageBean" scope="request">    <jsp:setProperty name="messageBean" property="*"/></jsp:useBean><jsp:forward page="show.jsp"/>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@ page import="com.wgh.MyTools" %><!-- 获取request范围内名称为messageBean的MessageBean类实例 --><jsp:useBean id="messageBean" class="com.wgh.MessageBean" scope="request"/><!DOCTYPE HTML><html><head><meta charset="utf-8"><title>显示留言信息</title><style type="text/css">ul {    list-style: none; /*设置不显示项目符号*/    margin:0px;         /*设置外边距*/    padding:5px;        /*设置内边距*/}li {    padding:5px; /*设置内边距*/}</style></head><body>    <ul>        <!-- 获取留言者后进行转码操作 -->        <li>留 &nbsp;言 &nbsp;者:<%=MyTools.toChinese(messageBean.getAuthor()) %></li>        <!-- 获取留言标题后进行转码操作 -->        <li>留言标题:<%=MyTools.toChinese(messageBean.getTitle())%></li>        <!-- 获取留言内容后进行转码操作 -->        <li>留言内容:<textarea rows="6" cols="30" readonly><%=MyTools.toChinese(messageBean.getContent()) %></textarea></li>        <li><a href="index.jsp">继续留言</a></li>    </ul></body></html>
0 0
原创粉丝点击