`

EJB3.0实现登录注册(一)

    博客分类:
  • Java
阅读更多

 

环境

IDEEclipse3.4JavaEE版)

数据库:MySQL5.0

服务器:Jboss4.0.5

步骤

1. 搭建环境

2. MySQL中建立数据库表

表结构如下:

Id:无实意主键,采用自增方式生成

stuId:学号

Name:姓名

Password:密码

registerDate:注册时间

emailEmail

phone:电话号码

sex:性别

对应的SQL语句如下:

DROP TABLE IF EXISTS `account`;

CREATE TABLE `account` (

  `Id` int(11) NOT NULL auto_increment,

  `stuId` varchar(20) NOT NULL,

  `name` varchar(50) NOT NULL,

  `sex` varchar(6) ,

  `registerDate` date ,

  `email` varchar(100) ,

  `phone` varchar(30 ,

  `password` varchar(20) ,

  PRIMARY KEY  (`Id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3. 建立EJB工程

4. 编写简单Bean文件Account.java

定义Account类所具有的属性和方法,不包含任何业务相关代码,其中的属性与数据库表的各列相对应,通过Eclipse自动生成各属性的gettersetter方法。

5.创建实体Bean

6. 编写无状态SessionBean

 SessionBean用于实现业务逻辑,可分为有状态Bean(Stateful Bean)和无状态Bean(Stateless Bean)。当客户端请求时,服务器就会分配Session Bean为客户端服务。Session Bean可以直接访问数据库,但更多的时候是通过实体Bean实现数据访问。Session Bean可以作为业务处理对象出现在应用体系中。在本实验中EclipseSessionBean创建向导创建无状态SessionBean, 命名为AccountManageState type选择"Stateless",接口类型选择"Remote",创建成功后Eclipse会自动生成远程接口类AccountManageRemote。首先需要定义接口的内容,因为调用EJB 的客户端是通过使用这个接口的引用从EJB容器得到的会话Bean对象stub,从而进行所需操作的。

在实现类中添加EntityManager的获取代码,EntityManager 是用来对实体Bean进行操作的辅助类。它可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJBQL语言查找满足条件的实体BeanEntityManager 的获取可以通过@PersistenceContext注释由EJB容器(本实验中即jboss)动态注入。修改后的AccountManage类如下

@Stateless

public class AccountManage implements AccountManageRemote {

 

@PersistenceContext(unitName = "test")

private EntityManager manager;

 

public AccountManage() {

}

 

@Override

public void addAccount(Account account) {

manager.persist(account);

try {

Producer.sendMessage("Congratulations! Register success!");

catch (Exception e) {

System.out.println("@Send message error!");

e.printStackTrace();

}

}

 

@Override

public Account findAccount(String name, String password) {

Query query = manager.createQuery("from Account c " +

                " where c.name=:name" +

                " and c.password=:password");

query.setParameter("name", name);

query.setParameter("password", password);

Account account = (Account)query.getSingleResult();

try {

if(account==null){

Producer.sendMessage("Login failed!");

}else{

Producer.sendMessage("Congratulations! Login success!");

}

catch (Exception e) {

System.out.println("@Send message error!");

e.printStackTrace();

}

return account;

}

 

@Override

public Account findAccountById(int id) {

return manager.find(Account.class, id);

}

 

}

代码中对应于注册的addAccount方法通过EntityManager自带的API中的persist方法来实现,而对应于注册的查询方法findAccount通过手动编写EJB QL来实现,以用户名(学号)和密码作为参数,返回符合条件的结果,如果登录失败则返回null,同时利用消息驱动Bean向队列中发送成功或失败的消息。

7. 编写客户端程序调用SessionBean来完成登录和注册的功能。

为简单起见,客户端程序并没有提供图形用户界面,只起到简单测试的作用,因此将注册和登录信息都写死在了程序中。具体如下:

 

8. 编写相关配置文件

由于一部分配置文件可以由EclipseJboss自动生成,所以需要写的配置文件只有两个,一个是JNDI的配置文件,另一个是日志的相关配置。其中的JNDI(The Java Naming and Directory Interface,Java 命名和目录接口) 是一组在Java 应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录服务的通用、统一的方式。借助于JNDI 提供的接口,能够通过名字定位用户、机器、网络、对象服务等。命名服务就像DNS 一样,通过命名服务器提供服务,大部分的J2EE 服务器都含有命名服务器。目录服务一种简化的RDBMS 系统,通过目录具有的属性保存一些简单的信息。目录服务通过目录服务器实现,比如微软ACTIVE DIRECTORY 等。使用JNDI可带来如下好处:
        (1)包含大量命名和目录服务,可以使用相同API 调用访问任何命名或目录服务。
        (2)可以同时连接多个命名和目录服务。
        (3)允许把名称同JAVA 对象或资源关联起来,不必知道对象或资源的物理ID。
        (4)使用通用接口访问不同种类的目录服务
        (5)使得开发人员能够集中使用和实现一种类型的命名或目录服务客户API 上。

 

分享到:
评论

相关推荐

    ejb3.0写的登陆应用

    EJB(Enterprise JavaBeans)...这个“ejb3.0写的登陆应用”涵盖了EJB 3.0的核心特性,展示了如何利用其优势构建一个简洁而有效的登录系统。通过深入理解和实践这些知识点,开发者能够更好地掌握Java企业级应用的开发。

    EJB3.0程序设计

    8. **生命周期回调**:EJB3.0允许开发者在Bean的生命周期事件上注册回调方法,如`@PostConstruct`和`@PreDestroy`注解分别用于标记初始化和销毁方法。 9. **分布式特性**:EJB3.0支持跨服务器的透明调用,使得Bean...

    EJB3.0

    例如,可以创建一个`@Stateless`的会话Bean来处理用户登录和注册,一个`@Entity`的bean来表示用户信息,使用JPA进行数据存储。通过`@MessageDriven`Bean,可以实现消息通知系统,当用户有新的消息时,系统可以异步...

    EJB3.0 企业开发

    EJB 3.0的核心理念是提高开发效率和简化企业级应用的复杂性,它通过注解和标准API实现了这一目标。开发者可以专注于业务逻辑,而不是底层基础设施的配置和管理。理解并熟练运用EJB 3.0的各项特性,对于构建健壮、可...

    jsp+servlet+EJB3.0网上书店

    总的来说,"jsp+servlet+EJB3.0网上书店"项目展示了如何利用Java Web技术栈实现一个基本的电子商务系统,虽然功能可能不完整,但它为学习者提供了一个了解和实践这些技术的起点。通过深入研究和扩展这个项目,开发者...

    基于EJB3.0的分布式网上购物系统毕业设计.doc

    本课题旨在利用EJB 3.0技术设计并实现一个分布式网上购物系统,以解决高访问量带来的性能挑战。研究内容包括系统的架构设计、组件开发、数据管理以及事务处理等。此项目不仅有助于提升系统性能,还能提高用户体验,...

    EJB3.0容器模型的WEB服务-WebService

    - **UDDI**:统一描述、发现和集成,是一个黄页目录服务,用于查找和注册Web服务。 - **JAX-WS**:Java API for XML Web Services,Java中的Web服务开发标准,它提供了一种创建、部署和消费SOAP Web服务的方法。 ...

    jsf +ejb3.0

    4. **依赖注入(Dependency Injection)**: EJB 3.0通过`@EJB`、`@Inject`和`@Resource`注解实现了依赖注入,简化了组件之间的关联。 5. **容器管理(Container-Managed)**: EJB容器负责事务管理、安全性、并发...

    struts2+ejb3.0三个简单实例项目

    EJB3.0(Enterprise JavaBeans)是Java EE平台的一部分,主要用于实现业务逻辑。相比之前的版本,EJB3.0大大降低了开发复杂性,引入了注解驱动的编程模型,使得企业级服务的创建更为简便。在这个项目中,你会看到...

    Myeclipse+JBoss开发的EJB3.0 大型电子商务网站网上书店

    1. 用户模块:使用EJB实现用户注册、登录、个人信息管理等功能,可能涉及到实体Bean(@Entity)来持久化用户数据。 2. 商品模块:展示书籍信息,可能通过EJB提供服务接口,如查询、分类等。 3. 购物车模块:实现商品...

    09_传智播客EJB3.0_配置jboss数据源.rar

    本教程“09_传智播客EJB3.0_配置jboss数据源”主要关注如何在JBoss应用服务器中配置数据源,这对于任何处理数据库交互的EJB应用来说都是至关重要的。 首先,让我们深入理解EJB 3.0的关键特性: 1. 注解驱动:EJB ...

    JBOSS EJB3.0实例教程

    - 在EJB3.0中,可以通过`@Inject`注解实现依赖注入。 **4.8 定时服务(TIMERSERVICE)** - 定时服务允许会话Bean注册定时器。 - 适用于执行定期任务。 **4.9 安全服务(SECURITY SERVICE)** - 安全服务用于实现身份...

    ejb3.0 introduce

    Enterprise JavaBeans(EJB)3.0 是Java 2 Enterprise Edition (J2EE) 平台的一个重要组成部分,它是用于构建可扩展、事务处理、多用户安全的分布式业务应用程序的组件模型。EJB 3.0 版本引入了诸多改进,使其更易于...

    JSP+Servlet+EJB3.0+Oracle10g火车售票系统

    本系统主要实现火车查询售票功能,主要的功能如下: 客户端管理功能: (1)动车基本信息管理模块;...4.本设计采用JSP+Servlet+EJB3.0+Oracle10g工具进行开发,最后通过JDBC进行与数据库的相关的链接。

    SAP JPA 1[1].0, EJB 3.0 and Web Service -Modeling Your First JPA Entity in CE 7.1

    ### SAP JPA 1.0, EJB 3.0 和 Web Service - 构建您的第一个 JPA 实体在 CE 7.1 #### 引言 本文将详细介绍如何通过一个简单的员工数据模型来创建、配置、调用并部署一个 SAP JPA 1.0 实体。我们的示例应用仅包含一...

    EJB WebBookShop

    **EJB WebBookShop** 是一个基于EJB3.0技术构建的Web应用程序示例,专为初学者设计,提供了一个全面了解和学习EJB3.0特性的平台。EJB(Enterprise JavaBeans)是Java EE(Java Platform, Enterprise Edition)的一...

    一个复杂的用EJB3实现的银行系统

    1. **用户管理**:包括用户注册、登录、权限管理等,通常涉及身份验证和授权机制。 2. **账户管理**:处理开户、销户、查询余额、转账等操作,这部分是银行系统的核心功能。 3. **贷款服务**:处理贷款申请、审批...

    ejb3_structs

    2. **简化持久化**:通过JPA(Java Persistence API)和ORM(对象关系映射),EJB3.0使得数据持久化更为简单,例如使用`@Entity`和`@Table`注解定义实体类,`@Id`指定主键,`@GeneratedValue`自动生成主键值。...

Global site tag (gtag.js) - Google Analytics