J2EE实践第二部分-创建一个简单的EJB Web程序(盗梦空间版)

2024-02-01 23:08

本文主要是介绍J2EE实践第二部分-创建一个简单的EJB Web程序(盗梦空间版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天晚上和同学一起去电影院看了IMAX版的盗梦空间,晚上回家后做了个梦,竟然梦见自己做了个梦--早上醒来,才发现自己又做了一个梦中梦。这里之所以用了“又”,那是因为自己经常会做梦中梦,很有劲。呵呵,回到正题上,盗梦空间这部电影很精彩,今天仍然回味无穷,而且因为这部电影导致灵感大发,于是写了这个EJB的小例子,也就是EJB盗梦空间版。

 

准备:
搭建开发环境:
JDK: 1.6.0
eclipse: 最新的HeliosWTP版本
Web服务器: Jboss 5.1

 

场景:

简便起见,还是一个非常简单的小例子,用户通过Web页面输入两个数字,后台由本地的ejb计算后,将结果返回到用户。

 

1. 首先创建一个EJB项目,名字叫SumEJB,然后在这里将它自动关联到EAR中,叫SumEAR。这样完成后,eclipse会自动创建一个SumEAR项目。

 

 

2.不用创建EJB Client Project了,这里不用选择。最后完成项目的创建。

 

3.然后创建一个Local的Session Bean,SessionBean主要负责业务逻辑的处理。这里我们的Web页面和它都在同一服务器里,所以用了Local类型,这样可以提高性能。

创建好ejb后,开始编写代码:

(1)首先是SumToolLocal接口:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

packagecom.sap.demo.sum.ejb;

importjavax.ejb.Local;

 

@Local

public interface SumToolLocal {

      public float add(float f1, float f2);

}

(2)然后是它的实现类:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

packagecom.sap.demo.sum.ejb;

 

importjavax.ejb.Stateless;

 

/**

 * Session Bean implementation class SumTool

 */

@Stateless

public class SumTool implements SumToolLocal {

 

    /**

     * Default constructor.

     */

    public SumTool() {

        // TODOAuto-generated constructor stub

    }

   

      public float add(float f1, float f2) {

            return f1 + f2;

      }

}

4.然后创建一个Web Project,名字叫SumWeb,也把它选到add to SumEAR。

 

5.然后右键选择它的属性,在Project Referece中,选择EJB和EAR项目:

 

6.由于要用到EJB,所以我们选择 Project的Build path,将SumEJB加入到BUILD PATH中。

 

 

 

7.完成设置后,开始编写代码了:

(1)先是写一个普通的java bean:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

packagecom.sap.demo.sum.model;

 

public class Number {

 

      private float param1 = 0;

 

      private float param2 = 0;

 

      private float result = 0;

 

      public float getResult() {

            return result;

      }

 

      public void setResult(float result) {

            this.result = result;

      }

 

      public float getParam1() {

            return param1;

      }

 

      public void setParam1(float param1) {

            this.param1 = param1;

      }

 

      public float getParam2() {

            return param2;

      }

 

      public void setParam2(float param2) {

            this.param2 = param2;

      }

}

 

(2)然后是两个jsp页面,index.jsp和result.jsp,很简单,分别是输入和输出页面:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

 

index.jsp:

<%@ pagelanguage="java" contentType="text/html;charset=ISO-8859-1"

      pageEncoding="ISO-8859-1"%>

<!DOCTYPE htmlPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">

<title>Insert titlehere</title>

</head>

<body>

<FORM ACTION="SumServlet">

First Parameter: <INPUT TYPE="TEXT"NAME="param1"><BR>

Second Parameter: <INPUT TYPE="TEXT"NAME="param2"><BR>

<CENTER><INPUT TYPE="SUBMIT"></CENTER>

</FORM>

</body>

</html>

 

 

result.jsp:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

 

<%@ pagelanguage="java" contentType="text/html;charset=ISO-8859-1"

    pageEncoding="ISO-8859-1"%>

<!DOCTYPE htmlPUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">

<title>Insert titlehere</title>

</head>

<body>

<jsp:useBean id="number"

type="com.sap.demo.sum.model.Number"

scope="request" />

 

<jsp:getProperty name="number"property="param1" /><br>

<jsp:getProperty name="number"property="param2" /><br>

<jsp:getProperty name="number"property="result" /><br>

</body>

</html>

 

(3)最后创建一个Servlet:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

packagecom.sap.demo.sum.model;

 

import java.io.IOException;

 

import javax.ejb.EJB;

importjavax.servlet.RequestDispatcher;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

importcom.sap.demo.sum.ejb.SumTool;

 

/**

 * Servlet implementation class SumServlet

 */

public class SumServletextends HttpServlet {

      private static final long serialVersionUID = 1L;

      @EJB

      private SumTool sumtool;  

    /**

     * @see HttpServlet#HttpServlet()

     */

    public SumServlet() {

        super();

        // TODO Auto-generated constructor stub

    }

 

      /**

       * @seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

       */

      protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

            String param1 = request.getParameter("param1");

            String param2 = request.getParameter("param2");

            float f1 = Float.parseFloat(param1);

            float f2 = Float.parseFloat(param2);

            float result = sumtool.add(f1, f2);

            Number b = new Number();

            b.setParam1(f1);

            b.setParam2(f2);

            b.setResult(result);

            request.setAttribute("number", b);

            RequestDispatcher dispatcher =request.getRequestDispatcher("result.jsp");

            dispatcher.forward(request, response);

      }

 

      /**

       * @seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

       */

      protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

            // TODO Auto-generated method stub

      }

 

}


8.部署程序并运行:

首先输入两个数字:

然后点提交后,我们就可以看到EJB计算的结果了:

 

9. 小结:

<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]-->

1.这个例子最大的亮点,就是使用了EJB 3.0Inseption。大家可以从Servlet的代码里看到,只是简单的用注释@EJBSession Bean做了一个声明。程序运行时就可以直接使用这个EJB了,Inception果然强大。

2.然后需要注意的地方是,这个简单的应用虽然简单,但是结构完整,它包括了3个项目:SumEJB, SumWeb, SumEAR。最后通过SumEAR自动生成.ear文件进行部署,ear里包含了WEB.war文件和EJBjar文件,而它本身也是jar文件,只是换了一个后缀名。

这是一个非常简单EJB的小例子,但是展示SessionBean的用法以及EJB的注入功能。下一部分,我想介绍一下EJB的Entity Bean以及结合APJ的使用。

 

这篇关于J2EE实践第二部分-创建一个简单的EJB Web程序(盗梦空间版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668764

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)