Методическое указание к лабораторной работе «Создание корпоративного JAVA-приложения для IBM WebSphere» 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методическое указание к лабораторной работе «Создание корпоративного JAVA-приложения для IBM WebSphere»



Методическое указание к лабораторной работе «Создание корпоративного JAVA-приложения для IBM WebSphere»

Многочисленные организации заняты созданием корпоративных Web-приложений, используя архитектуру на основе Web-сервера. Данная архитектура имеет преимущества в скорости, защищённости и надёжности, обеспечиваемые серверными технологиями, и используется тогда, когда часть клиентов представляет многочисленный и заранее неопределённый круг пользователей, на компьютерах которых нельзя установить приложения.

Платформа J2EE (Java 2 Enterprise Edition) предлагает модель многоуровневого распределенного приложения, возможность повторного использования компонентов, интегрированный обмен данными на основе XML, унифицированную модель безопасности и гибкое управление транзакциями.

Распределенные многоуровневые приложения

Платформа J2EE использует модель многоуровневого распределенного приложения. Логически приложение разделено на компоненты в соответствии с их функциональностью. Различные компоненты, составляющие J2EE-приложение, установлены на различных компьютерах в зависимости от их уровня в многоуровневой среде J2EE, которой данный компонент принадлежит. На рис.1 представлены два J2EE-приложения, разделенные на уровни, перечисленные в следующем списке. Части J2EE-приложения, показанные на рис.1, представлены в разделе "J2EE -компоненты".

  • Компоненты клиентского уровня работают на клиентской машине.
  • Компоненты Web-уровня работают на J2EE-сервере.
  • Компоненты бизнес-уровня работают на J2EE-сервере.
  • Программное обеспечение уровня корпоративной информационной системы (EIS) работает на EIS-сервере.

Хотя J2EE-приложение состоит из трех или четырех уровней, показанных на рис.1, многоуровневые J2EE-приложения обычно принято называть трехуровневыми, т.к. они расположены на трех различных системах: клиентский компьютер, сервер J2EE и сервер базы данных или обычный сервер. Трехуровневые приложения, работающие данным способом, расширяют стандартную архитектуру клиент-сервер, добавляя многопоточный сервер приложений между клиентской частью и сервером базы данных.

 

Рис.1. Многоуровневые приложения

 

J2EE-компоненты

J2EE-приложения состоят из компонентов. J2EE-компонента представляет собой законченный функциональный программный модуль, встроенный в приложение J2EE с соответствующими классами и файлами и взаимодействующий с другими компонентами. J2EE-спецификация определяет следующие J2EE-компоненты:

 

· клиентские приложения – это компоненты, работающие на клиентской машине;

· компоненты технологии Java-сервлет и JavaServer Pages (JSP) – это Web-компоненты, работающие на сервере;

· корпоративные компоненты – это бизнес-компоненты, работающие на сервере.

 

J2EE-компоненты пишутся на языке программирования Java и компилируются точно так же, как и любая другая Java-программа. Отличием между J2EE-компонентами и "стандартными" классами Java является то, что J2EE-компоненты собираются в J2EE-приложение, находящееся в строгом соответствии со спецификацией J2EE, развернутое для функционирования в соответствующем месте и управляемое сервером J2EE.

Для обеспечения удалённого программного взаимодействия необходимы соответствующие протоколы Middle Ware. Для доступа к БД из Java-приложения используется MW JDBC

J2EE-клиенты

J2EE-клиентом может быть Web-клиент или клиент приложения.

Web-клиенты

Web-клиент (пользовательский интерфейс) состоит из двух частей: динамические Web-страницы, написанные на языках разметки различного типа (HTML, XML и т.д.), генерируемые Web-компонентами на Web-уровне, и Web-браузер, визуализирующий полученные от сервера страницы.

Web-клиент иногда называют тонким клиентом. Тонкие клиенты обычно не выполняют таких функций как запрос к базе данных, реализация сложных бизнес-правил или связь с серверными приложениями. При использовании тонкого клиента подобные полновесные операции переносятся на корпоративные компоненты, выполняющиеся на J2EE-сервере и использующие безопасность, скорость, сервисы и надежность J2EE-серверных технологий.

Клиенты приложения

Клиент J2EE-приложения работает на клиентской машине и обеспечивает пользователей возможностью работать с задачами, требующими более богатого пользовательского интерфейса, чем тот, который предоставлен языками разметки страниц. Они обычно имеют графический пользовательский интерфейс, созданный при помощи Swing или AWT API, хотя, безусловно, возможен и интерфейс командной строки.

Клиенты приложения имеют непосредственный доступ к корпоративным компонентам, исполняющимся на бизнес-уровне. Тем не менее, клиент приложения J2EE может открыть HTTP соединение для коммуникации с сервлетом, работающим на Web-уровне, если существуют такие требования к приложению.

 

Web-компоненты

J2EE Web-компоненты могут быть либо сервлетами, либо страницами JSP.

Сервлеты - это классы языка Java, которые динамически управляют запросами и конструируют ответы.

JSP-страницы являются текстовыми документами, которые исполняются так же, как и сервлеты, но предлагают более естественный подход к созданию статического содержания.

Так же как и клиентский уровень, Web-уровень, показанный на рис.2, может включать в себя компонент JavaBeans для управления вводом пользователя и направления этого ввода в работающий на бизнес-уровне корпоративный компонент для обработки.


Рис.2. Web-уровень и J2EE-приложение

 

Бизнес-компоненты

Бизнес-код, который является логикой, решающей задачи непосредственно бизнес-области, такой как банк, розничная торговля или ж.д. транспорт, управляется корпоративными компонентами, выполняющимися на бизнес-уровне. На рис.3. показано, как корпоративный компонент получает данные от клиентской программы, обрабатывает их (при необходимости) и посылает их на уровень корпоративной информационной системы для хранения. Корпоративный компонент также извлекает данные из хранилища, обрабатывает (если необходимо) и посылает обратно в клиентскую программу.


Рис.3. Бизнес- и EIS-уровень

Существует три типа корпоративных компонентов:

· сессионные компоненты - представляют кратковременное общение с клиентом. Когда клиент заканчивает работу, сессионный компонент и его данные исчезают;

· компоненты управления данными - представляют постоянные данные, хранимые в одной строке таблицы базы данных. Если клиент завершает работу или сервер выключается, встроенный сервис гарантирует, что данные такого компонента будут сохранены;

· управляемые сообщениями компоненты - комбинируют особенности сессионного компонента и JMS (службы сообщений Java) приемника сообщений, позволяя бизнес-компоненту получать сообщения JMS асинхронно.

В данной лабораторной работе мы будем использовать сессионные компоненты и компоненты управления данными.

Рис.4. Использование JDBC

Java Database Connectivity (JDBC)

JDBC определяет набор объектов и методов для взаимодействия с БД.

7 шагов обращения к БД:

1) загрузка JDBC Driver - необходимо загрузить класс Java SQL Driver. JDBC Driver транслирует вызовы, написанные на Java в особый формат, необходимый для работы сервера БД;

2) определение адреса для установления соединения – после загрузки драйвера необходимо задать месторасположение БД (адреса URL, ссылающиеся на БД, используют протокол TCP);

3) установление соединения – передача имени пользователя БД, выполнение метода getConnection();

4) создание объекта statement для пересылки запросов и команд к БД;

5) выполнение запроса или обновление БД – использование метода executeQuery(), возвращающего объект типа ResultSet; Для внесения изменений в БД вместо executeQuery() используется метод executeUpdate();

6) обработка результата – построчная обработка методом next(), позволяющий каждый раз обращаться к следующей строке таблицы;

7) закрытие соединения – выполнение команды close();

 

Что делает сервлет?

Когда вы работаете с интерактивным Web-сайтом, все, что вы видите, отображается в браузере. За кулисами процесса Web-сервер принимает от вас запросы во время сессии, возможно, передает их в другой код (возможно, другим серверам) для обработки запроса и обращения к данным, а также генерирует результаты для отображения в браузере.

Сервлет - это диспетчер процесса. Он находится на Web-сервере и обрабатывает входящие запросы и исходящие ответы.

 

WebSphere Studio Application Developer (WSAD)

WSAD – коллекция инструментов для предоставления автоматизированного рабочего места, приспособленного для разработки приложений на основе J2EE.

 


Цель лабораторной работы:

· изучение технологии распределённых многоуровневых корпоративных приложений;

· создание приложения, позволяющего по выбору государства предоставлять информацию по соответствующим дорогам.

Ход лабораторной работы:

1) Откройте WebSphere Application Developer, выбрав в меню Пуск – Все программы – IBM Rational Developer Platform – IBM Rational Application Developer – IBM Rational Application Developer

 

2) По умолчанию отображается перспектива Resource. Перспектива определяет первоначальный набор и схему видов в рабочей среде (Workbench). Каждая перспектива предоставляет набор функциональностей, нацеленных на выполнение конкретного типа задач или работ с ресурсами конкретного типа. В данном случае мы собираемся работать с JEE-ресурсами. Перейдите в перспективу JEE.

  1. В панели инструментов выберите Windows > Open Perspective > Other > JEE.
  2. Нажмите кнопку OK. Отобразится перспектива JEE:


Интерфейс разработчика

Окно просмотра структуры позволяет просматривать Web-проект в виде дерева с его составляющими классами

Область выбора перспектив

 

Область работы с серверами – позволяет запускать (start), останавливать (stop), перезапускать (publishing) или же запускать в режиме отладки (debugging)

Рабочая область – область написания кода программы

 

3) Работа с базой данных db2

Откройте WebSphere Application Developer, выбрав в меню Пуск – Все программы – IBM DB2 – DB2COPY1(по умолчанию) – Общие инструменты управления – Центр управления

 

 

Интерфейс разработчика

Окно объектов – позволяет просматривать в виде структуры дерева «Все системы» и «Все базы данных»

 

Редактор команд – позволяет вводить запросы к системе

 

4) В окне объектов выберите базу данных SAMPLE, нажмите на ссылку «Запрос».

5) Используя содержимое файла database.txt выполните операции по созданию и заполнению следующих таблиц:

 

 

GOS (ГОСУДАРСТВО)
Название столбца Тип столбца Описание столбца
KODGOS CHAR (2) код страны (2 цифры)
DATAN DATE дата начала
DATAK DATE дата окончания
SNAZVG CHAR(10) сокращённое наименование государства
SNAZVNDE CHAR(10) сокращённое название нац. валюты
NAZVG CHAR(30) название страны
NAZVNDE CHAR(20) полное название нац. валюты
DOR (ДОРОГА)
KODD CHAR(5) КОД ДОРОГИ
DATAND DATE ДАТА НАЧАЛА
DATAKD DATE ДАТА ОКОНЧАНИЯ
VC CHAR(5) ШИФР ВЦ
KODG CHAR(5) КОД ГОСУДАРСТВА
SNAZVD CHAR(10) СОКРАЩЁННОЕ НАЗВАНИЕ ДОРОГИ
NAZVD CHAR(30) НАЗВАНИЕ ДОРОГИ
CHASRAZ DEC(1) ОТЛИЧИЕ ЧАСОВОГО ПОЯСА ОТ МОСКВЫ
PR_NYAZ CHAR(5) НАЦИОНАЛЬНЫЙ ЯЗЫК
NAZVRD CHAR(30) НАЗВАНИЕ РЕГИОНАЛЬНОЙ ДИРЕКЦИИ
VC (ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР)
VC_VID INTEGER ВНУТРЕННИЙ ИДЕНТИФИКАТОР ВЦ
VC_DATAN DATE ДАТА НАЧАЛА ДЕЙСТВИЯ
VC_DATAK DATE ДАТА ОКОНЧАНИЯ ДЕЙСТВИЯ
VC_KODVC CHAR(5) КОД ВЦ
VC_VIDGOS INTEGER ВНУТРЕННИЙ ИДЕНТИФИКАТОР ГОСУДАРСТВА
VC_VIDSTVC INTEGER ВНУТРЕННИЙ ИДЕНТИФИКАТОР СТАНЦИИ
VC_NAMES CHAR(20) СОКРАЩЁННОЕ НАИМЕНОВАНИЕ ВЦ
VC_PRGVR CHAR(5) ПРИЗНАК ГЛАВНОГО ВЦ
SOBPER (СОБСТВЕННИКИ - ПЕРЕВОЗЧИКИ)
SKP SMALLINT СЕТЕВОЙ КОД ПЕРЕВОЗЧИКА
NOMP CHAR(5) НОМЕР ПЕРЕВОЗЧИКА
MNKODP CHAR(15) МНЕМОКОД ПЕРЕВОЗЧИКА
DATANO DATE НАЧАЛЬНАЯ ДАТА ОТПРАВЛЕНИЯ
DATAKO DATE КОНЕЧНАЯ ДАТА ОТПРАВЛЕНИЯ
GOS CHAR(5) КОД ГОСУДАРСТВА
DOR CHAR(5) ШИФР ДОРОГИ
NAZVP CHAR(30) НАЗВАНИЕ ПЕРЕВОЗЧИКА
NAZVD CHAR(64) ДЛИННОЕ НАЗВАНИЕ ПЕРЕВОЗЧИКА
PRFIL CHAR(5) ПРИЗНАК ФИЛИАЛА
PRDK CHAR(5) ПРИЗНАК ДОЧЕРНЕЙ КОМПАНИИ
PRPP CHAR(5) ПРИЗНАК ПРИГОРОДНОГО ПЕРЕВОЗЧИКА
SKP SMALLINT СЕТЕВОЙ КОД ПЕРЕВОЗЧИКА

 


Page1.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@page language="java" contentType="text/html; charset=Windows-1251"

pageEncoding="Windows-1251"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html:html>

<head>

<title>Лабораторная работа</title>

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

<meta name="GENERATOR" content="Rational Application Developer">

</head>

<script language="JavaScript">

function doShowPageGos(){

location.href="selectgos.do";

return true;

}

</script>

<body bgcolor="silver">

<h1 style="font-style: italic" align="center"><font color="navy">Создание

корпоративного JAVA-приложения</font></h1>

<p>

<button onclick="return doShowPageGos()" style="background-color: #e0e0e0">Лабораторная работа №1</button>

</p>

<font color="navy" size="4" face="Arial"><i> Выполнил: ФИО</i> </font>

</body>

</html:html>

 

LabForm.java

package lab.forms;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

import java.io.UnsupportedEncodingException;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

public class LabForm extends ActionForm {

private Collection goss = null;

private String gos =null;

public Collection getGoss(){

return goss;

}

public void setGoss(Collection goss) {

this.goss = goss;

}

public String getGos() {

return gos;

}

public void setGos(String g) {

try {

this.gos = new String(g.getBytes("ISO-8859-1"),"CP1251");

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//---RESET Function---------

public void reset(ActionMapping mapping, HttpServletRequest request){

HttpSession session=request.getSession();

if (session.getAttribute("attrGoss")!=null){

setGoss((Collection)session.getAttribute("attrGoss"));

}

gos=null;

}

}

Функция reset() вводится для сброса значений или получения значений параметров из сессии на форме сервлета.

 

2) Создайте в пакете lab.actions класс SelectGos.java – класс(action-class), выполняющий запрос к БД о формировании списка существующих государств:

 

SelectGos.java

package lab.action;

//подключение JAVA библиотек

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import lab.classes.JDBCConnection;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.util.LabelValueBean;

 

public class SelectGos extends Action{

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws SQLException, Exception {

JDBCConnection jdbcConnection = new JDBCConnection();

ActionErrors errors = new ActionErrors();

ActionForward forward = new ActionForward();

 

Connection connec = null;

PreparedStatement pstmt_gos = null;

ResultSet rs_gos = null;

 

HttpSession session = request.getSession(false);

session = request.getSession(true);

try {

//установление связи с БД

jdbcConnection.setDSConnection("java:comp/env/DataSourceRef");

connec = jdbcConnection.getConnection();

 

//формирование запроса к БД

String query_gos = "SELECT A.KODGOS, A.NAZVG FROM DB2ADMIN.GOS A " +

" WHERE A.DATAN<=CURRENT_DATE AND A.DATAK>=CURRENT_DATE ";

query_gos += " ORDER BY A.KODGOS ";

//отправка и выполнение запроса к БД

pstmt_gos = connec.prepareStatement(query_gos);

rs_gos = pstmt_gos.executeQuery();

ArrayList goss = new ArrayList();

while (rs_gos.next()) {

goss.add(new LabelValueBean(rs_gos.getString(1).trim() + " "

+ rs_gos.getString(2).trim(), rs_gos.getString(1).trim() + "--"

+ rs_gos.getString(2).trim()));

}

rs_gos.close();

pstmt_gos.close();

//========session============

session.setAttribute("attrGoss", goss);

}

catch (SQLException e) {

 

// Report the error using the appropriate name and ID.

errors.add("errorDB2", new ActionError("error.errorDB2", e

.getMessage()));

// throw e;

 

}

catch (Exception e) {

 

// Report the error using the appropriate name and ID.

if (errors.isEmpty())

errors.add("Exception", new ActionError("error.Exception", e

.getMessage()));

}

finally {

try {

if (rs_gos!= null) {

rs_gos.close();

}

if (pstmt_gos!= null) {

pstmt_gos.close();

}

 

if (jdbcConnection.getConnection()!= null)

jdbcConnection.releaseConnection();

}

catch (SQLException e1) {

if (rs_gos!= null) {

rs_gos.close();

}

if (pstmt_gos!= null) {

pstmt_gos.close();

}

throw e1;

}

}

if (!errors.isEmpty()) {

saveErrors(request, errors);

forward = mapping.findForward("failure");

} else {

forward = mapping.findForward("success");

}

// Finish with

return (forward);

}

}

3) Результатом работы action-класса будет параметр forward, принимающий значения:

failure – для формирования страницы с ошибкой (error.jsp);

success – для формирования страницы с результатом(showGos.jsp).

 

Error.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ page isErrorPage="true" %>

<html:html>

<HEAD>

<%@ page

language="java"

contentType="text/html; charset=CP1251"

pageEncoding="CP1251"

%>

<META http-equiv="Content-Type" content="text/html; charset=Windows-1251">

<META name="GENERATOR" content="IBM WebSphere Studio">

<META http-equiv="Content-Style-Type" content="text/css">

<LINK href="theme/Master.css" rel="stylesheet"

type="text/css">

<TITLE>Лабораторная работа: Ошибка</TITLE>

</HEAD>

<% if (session== null){ %>

<logic:forward name="noSession"/>

<% } %>

<BODY>

<html:errors/>

<ul>

<% if (exception!= null){%>

<%= exception.getMessage()

%>

<% } %>

</ul>

<a href="javascript:history.back()">Вернуться назад</a>

</body>

</html:html>

 

ShowGos.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@page language="java" contentType="text/html; charset=Windows-1251"

pageEncoding="Windows-1251"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html:html>

<head>

<title>Лабораторная работа</title>

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

<meta name="GENERATOR" content="Rational Application Developer">

</head>

<script language="JavaScript">

function doShowPageDor(thisform){

thisform.submit();

return true;

}

</script>

<body bgcolor="silver">

<h1 style="font-style: italic" align="center"><font color="navy">Выдача информации о дорогах по государствам</font></h1>

<html:form action="/selectdor">

Государство:&nbsp; <html:select property="gos">

<html:optionsCollection property="goss" />

</html:select>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<html:submit value="Выполнить запрос" onclick="return doShowPageDor(this.form)" style="background-color: #e0e0e0"/>

</html:form>

</body>

</html:html>

 

ShowClass.java

package lab.classes;

public class ShowClass {

private String gos= null;

private String kodd = null;

private String vc = null;

private String vc_names = null;

private String kodg = null;

private String snazvd = null;

private String nazvd = null;

public String getUst() {

return gos;

}

public void setgos(String gos) {

this. gos = gos;

}

public String getKodd() {

return kodd;

}

public void setKodd(String kodd) {

this. kodd = kodd;

}

public String getKodg() {

return kodg;

}

public void setKodg(String kodg) {

this. kodg = kodg;

}

public String getNazvd() {

return nazvd;

}

public void setNazvd(String nazvd) {

this. nazvd = nazvd;

}

public String getSnazvd() {

return snazvd;

}

public void setSnazvd(String snazvd) {

this. snazvd = snazvd;

}

public String getVc() {

return vc;

}

public void setVc(String vc) {

this. vc = vc;

}

public String getVc_names() {

return vc_names;

}

public void setVc_names(String vc_names) {

this. vc_names = vc_names;

}

}

 

2) Обработку запроса по выдаче информации по дороге будет производить класс SelectDor.java в папке lab.actions

 

SelectDor.java

package lab.actions;

 

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

import lab.classes.JDBCConnection;

import lab.classes.ShowClass;

 

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.util.LabelValueBean;

 

 

import lab.forms.LabForm;

 

public class SelectDor extends Action{

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws SQLException, Exception {

LabForm labForm = (LabForm) form;

JDBCConnection jdbcConnection = new JDBCConnection();

ActionErrors errors = new ActionErrors();

ActionForward forward = new ActionForward();

Connection connec = null;

PreparedStatement pstmt_dor = null;

ResultSet rs_dor = null;

ShowClass sc;

ArrayList tableRows = new ArrayList();

HttpSession session = request.getSession(false);

try {

jdbcConnection.setDSConnection("java:comp/env/DataSourceRef");

connec = jdbcConnection.getConnection();

String gos = labForm.getGos();

String [] temp = null;

temp = gos.split("--");

gos = temp[0];

//=============SelectGos==========

String query_dor = "SELECT A.KODD, A.KODG, A.NAZVD, A.SNAZVD, A.VC, B.VC_NAMES " +

" FROM DB2ADMIN.DOR A, DB2ADMIN.VC B WHERE "+

" A.VC=B.VC_KODVC AND A.KODG =? ";

query_dor += " ORDER BY A.KODD ";

pstmt_dor = connec.prepareStatement(query_dor);

pstmt_dor.setString(1,gos);

rs_dor= pstmt_dor.executeQuery();

 

while (rs_dor.next()) {

sc = new ShowClass();

sc.setKodd(rs_dor.getString(1));

sc.setKodg(rs_dor.getString(2));

sc.setNazvd(rs_dor.getString(3));

sc.setSnazvd(rs_dor.getString(4));

sc.setVc(rs_dor.getString(5));

sc.setVc_names(rs_dor.getString(6));

tableRows.add(sc);

}

rs_dor.close();

pstmt_dor.close();

//========session============

 

session.setAttribute("tableRows", tableRows);

 

}

catch (SQLException e) {

 

// Report the error using the appropriate name and ID.

errors.add("errorDB2", new ActionError("error.errorDB2", e

.getMessage()));

// throw e;

 

}

catch (Exception e) {

 

// Report the error using the appropriate name and ID.

if (errors.isEmpty())

errors.add("Exception", new ActionError("error.Exception", e

.getMessage()));

}

finally {

try {

if (rs_dor!= null) {

rs_dor.close();

}

if (pstmt_dor!= null) {

pstmt_dor.close();

}

 

if (jdbcConnection.getConnection()!= null)

jdbcConnection.releaseConnection();

}

catch (SQLException e1) {

if (rs_dor!= null) {

rs_dor.close();

}

if (pstmt_dor!= null) {

pstmt_dor.close();

}

throw e1;

}

}

if (!errors.isEmpty()) {

saveErrors(request, errors);

forward = mapping.findForward("failure");

} else {

forward = mapping.findForward("success");

}

// Finish with

return (forward);

 

}

 

}

 

3) Вывод конечной информации по дороге будет обеспечивать showDor.jsp

 

ShowDor.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<%@page language="java" contentType="text/html; charset=Windows-1251"

pageEncoding="Windows-1251"%>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>

<html:html>

<head>

<title>Лабораторная работа</title>

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

<meta name="GENERATOR" content="Rational Application Developer">

</head>

<script language="JavaScript">

function doShowPageDor(thisform){

thisform.submit();

return true;

}

</script>

<body bgcolor="silver">

<h1 style="font-style: italic" align="center"><font color="navy">Информация о дорогах по государствам</font></h1>

<html:form action="/selectdor">

Государство:&nbsp; <html:select property="gos">

<html:optionsCollection property="goss" />

</html:select>

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<html:submit value="Выполнить запрос" onclick="return doShowPageDor(this.form)" style="background-color: #e0e0e0"/>

 

<br><br>

<Table border="1" class="table" width="50%" cellpadding="2" cellspacing="0" bordercolor="#0c91f0" >

<tr>

<th class="" align="center" style="font-size:10pt" >Код дороги</th>

<th class="" align="center" style="font-size:10pt" >Код государства</th>

<th class="" align="center" style="font-size:10pt" >Сокращённое название дороги</th>

<th class="" align="center" style="font-size:10pt" >Название дороги</th>

<th class="" align="center" style="font-size:10pt" >Код ВЦ</th>

<th class="" align="center" style="font-size:10pt" >Сокращённое название ВЦ</th>

</tr>

<logic:iterate id="tableRow" name="tableRows" >

<tr>

<TD nowrap="nowrap"><bean:write name="tableRow" property="kodd"></bean:write>&nbsp;</TD>

<TD nowrap="nowrap"><bean:write name="tableRow" property="kodg"></bean:write>&nbsp;</TD>

<TD nowrap="nowrap"><bean:write name="tableRow" property="snazvd"></bean:write>&nbsp;</TD>

<TD nowrap="nowrap"><bean:write name="tableRow" property="nazvd"></bean:write>&nbsp;</TD>

<TD nowrap="nowrap"><bean:write name="tableRow" property="vc"></bean:write>&nbsp;</TD>

<TD nowrap="nowrap"><bean:write name="tableRow" property="vc_names"></bean:write>&nbsp;</TD>

</tr>

</logic:iterate>

</Table>

</html:form>

</body>

</html:html>

 

4) В сервлете-действии нужно создать соответствующий объект-действие для обработки входящего запроса. К тому же в модели должно быть известно, какие ActionForm заполнять данными из входного потока. Эти и другие свойства конфигурации устанавливаются в файле struts-config.xml в папке WEB-INF проекта.

 

Struts-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

<struts-config>

 

<!-- Data Sources -->

<data-sources>

</data-sources>

 

<!-- Form Beans -->

<form-beans>

<form-bean name="LabForm" type="lab.forms.LabForm">

</form-bean>

</form-beans>

 

<!-- Global Exceptions -->

<global-exceptions>

</global-exceptions>

 

<!-- Global Forwards -->

<global-forwards>

</global-forwards>

 

<!-- Action Mappings -->

<action-mappings>

 

<action path="/selectgos" type="lab.actions.SelectGos" name="LabForm">

<forward name="success" path="/showGos.jsp"></forward>

<forward name="failure" path="/error.jsp"></forward>

</action>

 

<action path="/selectdor" type="lab.actions.SelectDor" name="LabForm">

<forward name="success" path="/showDor.jsp"></forward>

<forward name="failure" path="/error.jsp"></forward>

</action>

 

</action-mappings>

 

<!-- Message Resources -->

<message-resources parameter="lab.resources.ApplicationResources"/>

 

</struts-config>

 

 

Запуск приложения

1) Для запуска корпоративного приложения lab необходимо добавить labEAR в WebSphere Application Developer v6.0 (Add and Remove Projects). В окне Add and Remove Project в области Available projects необходимо выделить labEAR и нажать на кнопку «Add», после чего оно перейдёт в область Configured project.

 

9) Запустите WebSphere Application Server v6.0 используя кнопку «start»

10) Запустите браузер Internet Explorer и введите следующий адрес http://localhost:9080/lab

11) НаслаждайтесьJ

 

 

Методическое указание к лабораторной работе «Создание корпоративного JAVA-приложения для IBM WebSphere»

Многочисленные организации заняты созданием корпоративных Web-приложений, используя архитектуру на основе Web-сервера. Данная архитектура имеет преимущества в скорости, защищённости и надёжности, обеспечиваемые серверными технологиями, и используется тогда, когда часть клиентов представляет многочисленный и заранее неопределённый круг пользователей, на компьютерах которых нельзя установить приложения.

Платформа J2EE (Java 2 Enterprise Edition) предлагает модель многоуровневого распределенного приложения, возможность повторного использования компонентов, интегрированный обмен данными на основе XML, унифицированную модель безопасности и гибкое управление транзакциями.



Поделиться:


Последнее изменение этой страницы: 2019-04-27; просмотров: 204; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.190.217.134 (0.48 с.)