Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распределенные сервис-ориентированные системы..pdf
Скачиваний:
16
Добавлен:
05.02.2023
Размер:
9.2 Mб
Скачать

в) задачи отображения меню работ, представленная файлом Web-ре-сурса menus3.xhtml и компонентом-подложкой Menus3.

Последующие пункты демонстрируют решение этих задач.

Браузер

клиента

<Web-ресурс>

 

<Web-ресурс>

 

<Web-ресурс>

auth3.xhtml

 

subheader3.xhtml

 

menus3.xhtml

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<Запрос>

 

<Запрос>

 

<Запрос>

Auth3.class

 

SubHeader3.class

 

Menus3.class

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<Сессия>

 

 

 

 

 

 

RSOS.class

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<Приложение>

 

 

 

 

 

 

Users.class

 

 

 

Рисунок 2.26 — Схема взаимодействия браузера и компонент-подложек JSF проекта labs

2.4.5 Приложение авторизации пользователя

Функциональность задачи авторизации пользователя обеспечивается CDI-компонентом Auth3 с ЖЦ @RequestScoped.

Решение задачи авторизации обеспечивается тремя объектными приватными данными: инекцией CDI-компоненты RSOS (rsos) и двумя строковыми переменными (user и password). Ее непосредственная функциональность обеспечивается двумя методами:

а) String loginAuth() — авторизация по имени и паролю пользователя с последующим переходом на заданный Web-ресурс;

б) String logoutAuth() — сброс результата авторизации с последующим переходом на заданный Web-ресурс.

Результат реализации Auth3 представлен на листинге 2.21.

110

Листинг 2.21 — Исходный текст класса Auth3.java проекта labs

package asu.rsos;

import javax.annotation.PostConstruct;

import javax.enterprise.context.RequestScoped; import javax.inject.Inject;

import javax.inject.Named;

@Named

@RequestScoped public

class Auth3

{

/**

* Инъекция объекта класса RSOS */

@Inject

private RSOS rsos;

//Атрибут имени пользователя private String user = "";

//Атрибут пароля пользователя private String password = "";

/** * Пустой конструктор */

public Auth3() {}

//Для демонстрации @PostConstruct private void test() {

System.out.println("Объект класса Auth3 - стартовал...");

}

//Стандартная обработка атрибутов

public String getUser()

{

System.out.println("Auth3: getUser() = " + user); return user;

}

public void setUser(String user)

{

System.out.println("Auth3: setUser() = " + user); this.user = user;

}

public String getPassword() {return password;}

public void setPassword(String password) {this.password = password;}

/** * Метод проведения авторизации и

111

* переход на нужный ресурс */

public String loginAuth()

{

rsos.loginRSOS(user, password); user = rsos.getUser();

if(user == null || rsos.getWork() == null) return "default";

// Запускаем ресурс работы String ss = rsos.getXHTML(); if(ss == null) return "default"; return ss;

}

/**

*Метод сброса результата авторизации и

*переход на нужный ресурс

*/

public String logoutAuth()

{

rsos.logoutRSOS(); user = null;

return "default";

}

}

За отображение задачи авторизации отвечает Web-ресурс auth3.xhtml, переопределяющий шаблон lab3Templ.xhtml с именем "context".

Заявленный Web-ресурс полностью опирается на функциональность своей компоненты-подложки и содержит: поля ввода имени и пароля пользователя, а также кнопку запроса, представленные на листинге 2.22. Результат разработки этого приложения представлен на рисунке 2.27.

Листинг 2.22 — Исходный текст файла auth3.xhtml проекта labs

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://xmlns.jcp.org/jsf/facelets" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core" xml:lang="ru">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Приложение auth3</title>

</head>

<body>

<ui:composition template="/WEB-INF/templates/lab3Templ.xhtml"> <ui:define name="context">

<div style="color:black; width:100%; padding:10px">

112

<b>Авторизация пользователя</b> <hr/>

<h:form>

<h:panelGrid columns="2">

<h:outputText value="Имя:"></h:outputText> <h:inputText value="#{auth3.user}"/> <h:outputText value="Пароль:"></h:outputText>

<h:inputSecret value="#{auth3.password}"></h:inputSecret> </h:panelGrid>

<h:commandButton value="Авторизация" action="#{auth3.loginAuth()}"></h:commandButton>

<h:commandButton value="Отказаться" action="#{auth3.loginAuth()}"></h:commandButton>

</h:form> </div> </ui:define>

</ui:composition> </body>

</html>

Рисунок 2.27 — Результат разработки приложения авторизации пользователя

113