JSP的第2代开发技术:JSP+EJB

来源:互联网 发布:哈登16 17赛季数据 编辑:程序博客网 时间:2024/06/07 13:25

JSP的第2代开发技术:JSP+EJB

EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。在EJB3.0推出以后,实体Bean被单独分了出来,形成了新的规范JPA。

一个技术规范:EJB 从技术上而言不是一种”产品”
EJB
EJB
,EJB 是一种描述了构建应用组件要解决的标准:
可扩展 (Scalable)
分布式 (Distributed)
事务处理(Transactional)
数据存储(Persistent)
安全性 (Secure)

创建(声明)JavaBean,,id为我们理解的对象名

package cn.hncu.jspV2.domain;import java.util.List;//EJBpublic class Person {    private String name="abc";    private String pwd;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getPwd() {        return pwd;    }    public void setPwd(String pwd) {        this.pwd = pwd;    }    public Person() {        super();    }    public Person(String name, String pwd) {        super();        this.name = name;        this.pwd = pwd;    }    ////////////////业务逻辑方法//////////////////////////    //用this对象中的信息访问dao层,进行登录    public boolean login(){         if(name!=null && name.startsWith("hncu")&&                  pwd!=null && pwd.length()>5){             return true;         }         return false;    }    public boolean save(){        //把this对象中的信息进行保存(注册)        //略...        return true;    }    public List<Person> getAll(){        //调用dao        return null;    }}

声明一个bean

<jsp:useBean id="p" class="cn.hncu.jspV2.domain.Person"></jsp:useBean>

下一行的作用:给名为p的JavaBean设置name属性为:张三 ,, name为我们理解的对象名

<jsp:setProperty property="name" value="张三" name="p"/>

JavaBean中Integer类型的属性,直接用字符串格式去赋值,内部会自动帮我们转换成Integer的

<jsp:setProperty property="age" name="u1" value="30"/>

String与基本数据类型的属性赋值,我们只要给字符串格式就行,jsp标签会帮我们自动转换的。
其它的复杂类型如Date,不行!,对这种情况,我们得在javaBean自己手写代码转换,把对应属性的setter-getter方式写成面向String处理

<jsp:setProperty property="birthday" name="u1" value="2008-07-08"/>
<form action="<%=request.getContextPath()%>/jsps/v2/login2.jsp" method="post">       Name:<input type="text" name="name"/><br/>       Pwd:<input type="password" name="pwd"/><br/>       <input type="submit" value="登录"/>    </form>
<%@page import="cn.hncu.jspV2.domain.Person"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>  <body>  <!-- 声明一个bean -->    <jsp:useBean id="p0" class="cn.hncu.jspV2.domain.Person"></jsp:useBean>    <!-- 读取表单参数给bean设置属性:把表单中的pwd参数值读取过来,赋给p0-bean的pwd属性 -->    <jsp:setProperty property="pwd" name="p0" param="pwd"/>    <!-- 自动匹配,读取表单参数给bean设置属性:把表单中的所有参数值读取过来,赋给名字相同的属性  -->    <jsp:setProperty property="*" name="p0"/>    <%       Person p =(Person) pageContext.findAttribute("p0");//按从小到大依次到4个容器中查找属性,若小的找到则就返回,若4个都没找到则返回null    //调用EJB中的业务方法以决定是否登录成功       if(p.login()){           request.setAttribute("person", p);           request.getRequestDispatcher("welcome.jsp").forward(request, response);       }else{           request.getRequestDispatcher("/jsps/index2.jsp").forward(request, response);       }    %>  </body></html>
原创粉丝点击