实验六会话Bean.docx

上传人:b****6 文档编号:4699576 上传时间:2022-12-07 格式:DOCX 页数:24 大小:720.92KB
下载 相关 举报
实验六会话Bean.docx_第1页
第1页 / 共24页
实验六会话Bean.docx_第2页
第2页 / 共24页
实验六会话Bean.docx_第3页
第3页 / 共24页
实验六会话Bean.docx_第4页
第4页 / 共24页
实验六会话Bean.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

实验六会话Bean.docx

《实验六会话Bean.docx》由会员分享,可在线阅读,更多相关《实验六会话Bean.docx(24页珍藏版)》请在冰豆网上搜索。

实验六会话Bean.docx

实验六会话Bean

实验五JNDI及会话Bean

实验内容

学习JNDI的概念及使用

学习会话Bean的编写、部署及调用

学习JBoss的配置

实验目的

了解JNDI使用方法

掌握会话Bean的编写、部署及调用方法

掌握有状态SessionBean与无状态SessionBean的区别

环境要求

服务器:

JBoss6.0以上

集成开发环境:

myEclipse8.5或更高

实验指导

1、在MyEclipse中配置JBoss

1)下载JBoss-6.0.0.CR1,并解压;

2)添加环境变量“JBoSS_HOME”为JBoss的安装目录

3)启动myEclipse,在下方的“Server”选项卡中点击右键,在快捷菜单中选择“ConfiguerServerConnector”,打开如下对话框:

4)在左侧列表中选择“Servers”列表中的“JBoss”->“JBossv6.x”,然后在右侧面板中的“JBossserver”中选择“Enable”,并在“JBosshomedirectory”中指明你JBoss的安装目录。

然后点击“ok”按钮。

2、JNDI的使用

1)在JBoss下绑定将资源绑定到JNDI。

i.创建一个“WebProject”工程名为“jndi”。

ii.

创建一个JSP页面“index.jsp”,并编写如下内容:

iii.将此工程发布到JBoss上,然后启动JBoss。

iv.打开另一个浏览器窗口,访问一次刚发布的jdni的index.jsp页面,若看到“绑定成功....”,表示JNDI名已经绑定成功。

2)通过JNDI查询并引用绑定对象

i.创建一个“Javaproject”工程,工程名为“jndiClient”。

ii.在工程名上点击右键,在弹出的快捷菜单中选择“BuildPath”->“ConfigureBulidPath”,弹出如下对话框:

点击“AddExternalJARS...”按钮,将JBoss安装目录中“client”目录中的所有Jar文件添加(jndi的客户端类库)。

iii.

添加一个类“Client”,代码如下:

iv.运行上面代码,应该看到如图窗口:

3、编写会话Bean

1)无状态会话Bean

i.创建一个“EJBProject”工程“MyEJB”,界面如下图。

“PersistenceConfiguration”选择“None”,然后点击“Finish”按钮。

ii.创建一个包:

“cn.bean”用于保存EJB的类和其对应的接口文件。

iii.创建一个叫SayHi的“EJB3SessionBean”,如下图:

选中“CreateInterface”的“Local”和“Remote”,即为此类创建远程接口和本地接口,对应类文件为:

SayHiLocal.java和SayHiRemote.java。

“SessionType”(会话类型):

Stateless(无状态会话Bean)。

iv.

两个接口内容如下:

v.

编写会话类:

SayHi,并实现以上两个接口。

其内容如下:

vi.部署EJB:

在前面创建的JBossServer的图标上点击右键,在弹出的快捷菜单中选择“AddDeployment....”,弹出对话框如下图:

在“Project”中选择当前工程“MyEJB”。

vii.启动JBoss。

2)编写远程客户端

i.创建一个“JavaProject”工程,名为“EJBClient”。

ii.编辑“BuildPath”将JBoss目录中Client中的所有的JAR包添加到工程的类路径上。

iii.编辑“BuildPath”,在“Projects”选项卡中将“MyEJB”工程添加的列表(如图),或复制上面EJB工程中的远程接口文件SayHIRemote包括整个包,到本工程中。

3)

创建一个类Client,代码如下:

2)有状态会话Bean

(1)编写一个有状态会话Bean完成购物车的功能。

新建一个名叫“CartBean”的EJB3SessionBean,对话框如下:

CartBean类的代码如下:

packagecn.bean;

importjava.util.ArrayList;

importjava.util.HashMap;

importjavax.ejb.Stateful;

@Stateful(mappedName="cart")//指明JNDI名为cart

publicclassCartBeanimplementsCartBeanLocal,CartBeanRemote{

//商品信息列表,信息包括:

gdID(编号),name(商品名),price(单价),number(购买数量)

privateArrayList>goodsList=newArrayList>();

//添加商品

publicvoidadd(HashMapgoods){

booleanfound=false;

for(HashMapgd:

goodsList){

if(gd.get("gdID").toString().equals(goods.get("gdID").toString())){

intnum=(Integer)gd.get("number");

gd.put("number",num+1);

found=true;

break;

}

}

if(!

found){

goods.put("number",1);

goodsList.add(goods);

}

}

//删除商品

publicvoiddelete(StringgdID){

for(HashMapgd:

goodsList){

if(gd.get("gdID").toString().equals(gdID)){

goodsList.remove(gd);

break;

}

}

}

//清空购物车

publicvoidclearCart(){

goodsList.clear();

}

//获得商品清单

publicArrayList>getGoodsList(){

returngoodsList;

}

}

两个接口的代码:

@Local

publicinterfaceCartBeanLocal{

publicvoidadd(HashMapgoods);

publicvoiddelete(StringgdID);

publicvoidclearCart();

publicArrayList>getGoodsList();

}

@Remote

publicinterfaceCartBeanRemote{

publicvoidadd(HashMapgoods);

publicvoiddelete(StringgdID);

publicvoidclearCart();

publicArrayList>getGoodsList();

}

(2)创建一个Web工程作为CartBean的客户端。

创建一个名为“cart”的Web工程,复制上边EJB3工程的中的本地接口文件(CartBeanLocal)——包括包名到本工程中。

创建几个JSP页面完成商品的购买(放入购物车)、查看购物车、清除购物车的功能。

index.jsp:

功能显示商品列表及添加到购物车的链接,代码如下:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%@taglibprefix="c"uri="%>

MyJSP'index.jsp'startingpage

<%

//下面代码模拟生成商品列表,各位可以通过数据库获取

ArrayList>gds;

gds=(ArrayList>)session.getAttribute("gds");

if(gds==null){

gds=newArrayList>();

HashMaptmp=newHashMap();

tmp.put("gdID","sp0001");

tmp.put("name","新编大学英语教程");

tmp.put("price",23.5);

gds.add(tmp);

tmp=newHashMap();

tmp.put("gdID","sp0002");

tmp.put("name","J2EE权威指南");

tmp.put("price",63.5);

gds.add(tmp);

tmp=newHashMap();

tmp.put("gdID","sp0003");

tmp.put("name","太阳泪");

tmp.put("price",21.5);

gds.add(tmp);

tmp=newHashMap();

tmp.put("gdID","sp0004");

tmp.put("name","新编大学文化教程");

tmp.put("price",28.5);

gds.add(tmp);

session.setAttribute("gds",gds);

}

%>

商品列表

商品编号

商品名称

单价

操作

forEachitems="${gds}"var="gd">

${gd.gdID}

${gd.name}

${gd.price}

gdID=${gd.gdID}">添加到购物车

forEach>

查看购物车

add.jsp:

将指定商品添加到购物车

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>

<%

CartBeanLocalcart;

cart=(CartBeanLocal)session.getAttribute("cart");

if(cart==null){

InitialContextctx=newInitialContext();

cart=(CartBeanLocal)ctx.lookup("CartBean/local");

session.setAttribute("cart",cart);

}

Stringgid=request.getParameter("gdID");

ArrayList>gds=(ArrayList>)session.getAttribute("gds");

for(HashMapgd:

gds){

if(gd.get("gdID").equals(gid)){

cart.add(gd);

}

}

response.sendRedirect("index.jsp");

%>

cart.jsp:

显示购物车中的商品列表

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>

<%@taglibprefix="c"uri="%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

try{

CartBeanLocalcart;

ObjectcartTmp=session.getAttribute("cart");

if(cartTmp==null){

InitialContextctx=newInitialContext();

cart=(CartBeanLocal)ctx.lookup("CartBean/local");

session.setAttribute("cart",cart);

}

else{

cart=(CartBeanLocal)cartTmp;

}

ArrayList>goodsList=cart.getGoodsList();

pageContext.setAttribute("gdlist",goodsList);

}catch(NamingExceptione){

out.println(e.getMessage());

}

%>

商品列表

商品编号

商品名称

单价

数量

forEachitems="${gdlist}"var="gd">

${gd.gdID}

${gd.name}

${gd.price}

${gd.number}

forEach>

清空购物车

clearCart.jsp:

清空购物车

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

<%@pageimport="javax.naming.*,java.util.*,cn.bean.CartBeanLocal"%>

<%

CartBeanLocalcart=(CartBeanLocal)session.getAttribute("cart");

cart.clearCart();

response.sendRedirect("cart.jsp");

%>

(3)部署

使用前面的无状态会话Bean的部署方法,在MyEclipse中直接部署本部分内容可能会不能正常运行,在此必须脱离MyEclipse将两个工程直接部署到独立的JBoss服务器中。

第一步:

将两个工程导出

a、导出EJB工程。

在工程列表中的MyEJB工程上点击右键,在弹出的快捷菜单中选择“

”,弹出如下对话框:

选择导出目标为“Java”->“JARfile”,点击“Next”按钮,显示如下:

所有选择使用默认值,在“JARfile”中指明导出JAR文件的路径;点击“Finish”按钮,完成导出。

b、导出Web工程

同EJB工程,在工程名上点击右键,在快捷菜单中选择“Export....”,在弹出的对话框中选择目标为:

“JavaEE”->“WARfile(MyEclipse)”,点击“Next”按钮,显示如下:

在“WARfile”中指明要导出的目标位置,点击“Finish”按钮完成导出。

第二步:

启动JBoss并进行部署

执行JBoss的安装目录中bin目录下的run.bat,启动JBoss。

在浏览器的地址栏中输入:

localhost:

8080,得到如下界面:

点击“AdministrationConsole”进入JBoss管理系统的登录界面,如图

Username和Password均为“admin”,登录进入管理界面如下图:

在左侧的栏目中选择“Applications”->“EJB3JARS”,部署EJB工程——MyEJB.jar,界面如图:

点击“Addanewresource”,得到如下界面:

点击“浏览...”选择上面导出的EJB工程的jar文件,然点击“Continue”按钮完成部署。

成功后可看到下图:

看到列表中出现了“MyEJB.jar”表示部署成功。

然后点击“Applications”中的“WebApplication(WAR)s”,看到如下图,进行Web工程的部署;

点击“Addanewresource”按钮,得到和部署EJB时相似的界面,选择要部署的Web工程的导出文件cart.war,并点击“Continue”按钮完成部署,最后看到如下图:

表示部署成功。

第三部:

测试

在浏览器地址栏中输入:

localhost:

8080/cart

4、扩展

1、为Web工程cart添加删除购物车中指定商品的功能。

2、将MyEJB和cart工程部署到两台服务器上。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1