1. Trang chủ
  2. » Công Nghệ Thông Tin

Thực hành EJB (Enterprise Java Bean) Lab 5

17 216 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

IT Research Department @BKAP 2015 Page 1 / 17 Lab 05 Singleton Session Beans Mục tiêu - Thao tác với Singleton Session Beans Phần I Bài tập step by step Bài 1 Tạo project EJB với Sin

Trang 1

IT Research Department @BKAP 2015 Page 1 / 17

Lab 05 Singleton Session Beans Mục tiêu

- Thao tác với Singleton Session Beans

Phần I Bài tập step by step

Bài 1

Tạo project EJB với Singleton Session Beans có interface là Remote cho phép đăng ký, đăng nhập User của ChatRoom:

UserChat

Project thực hiện các công việc sau:

- Tạo class UserChat tương ứng với bảng UserChat trong CSDL

- Tạo Singleton Session Bean Remote gồm các phương thức sau:

+ registerUser: Đăng ký User

+ login: Đăng nhập User

Trang 2

Step 1: Tạo Table UserChat trong Database EJB và các procedure thực hiện nghiệp vụ

registerUser, login

 Tạo Database EJB và Table UserChat

Create DataBase EJB

go

USE [EJB]

GO

/****** Object: Table [dbo].[UserChat] Script Date: 6/3/2016 11:31:31 AM ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[UserChat](

[UserID] [int] IDENTITY(1,1) NOT NULL,

[UserName] [nvarchar](50) NOT NULL,

[Password] [nvarchar](50) NOT NULL,

[UCreated] [date] NOT NULL,

[Mail] [nvarchar](50) NULL,

[Address] [nvarchar](100) NULL,

[Phone] [nvarchar](50) NULL,

[StatusLogin] [int] NULL,

CONSTRAINT [PK_EUser] PRIMARY KEY CLUSTERED

(

[UserID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS =

ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

 Tạo Procedure

 checkLogin

USE [EJB]

GO

CREATE PROCEDURE [dbo].[checkLogin]

@userName nvarchar(50),

@password nvarchar(50),

@checkNumber int OUTPUT,

@numberOnline int OUTPUT

AS

BEGIN

SELECT @checkNumber = COUNT(*) FROM UserChat u WHERE u.UserName = @userName and u.Password

= @password

if @checkNumber > 0

BEGIN

UPDATE UserChat

SET StatusLogin = 1;

SELECT @numberOnline = COUNT(*) FROM UserChat u WHERE u.StatusLogin = 1;

END

END

Trang 3

IT Research Department @BKAP 2015 Page 3 / 17

 registerUser

USE [EJB]

GO

CREATE PROCEDURE [dbo].[registerUser]

@userName nvarchar(50),

@password nvarchar(50),

@mail nvarchar(50),

@address nvarchar(100),

@phone nvarchar(50)

AS

BEGIN

DECLARE @date date;

SET @date = GETDATE();

INSERT INTO UserChat

VALUES (@userName,@password,@date,@mail,@address,@phone,0)

END

Step 2: Tạo Project EJB tên Session05 với Session Bean là Singleton - tên S05SingletonBean

và Interface là Remote – tên S05InterfaceRemote (Như đã hướng dẫn ở Lab trước)

Trang 4

 Cấu trúc ứng dụng sau khi hoàn thành

Step 3: Khai báo các phương thức nghiệp vụ trên S05SingletonBeanRemote

S05SingletonBeanRemote.java

package bean;

import javax.ejb.Remote;

/**

*

* @author Quang

*/

@Remote

public interface S05SingletonBeanRemote {

public String registerUser(String userName, String password, String mail, String address, String phone);

public int login(String userName, String password);

}

Step 4: Xây dựng java class DBConnection kết nối với DataBase SQL Server 2012 (Đặt trong

package util)

package util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

/**

*

* @author admin

*/

public class DBConnection {

Trang 5

IT Research Department @BKAP 2015 Page 5 / 17

private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=EJB";

private static final String DB_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";

private static final String user_db = "sa";

private static final String pass_db = "Gacon1984";

public static Connection getDBConnection() {

Connection conn = null;

try {

Class.forName( DB_DRIVER);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

try {

conn = DriverManager.getConnection( URL, user_db, pass_db);

} catch (SQLException ex) {

ex.printStackTrace();

}

return conn;

}

}

Step 5: Thực thi các phương thức nghiệp vụ trên S05SingletonBean

S03_04StatelessBean.java

package bean;

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.Types;

import javax.ejb.Singleton;

import util.DBConnection;

/**

*

* @author Quang

*/

@Singleton

public class S05SingletonBean implements S05SingletonBeanRemote {

@Override

public String registerUser(String userName, String password, String mail, String address, String phone) {

Connection conn = null;

CallableStatement callableStatement = null;

try {

conn = DBConnection.getDBConnection();

String registerUser = "{call registerUser(?,?,?,?,?)}";

callableStatement = conn.prepareCall(registerUser);

callableStatement.setString(1, userName);

callableStatement.setString(2, password);

callableStatement.setString(3, mail);

callableStatement.setString(4, address);

callableStatement.setString(5, password);

callableStatement.executeUpdate();

Trang 6

return "Success";

} catch (Exception e) {

e.printStackTrace();

return "Error";

}

}

@Override

public int login(String userName, String password) {

Connection conn = null;

CallableStatement callableStatement = null;

int check = 0;

int numberOnline = 0;

try {

conn = DBConnection.getDBConnection();

String checkLogin = "{call checkLogin(?,?,?,?)}";

callableStatement = conn.prepareCall(checkLogin);

callableStatement.setString(1, userName);

callableStatement.setString(2, password);

callableStatement.registerOutParameter(3, Types.INTEGER);

callableStatement.registerOutParameter(4, Types.INTEGER);

callableStatement.execute();

check = callableStatement.getInt(3);

numberOnline = callableStatement.getInt(4);

} catch (Exception e) {

e.printStackTrace();

}

if (check > 0) {

return numberOnline;

} else {

return 0;

}

}

}

Step 6: Build and Deploy Project Session05

Step 7: Tạo Project Web Application với Framework là Struts2 làm các client cho User đăng

ký và đăng nhập

Trang 7

IT Research Department @BKAP 2015 Page 7 / 17

Trang 9

IT Research Department @BKAP 2015 Page 9 / 17

Step 8: Tạo Entity Class tên UserChat như table UserChat trong package entities (Có

get,set, constructor)

UserChat.java

package entities;

import java.util.Date;

/**

*

* @author Quang

*/

public class UserChat {

private int userID;

private String userName;

private String password;

private Date uCreated;

private String mail;

private String address;

private String phone;

public UserChat() {

}

public int getUserID() {

return userID;

}

public void setUserID(int userID) {

this.userID = userID;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public Date getuCreated() {

return uCreated;

}

public void setuCreated(Date uCreated) {

this.uCreated = uCreated;

Trang 10

}

public String getMail() {

return mail;

}

public void setMail(String mail) {

this.mail = mail;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public String getPhone() {

return phone;

}

public void setPhone(String phone) {

this.phone = phone;

}

}

Step 9: Tạo css cho roomchat

Chat.css

.content {

width: 600px;

height: 400px;

overflow: auto;

border: 1px solid #991111;

}

.msg-input {

width: 400px;

border: 1px solid #119911;

}

Step 10: Tạo các trang jsp để cho User đăng ký (register.jsp), đăng nhập (login.jsp) và chat

(roomchat.jsp)

 register.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Chat Room Register</title>

</head>

<body>

<h2>User Registration</h2>

< s:form action="register" method="Post">

Trang 11

IT Research Department @BKAP 2015 Page 11 / 17

< s:textfield label="User Name" name="userRegister.userName"/>

< s:password label="Password" name="userRegister.password"/>

< s:textfield label="Mail" name="userRegister.mail"/>

< s:textfield label="Address" name="userRegister.address"/>

< s:textfield label="Phone" name="userRegister.phone"/>

< s:submit value="Register"/>

</ s:form >

</body>

</html>

 login.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Login Room Chat</title>

</head>

<body>

<h2>Login</h2>

< s:form action="login" method="Post">

< s:textfield label="User Name" name="userLogin.userName"/>

< s:password label="Password" name="userLogin.password"/>

< s:submit value="Login"/>

</ s:form >

<a href="register.jsp">Đăng Ký</a>

</body>

</html>

 roomchat.jsp

<%@ page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html>

< c:if test="${userName == null}">

< c:redirect url="login.jsp" />

</ c:if >

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Room Chat Page</title>

<link href="css/chat.css" rel="stylesheet" type="text/css"/>

</head>

<body>

< s:form action="message" method="post">

<div style="color: red">

Your name: <span id="userName">${userName}</span>

-

Number Online: <span id="userName">${numberOnline}</span>

</div>

<div id="content" class="content"></div>

<div>

< s:textarea cssClass="msg-input" name="message" label="Input Text Here"/>

< s:submit value="Send" name="send"/>

Trang 12

</div>

</ s:form >

</body>

</html>

Step 11: Tạo Action Struts 2 thực hiện đăng ký và đăng nhập cho User (gọi qua Enterprise

java Bean S05SingletonBeanRemote)

package action;

import bean.S05SingletonBeanRemote;

import com.opensymphony.xwork2.ActionSupport;

import entities.UserChat;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

/**

*

* @author Quang

*/

public class UserAction extends ActionSupport implements ServletRequestAware{

S05SingletonBeanRemote s05SingletonBean = lookupS05SingletonBeanRemote();

private UserChat userRegister;

private UserChat userLogin;

private HttpServletRequest request;

public UserAction() {

userRegister = new UserChat();

userLogin = new UserChat();

}

public String register() {

String result = null;

try {

result = s05SingletonBean.registerUser(userRegister.getUserName(), userRegister.getPassword(),

userRegister.getMail(), userRegister.getAddress(), userRegister.getPhone());

if (result.equals("Success")) {

return SUCCESS;

}

return ERROR;

} catch (Exception e) {

e.printStackTrace();

return ERROR;

}

}

public String login(){

int numberOnline = 0;

try {

numberOnline = s05SingletonBean.login(userLogin.getUserName(), userLogin.getPassword());

if (numberOnline>0) {

request.getSession().setAttribute("userName", userLogin.getUserName());

Trang 13

IT Research Department @BKAP 2015 Page 13 / 17

request.getSession().setAttribute("numberOnline", numberOnline);

return SUCCESS;

}

return ERROR;

} catch (Exception e) {

e.printStackTrace();

return ERROR;

}

}

private S05SingletonBeanRemote lookupS05SingletonBeanRemote() {

try {

Context c = new InitialContext();

return (S05SingletonBeanRemote) c.lookup(

"java:global/Session05/Session05-ejb/S05SingletonBean!bean.S05SingletonBeanRemote");

} catch (NamingException ne) {

Logger.getLogger(getClass().getName()).log(Level SEVERE, "exception caught", ne);

throw new RuntimeException(ne);

}

}

public UserChat getUserRegister() {

return userRegister;

}

public void setUserRegister(UserChat userRegister) {

this.userRegister = userRegister;

}

public UserChat getUserLogin() {

return userLogin;

}

public void setUserLogin(UserChat userLogin) {

this.userLogin = userLogin;

}

public HttpServletRequest getRequest() {

return request;

}

public void setRequest(HttpServletRequest request) {

this.request = request;

}

@Override

public void setServletRequest(HttpServletRequest hsr) {

this.request = hsr;

}

}

Step 12: Khai báo struts.xml

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

Trang 14

<struts>

<! Configuration for the default package >

<package name="default" extends="struts-default">

<action name="register" class="action.UserAction" method="register">

<result name="input">register.jsp</result>

<result name="success">login.jsp</result>

<result name="error">register.jsp</result>

</action>

<action name="login" class="action.UserAction" method="login">

<result name="success">roomChat.jsp</result>

<result name="error">login.jsp</result>

</action>

</package>

</struts>

 Cấu trúc Project sau khi hoàn thành

Ngày đăng: 07/05/2018, 16:30

TỪ KHÓA LIÊN QUAN

w