Beans 的 概念

【WebServerProgramming】Ch.7 JSP & Java Beans_通信
Beans是JSP页中能够运行Java代码的容器。根据J2SE标准,将Beans分为了EJB( Enterprise Java Beans))和JSP Beans。Bean直译为豆子,这里说的是一个容器。容器内含有各种属性、参数、方法能够实现Java代码功能,由于外壳的保护,一般的访问不可到达,想要访问Bean的内部就需要使用特定的Method[方法]来实现。

Java Beans:每个容器有独立的功能,通过组合多种容器来实现高级应用。为了让多个容器之间能够组合使用,要求各Beans的接口进行标准化。未经标准化的Beans可能无法与其他容器协同使用。

JSP Beans:是为了与JSP联动使用的容器类。给包含定位容器、JSP数据库调用等多种需求标准化过程提供协助。因为可以提供数据共享和处理功能,所以代码整体重复度会降低,在JSP页中比新建Servlet更效率。

【WebServerProgramming】Ch.7 JSP & Java Beans_通信_02
如图,JSP Bean一般标准化各类功能的作用。当客户端请求通过到达HTML页并响应具体功能时,请求进入容器,首先到达新生成或者已存在的Servlet,然后Servlet根据JSP Beans提供的模型来选择对应的功能,然后访问对应的View(JSP页)来实现具体的功能。当有需要时,JSP Beans也可以通过DOA 调用数据库,进行读写操作。
【WebServerProgramming】Ch.7 JSP & Java Beans_通信_03
服务器这边可以分为三个阶层。分别是web阶层(又称表示层),business阶层,EIS阶层。business阶层到EIS阶层由JPA(Java Persistence API)来连接。

JSP&Bean联动

【WebServerProgramming】Ch.7 JSP & Java Beans_通信_04
一般从浏览器的form标签(登录界面)携带用户的登录信息到达服务器的a.jsp网页,然后JSP页回访问JSPbean,并观察其中的参数,存储到Bean中。Bean内是Java构成,有各种类组成,存储这个动作由set完成。然后a页完成处理后将结果传输到b页,b同样也要参照Bean内的参数,并通过get方法引用Bean中先前存储的客户端传输过来的数据。然后传输给客户端,返回结果。有必要时JSP Bean可以与数据库联动。

两者联动的方法大致如下:
➊包括数据库联动在内,数据和各种功能同时实现的方法(DO, DAO级别的综合形态)
Bean内部包含与数据库连接的相关信息,具有输入、打印、删除等所有数据库处理logic形态。因具有容易快速开发的优点,可用于实现相对简单的程序。
➋ 数据嵌入与数据库处理分离的实现方法(DO, DAO级别的分离形态)
分离Data Object和DAO(Data Access Object)的形态,DO class只存在能与table对应的filed相关功能。 与数据库连接相关的信息、输入、输出、删除等功能将体现到DAO这一特殊级别上。 比起➊,起初很难体现,但是分离数据和商务logic,因此具有有利于维持和保修的优点。 该方法也被称为AOA模式,主要与MVC模式一起使用。 这是适合大部分项目的方法。 因此,最好从一开始就用这种方法培养程序设计习惯。
➌另外使用O-R Mapping Framework的方法
用O-R Mapping Framework代替负责实际数据库处理的DAO。 O-R Mapping是指自动连接域名客体和数据库桌的专栏,提供将他们的值同步化并维持状态的机制,从而提高开发的生产性和稳定性的方法。

class xxxBean {
// 保证Bean不会被任意的访问,只有指定的接口可以被访问
private String xxx;
// get, set 提供接口,作为外部访问可能通过的几种途径之一.
public String getXxx() {
return xxx;
}
public setXxx(String xxx) {
this.xxx = xxx;
}
}
//request期间该Bean有效
<jsp:useBean id="mybean" scope="request" class="MyBean" />
//第一次访问时,没有对应的bean则新生成,有则将当前传达的变量的值赋给Bean(将数据存储到Bean内部)
MyBean mybean = (MyBean)request.getAttribute("mybean");
if(mybean == null) {
mybean = new MyBean();
request.setAttribute("mybean", mybean);
//scope函数
<%
MyBean mybean = new MyBean();
%>
}

在请求未结束之前,该Bean持续有效,其他JSP页也可以访问并使用里面的数据,request对象一般在提交结果到客户端后消失,也就说只要该请求未被应答,则该Bean持续有效。
Set实现:

<jsp:setProperty name="mybean" property="userid" />
<jsp:setProperty name="mybean" property="userpasswd" value="xxx"/>
//上下是相同的功能
<%
mybean.setUserid(request.getParameter("username"));
mybean.setPasswd(request.getParameter("userpasswd"));
%>

当输入项目比较多时, p r o p e r t y = “ ∗ ” property=“*” property=即可。
Get实现:

<jsp:getProperty name="mybean" property="username" />
<jsp:getProperty name="mybean" property="userpasswd" />

<TR><TD>Name</TD>
<TD><jsp:getProperty name="mybean" property="username" /></TD></TR>

<TR><TD>ID</TD>
<TD><%= mybean.getUsername() %></TD></TR>

 ${mybean.username}