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

本文介绍JSP与EJB技术的结合使用,重点讲解如何利用EJB实现分布式应用程序的开发,并通过示例展示了如何在JSP页面中声明和使用JavaBean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
//EJB
public 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值