JavaBean技术

概述

在未使用JavaBean技术的时候,我们通常将Java代码写入到jsp页面中,这种做法,使得jsp页面混乱,给修改和维护代码带来了一定的困难。而JavaBean技术是将HTML代码与Java代码相分离。从而降低了Html代码和Java代码之间的耦合度。

JavaBean使用的优点

将Java代码单独封装在某个类之中,提高了代码的重用性和降低了HTML与Java代码的耦合度,并且优化了Jsp页面。
他的开发模式
在这里插入图片描述

JavaBean的种类

1.**可视化的JavaBean:**主要实现一些可视化的界面
2.**非可视化的JavaBean:**实现一些业务逻辑或一些业务对象。
我们看一个例子
在这个例子中,我们将检测所输入的邮箱地址是否符合标准封装在Email类中。
而下图界面,通过Html代码实现。
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="result.jsp" method="post">
  <table align="center" width="300" border="1" height="150">
  <tr>
    <td cilspan="2" align="center">
      <b>邮箱认证系统:</b>
    </td>
    </tr>
    <tr>
      <td align="right">邮箱地址:
      </td>
      <td><input type="text" name="mailAdd"/></td>
    </tr>
    <tr>
      <td colsapn="2" align="center"><input type="submit"/></td>
    </tr>
  </table>
  </form>
  </body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java"  import="bean.Email"%>

<html>
<head>

    <title>Title</title>
</head>
<body>
<div>

    <%

       String mailAdd=request.getParameter("mailAdd");
       Email email=new  Email(mailAdd);
       if(email.isEmail()){
           out.print(mailAdd+"<br>是<br>");
       }else{
           out.print(mailAdd+"<br>不是<br>");
       }
        %>
    <a href="index.jsp">返回</a>
</div>
</body>
</html>

package bean;

import java.io.Serializable;
public class Email implements Serializable {
    private static final long serialVersionUID = 1L;
    private String mailAdd;
    private boolean email;

    public Email() {
    }

    public Email(String mailAdd) {
        this.mailAdd = mailAdd;
    }

    public boolean isEmail() {
        String regex = "\w+([-+_']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
        if (mailAdd.matches(regex)) {
            email = true;
        }
        return email;
    }
    public String getMailAdd(){
        return mailAdd;
    }
    public void setMailAdd(String mailAdd){
        this.mailAdd=mailAdd;
    }
}

在JavaBean的规范中,要求JavaBean对象提供默认的无参的构造方法,但除了默认无参的构造函数外,JavaBean对象也可以根据相关属性提供构造方法。

JavaBean的应用

在这里插入图片描述
在这里插入图片描述
下面我们看一个栗子
并且品味一下他
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <jsp:useBean id="produce" class="com.Gch.bean.Produce" ></jsp:useBean>
  <jsp:setProperty property="name" name="produce" value="洗衣机"></jsp:setProperty>
  <jsp:setProperty property="price" name="produce" value="88.88"></jsp:setProperty>
  <jsp:setProperty property="count" name="produce" value="100"></jsp:setProperty>
  <jsp:setProperty property="factoryAdd" name="produce" value="吉林省长春工程学院"></jsp:setProperty>
  <div>
    <ul>
      <li>商品名:<jsp:getProperty name="produce" property="name"/></li>
      <li>商品价格:<jsp:getProperty name="produce" property="price"/></li>
      <li>商品数量:<jsp:getProperty name="produce" property="count"/></li>
      <li>商品产地:<jsp:getProperty name="produce" property="factoryAdd"/></li>
    </ul>
  </div>
  </body>
</html>

package com.Gch.bean;

public class Produce {
    //商品名称
    private String name;
    //商品价格
    private double price;
    //数量
    private int count;
    //出场地址
    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;
    }
}

在idea中遇到该错误时

Classes from the default package must not be referenced from JSP file
是因为
你所写的Java类直接放在了src下面,这样是不对的
在这里插入图片描述
我们需要在src下面创建一个包,把所写的类放在所创建的包下面。
在这里插入图片描述

jsp中应用JavaBean

解决中文乱码,在Jsp页面上用来显示时间的JavaBean,数组转化为字符串

原文地址:https://www.cnblogs.com/gaochunhui/p/11700608.html