Вы находитесь на странице: 1из 16

Auth.employee.xml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Говорим браузеру как себя вести с документом «!DOCTYPE html PUBLIC» тип документа html «XHTML 1.0» написан на языке XHTML 1.0 «Transitional» переходный синтаксис XHTML 1.0 (допускает ошибки в написании, которые не повлияю на вид страницы) «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd» файл со спецификациями лежит по данному адресу

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui"

>

С элемента <html> начинается документ заканчивается он с того же элемента с закрытым тегом </html> Подгрузка библиотек при помощи которых создаётся интерфейс «xmlns="http://www.w3.org/1999/xhtml"» Библиотека XHTML «xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"» подключаемая библиотека отвечающая за теги JSF HTML и JSF «xmlns:p="http://primefaces.org/ui"» подключение библиотек PrimeFaces h, f и p будут встречаться и дальше обозначая какой тег относится к какой библиотеке(например <h:head>)

<h:head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>XHTML Page</title> </h:head> <h:head> блок заголовка, в нём <title> определяет заголовок веб-страницы

заголовок веб - страницы <meta http-equiv="Content-Type"

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> указываем что в этом мета(meta) теге мы будем заниматься Content-Type - типом содержания Content="text/html; - а именно его текстом charset=UTF-8 указывается тип кодировки

<h:body> <h:outputStylesheet library="CSS" name="style.css" /> <f:view> <h:body> Тело документа предназначено для размещения тегов и содержательной части веб-страницы <h:outputStylesheet library="CSS" name="style.css" /> Подключение внешнего CSS файла для стиля страницы

<h:form id="login_auth"> h:form форма, предназначена для получения водимых данных id предназначен для обрушения к данной конкретно форме(например из css файла) <p:layout fullPage="true" resizeTitle="resize"> layout макет который может разбиваться на уровни fullPage="true" Атрибут который задаёт развертывание макета layout на всё страницу.

<p:layoutUnit position="center" styleClass="p_pgrid-style" style="font-size: 100%; text-align: center; " header="КРАУДСОРСИНГОВАЯ ПЛАТФОРМА MEPHORCE" > Создаётся уровень элемента по центру с текстом

<p:growl id="growl" showDetail="false" sticky="false" life="5000"/> Growl слой поверх(появляющееся окошко с сообщением или в данном в случае с ошибкой ввода) Life время жизни окошка

<table width="100%" height="100%" > <tr> <td> Параметры таблицы развертывание на полную величину по длинне и высоте <tr> служит контейнером для создания строки таблицы <td> наполнение ячейки

<p:panelGrid columns="2" styleClass="noBorders p_pgrid-style" > Создание таблицы при помощи праймфейса Количество колонок 2 Стиль-невидимые границы таблицы Остальной прописывается в p_pgrid-style в css

<f:facet name="header">Авторизация исполнителя</f:facet> Ячейки в строке объединены Текст которая выводится в данной строчке Авторизация исполнителя

<p:outputLabel for="studentgroup" value="Группа: " styleClass="el-style"/> Ячейка таблицы. Текст в ячейке. Стиль прописываемый в css

<p:selectOneMenu id="studentgroup" value="#{studentBean.groupID}" style="width:150px" styleClass="el-style"> ячейка таблицы с возможностью выбора одного значения из значений объекта groupID класса StudentBean задана размер(длинна)

<f:selectItem itemLabel="-- Выберите группу -- " noSelectionOption="true"/> Добавляем пустое значение в список. Когда поле не заполнено в нём отображается «-- Выберите группу –»

« -- Выберите группу –» <f:selectItems value="#{groupBean.groupsList}"

<f:selectItems value="#{groupBean.groupsList}" var="selectedGroup" itemValue="#{selectedGroup.id}" itemLabel="#{selectedGroup.groupName}"/> Список объектов для выбора. Значения берётся из groupsList класса groupBean Создаётся переменная задаём значения по которому будет оцениваться коллекция(список) и определение идентификатора который отобразит значение

<p:ajax update="studentfio" /> </p:selectOneMenu> Обнавляет поле studentfio <p:outputLabel for="studentfio" value="ФИО: " styleClass="el-style"/> Ячейка таблицы. Текст в ячейке. Стиль прописываемый в css <p:selectOneMenu id="studentfio" value="#{studentBean.stID}" style="width:150px" styleClass="el-style"> <f:selectItem itemLabel="-- Выберите ФИО -- " noSelectionOption="true"/> <f:selectItems value="#{studentBean.studentsList}" var="selectedStudent" itemValue="#{selectedStudent.stID}" itemLabel="#{selectedStudent.stFamily} #{selectedStudent.stFirstName} #{selectedStudent.stSecName}" /> </p:selectOneMenu> ячейка таблицы с возможностью выбора одного значения из значений объекта stID класса StudentBean задана размер(длинна) Добавляем пустое значение в список. Когда поле не заполнено в нём отображается «-- Выберите ФИО –» Список объектов для выбора. Значения берётся из studentsList класса studentBean Создаётся переменная задаём значения по которому будет оцениваться коллекция(список) и определение идентификатора который отобразит значение

<p:outputLabel for="password" value="Номер зачетки: " styleClass="el-style"/> <p:password id="password" required="true" value="#{studentBean.stPK}" label="Номер зачетки"

style="width:150px" styleClass="el-style"/> Выдаёт своё значение «номер заказа» в сообщение об ошибке Компонент пароля с способом интеграции и методом подхода(совпадение с паролем в базе) значение пароля должно совпадать с stPK в классе studentBean задаётся длинна и стиль окна для ввода пароля

<f:facet name="footer"> <h:panelGroup style="display:block; text-align:center"> <p:commandButton id="submit" type="submit" style="position: " value="Вход" action="#{studentBean.StAuthSubmit}" update="growl" /> </h:panelGroup> </f:facet> </p:panelGrid></td></tr> </table> Ячейки в строке объединены Создания кнопки с её видом текстом стилем текста и функцией которая вызывает метод StAuthSubmit из studentBean

вызывает метод StAuthSubmit из studentBean Student.java package trg.domain; //Указываем

Student.java

package trg.domain; //Указываем название пакета, в котором храниться класс import java.io.Serializable; //Компоненты Java используют этот протокол для передачи объектов. // Импортируем необходимые для описания Аннотации Hibernate import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;

/* Ниже описанные аннотации, используемые для мэппинга Java-классов. данный класс является сущностью и объекты данного класса будем хранить в БД*/

@Entity //Аннотация @Entity указывает на то, что данный класс является сущностью и будет обрабатываться Hibernate. @Table(name="students")// Аннотация @Table задает имя таблицы, в которой будут храниться объекты класса. В нашем случае название таблицы students // Тело класса Student. Используем Сериализацию.

public class Student implements Serializable

{

@Id /* Особенностью Hibernate является то, что каждый хранимый объект должен иметь идентификатор. Аннотация @Id означает, что следующий реквезит является идентификатором. Для текущего объекта этот реквизит private int id; */ @Column(name="students_id")/*С использованием аннотации @Column мы показываем связи атрибутов класса, со столбцами таблицы, в которой храняться объекты класса. Грубо говоря, связываем атрибуты сущности, с колонками в таблице, в котрой лежат эти объекты.*/ private int id; // модификатор доступа private означает, что объявляеммые переменные класса доступны только этому классу Student

//Аналогично поступаем с остальными атрибутами сущности. //@Column(name="group_id") //private int groupID; @Column(name="st_family") private String studentFamily; @Column(name="st_first_name") private String studentFirstName; @Column(name="st_sec_name") private String studentSecondName; @Column(name="st_pk_number") private String studentPkNumber;

/*Описываемый нами класс, является описанием сущности студент.В данной части класса мы устанавливаем связи сущности студент с другими сущностями.Сущность студент связана связью Многие к одному с сущность группа*/ @ManyToOne(fetch = FetchType.LAZY)/*Данная аннотация применяется к полю, если таблица связана с другой таблицей связью один ко многим. В нашем случае поле сущности student будет связано с полем сущности

group.

Запись fetch=FetchType.LAZY указывает,что загрузка данного поля будет только в случае обращения к данному полю. Пока программа этого не делает, поле будет пустым.*/ @JoinColumn(name = "group_id", nullable = false)/* Аннотация @JoinColimn по смыслу схожа с @Column, но имет различие в том, что обозначает связующее поле.Поле не может быть нулевым.*/

private Group group;

//?????

public Student()

{

}

//Создаем параметризированный конструктор класса Student. Конструктор задает начальные значения объекту студент. public Student(int id, Group group, String studentFamily, String studentFirstName, String studentSecondName, String studentPkNumber) { /*В данной части, конструктор ссылается на объекты класса Student, для которого он строится. В нашем случае объект Student имеет атрибуты, которые описываются в () при объявлении конструктора. */

this.id = id; this.group=group; this.studentFamily = studentFamily; this.studentFirstName = studentFirstName; this.studentSecondName=studentSecondName; this.studentPkNumber=studentPkNumber;

}

/*Блок с геттерами и сеттерами, которые устанавливают доступ к чтению и записи параметров конструируемого объекта Student, для того, чтобы можно было использовать объект в других классах. Т.к. указанные атрибуты Student имеют модификатор private*/ public int getStID() { return id;

}

public void setStID(int id) {

this.id = id;

}

public String getStFamily() { //System.out.println("Возвращает Student StFamily"+ studentFamily); return studentFamily;

}

public void setStFamily(String studentFamily) { this.studentFamily = studentFamily;

}

public String getStFirstName() { return studentFirstName;

}

public void setStFirstName(String studentFirstName) { this.studentFirstName = studentFirstName;

}

public String getStSecName() { //System.out.println("Возвращает Student StSecName"+ studentSecondName); return studentSecondName;

}

public void setStSecName(String studentSecondName) {

this.studentSecondName = studentSecondName;

}

public String getStPkNumber() { return studentPkNumber;

}

public void setStPkNumber(String studentPkNumber) { this.studentPkNumber = studentPkNumber;

}

public Group getGroup() { return this.group;

}

public void setGroup(Group group) { this.group = group;

}

}

Group.java

package trg.domain;//Указываем название пакета, в котором храниться класс import java.io.Serializable;//Компоненты Java используют этот протокол для передачи объектов. //Импортируем аннотации для описания коллекций. import java.util.HashSet; import java.util.Set; // Импортируем необходимые для описания Аннотации Hibernate. import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table;

/* Ниже описанные аннотации, используемые для мэппинга Java-классов. Проще говоря, для того, чтобы Hibernate понимал, что данный класс является сущностью, и что объекты данного класса мы будем хранить в БД*/

@Entity//Аннотация @Entity указывает на то, что данный класс является сущностью и будет обрабатываться Hibernate. @Table(name="groups")// Аннотация @Table задает имя таблицы, в которой будут храниться объекты класса.В нашем случае название таблицы groups

// Тело класса Group. Используем Сериализацию. public class Group implements Serializable {

@Id /* Особенностью Hibernate является то, что каждый хранимый объект должен иметь идентификатор. Аннотация @Id означает, что следующий реквезит является идентификатором. Для текущего объекта этот реквизит private int id; */

@Column(name="group_id")/*С использованием аннотации @Column мы показываем связи атрибутов класса, со столбцами таблицы, в которой храняться объекты класса. Грубо говоря, связываем атрибуты сущности, с колонками в таблице, в котрой лежат эти объекты.*/

private int id;

// модификатор доступа private означает, что объявляеммые переменные

класса доступны только этому классу Group

//Аналогично поступаем с остальными атрибутами сущности. @Column(name="group_name") private String groupName; @Column(name="year") private String groupYear;

/*Описываемый нами класс, является описанием сущности группа.В данной части класса мы устанавливаем связи сущности группа с другими сущностями.Сущность группа связана связью один ко многим с сущность студент*/ @OneToMany(fetch = FetchType.LAZY, mappedBy = "group") // Через mappedBy указывается свойство дочернего класса, которое связывает его с родительским. //HashSet<Student> - коллекция, в которой мы будем хранить объекты типа Student. //FetchType.LAZY — ленивая выборка. Элементы коллекции будут выбираться из базы данных только при обращении к какому-либо свойству коллекции. /* Создаем коллекцию студентов для группы. В каждой группе есть много студентов. Однако в одной группе не бывает двух идентичных студентов. Поэтому коллекиция HashSet.*/ private Set<Student> students = new HashSet<Student>(0);//ноль нужен для того, чтобы пустая коллекция занимала меньше памяти.

//??

public Group()

{

}

//Создаем параметризированный конструктор класса Group. Конструктор задает начальные

значения объекту группа. public Group (int id, String groupName, String groupYear) { /*В данной части, конструктор ссылается на объекты класса Group, для которого он строится. В нашем случае объект Group имеет атрибуты, которые описываются в () при объявлении конструктора. */ this.id = id; this.groupName = groupName; this.groupYear = groupYear;

}

/*Блок с геттерами и сеттерами, которые устанавливают доступ к чтению и записи параметров конструируемого объекта Student, для того, чтобы можно было использовать объект в других классах. Т.к. указанные атрибуты Student имеют модификатор private*/

public int getId() { return id;

}

public void setId(int id) { this.id = id;

}

public String getGroupName() { return groupName;

}

 

public void setGroupName(String groupName) { this.groupName = groupName;

}

 

public String getGroupYear() { return groupYear;

}

 

public void setGroupYear(String groupYear) { this.groupYear = groupYear;

}

public Set<Student> getStudents() { return this.students;

}

public void setStudents(Set<Student> students) { this.students = students;

}

}

Hinernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!--Конфигурационный файл для Hibernate, откуда он берет необходимую ему информацию --> <hibernate-configuration> <!-- <session-factory> устанавливает параметры сессии и данные с которыми мы работаем в ходе нее --> <session-factory>

<!--

<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="hibernate.connection.driver_class">org.postgresql.Driver</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/anketa</property> -->

<!-- Выбираем диалект hibernate. Диалект, который необходим hibernate для взаимодействия с определенным типом БД-->

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Устанавливаем класс JDBC-драйвера. JDBC-драйвер - это стандарт взаимодействия Java- приложений с различными СУБД. --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- Указываем адрес БД, в которой храняться данные для нашего проекта --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/anketa</property>

<!--

<property

name="hibernate.connection.url">jdbc:mysql://192.168.0.1:3306/anketa?UseUnicode=true&amp;chara

cterEncoding=utf8</property>

--> <!-- Устанавливаем свойства JDBC-соединения, которые нам необходимы, например кодировка utf8 --> <property name="hibernate.connection.CharSet">utf8</property> <property name="hibernate.connection.characterEncoding">utf8</property>

<property name="hibernate.connection.useUnicode">true</property>

<!-- Устанавливаем имя, по которому hibernate подключается к БД --> <property name="hibernate.connection.username">root</property>

<!--

<property name="hibernate.connection.password">6ODPIQg0FQMuw</property> --> <!-- Устанавливаем пароль, по которому hibernate подключается к БД --> <property name="hibernate.connection.password">Winter_forest</property>

<!--Устанавливаем количество пулов соединения к БД в размере 10 --> <property name="hibernate.connection.pool_size">10</property> <!-- Как я понимаю обновление DDL схемы. DDL-схема - схема языка определения данных --> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>

<!-- Эта часть конфигурации отвечает за маппинг. Т.е. соответствие полей сущности в БД. Есть пример, когда мы устанавливаем соотвествия атрибудов сущности с таблице БД в формате XML. Там мы прописываем какие параметры сущности к каким колонкам БД привязаны. Но в нашем случае, мы описали маппинг в теле самих классов Student и Group, и просто ссылаемся на него.--> <mapping class="trg.domain.Profile" /> <mapping class="trg.domain.Group" /> <mapping class="trg.domain.Student" /> <mapping class="trg.domain.Moderator" /> <mapping class="trg.domain.Client" /> <mapping class="trg.domain.Project" /> </session-factory> </hibernate-configuration>

Faces-config.xml

<!-- Элемент <navigation-rule> описывает правила навигации в веб-приложении. --> <navigation-rule> <!-- В <from-view-id> записывается стартовая страница навигации. Т.к. у нас второй этап авторизации то:

стартовой страницей будет: страница второго этапа авторизации для студента.--> <from-view-id>/auth_employee.xhtml</from-view-id> <!--Далее мы должны указать все случаи перехода с даной страницы на другие.(<navigation- case>)

В рассматриваемом примере у нас есть только страница приветствия студента --> <navigation-case> <!-- В <from-outcome> мы условие и параметр его прохождение для описываемого случая. В нашем случае это успешное прохождение аутентификации студента--> <from-outcome>success_StAuth</from-outcome> <!-- В <to-view-id> мы указываем страницу, на которою перенаправляет веб-приложение, в случае успешного прохождения условия, описанного в <from-outcome> --> <to-view-id>/welcome_employee.xhtml</to-view-id> <!-- Перенаправляем пользователя --> <redirect /> </navigation-case> </navigation-rule> <!-- Аналогичено с предыдущим -->

<navigation-rule> <from-view-id>/auth_moderator.xhtml</from-view-id> <navigation-case> <from-outcome>success_ModAuth</from-outcome> <to-view-id>/welcome_moderator.xhtml</to-view-id> <redirect /> </navigation-case> </navigation-rule>

<navigation-rule> <from-view-id>/auth_client.xhtml</from-view-id> <navigation-case> <from-outcome>success_ClientAuth</from-outcome> <to-view-id>/welcome_client.xhtml</to-view-id> <redirect /> </navigation-case> </navigation-rule>

Класс StudentBean

package trg.domain; //Импорт библиотек:

import java.io.Serializable; import java.sql.*; import java.util.*; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.SessionScoped; import javax.faces.context.FacesContext; import javax.faces.model.ArrayDataModel; import javax.faces.model.DataModel; import javax.faces.model.SelectItem; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import trg.dao.ProfileDAOImpl; import trg.dao.StudentsGroupsDAOImpl; import trg.service.SessionBean;

/*Managed bean - это обычный Java бин, который зарегистрирован в JSF

и управляется JSF платформой. В JSF managed bean используются в качестве модели для компонентов и имеют свою область жизни (scope) */ @ManagedBean

/*Экземпляр объекта создаётся один раз при обращении пользователя к приложению,

и используется на протяжении жизни сессии*/ @SessionScoped

/*Создание класса бина. Бин связан с view. */ public class StudentBean

{

/*Объявляем переменные, через которые будет осуществляться связь значений из базы с полями в представлении*/ private int GroupID; private int StID; private String StPK; //private Group group; /*Связываем через геттеры и сеттеры ПОЛЯ "Группа", "ФИО", "ПАРОЛЬ" с view (представлением страницы) Создаем коллекцию */ private List<SelectItem> selectItems = null;

public int getGroupID()

{

return GroupID;

}

public void setGroupID(int GroupID)

{

this.GroupID=GroupID;

}

public int getStID()

{

return StID;

}

public void setStID(int StID)

{

//System.out.println("Setting StudentID: " +StID); this.StID=StID;

}

public String getStPK()

{

return StPK;

}

public void setStPK(String StPK)

{

//System.out.println("Setting StudentPK: " +StPK); this.StPK=StPK;

}

/*Создаем коллекцию*/ public List<Student> getStudentsList() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {/*Создание экземпляра класса studentsGroupsDAOImpl, который будет объектом, хранящимся в памяти*/ StudentsGroupsDAOImpl studentsGroupsDAOImpl = new StudentsGroupsDAOImpl(); /*Обращаемся к экземпляру класса и достаем переменную GroupID, затем помещаем ее в коллекцию*/ List<Student> studentlist = studentsGroupsDAOImpl.getFioList(GroupID); /*Возвращаем коллекцию для последующего доступа к ней из view*/ return studentlist;

}

/*аналогично*/

public List<String> getStudentFIO() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException

{

StudentsGroupsDAOImpl studentsGroupsDAOImpl = new StudentsGroupsDAOImpl();

List<Student> studentFIO = studentsGroupsDAOImpl.getFio(StID); /*создание массива ArrayList. Через массив объединяем в одну строчку три значения(Фамилия, имя, отчество)*/ List<String> studentFIO_separated=new <String>ArrayList();

studentFIO_separated.add(studentFIO.get(0).getStFamily());

studentFIO_separated.add(studentFIO.get(0).getStFirstName());

studentFIO_separated.add(studentFIO.get(0).getStSecName());

return studentFIO_separated;

}

/*Процесс аутентификации:

*/ public String StAuthSubmit() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException

{

StudentsGroupsDAOImpl studentsGroupsDAOImpl = new StudentsGroupsDAOImpl(); /**/ FacesContext context=FacesContext.getCurrentInstance(); /*Процесс аутентификации - валидна ли введенная пара "ФИО"+"ПАРОЛЬ". VALID = обращение к rightStudent в классе StudentsGroupsDAOimpl, где находится логика проверки значений. */ boolean valid=studentsGroupsDAOImpl.rightStudent(StID, StPK); //System.out.println("Getting StudentID: " +StID); //System.out.println("Getting StudentPK: " +StPK);

if (valid) { HttpSession session = SessionBean.getSession(); //session.setAttribute("userlogged",username);

session.setMaxInactiveInterval(15*60);

/*возвращение значения, которое используется в faces-config ждя навигации*/ return("success_StAuth");

}

else{ /*Сообщение об ошибке*/ FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Вы ввели неверные данные",""); context.addMessage(null, message); return(null);

}

}

/* */ public String logout() { FacesContext context=FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest(); HttpSession session = request.getSession(false);

session.setAttribute("userlogged","0");

session.setAttribute("ID", StID);

/*Сообщение для навигации через faces-config*/ return "loggedout";

}

}

Класс StudentsGroupDAOImpl

package trg.dao;

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.model.SelectItem; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.SessionFactory; import trg.domain.Group; import trg.service.DBConnection; import org.hibernate.Query; import org.hibernate.Session; import trg.domain.Student; import trg.service.HibernateUtil;

public class StudentsGroupsDAOImpl { /*Создание сессии для работы с базой*/ Session session = HibernateUtil.getSessionFactory().openSession(); //private List<SelectItem> selectItems = null;

/*Создание коллекции со значениями из БД*/

public List<Group> getGroupList() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException //public List <SelectItem> getGroupList() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException

{

List <Group> selectItems=null; //String hql = "select id, groupName from Group"; String hql = "from Group"; Query query = session.createQuery(hql); //query.setParameter("inputID", groupID); selectItems = query.list(); return selectItems;

}

public List<Student> getFioList(int groupId) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException

{

List <Student> selectItems=null; String hql = "select st from Student st where st.group.id= :groupId"; Query query = session.createQuery(hql); query.setParameter("groupId", groupId); selectItems = query.list(); //System.out.println("Возвращает StudentsGroupsDAOImpl отчество первого студента

"+selectItems.get(0).getStSecName());

return selectItems;

}

public List<Student> getFio(int studentId) throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException

{

List <Student> selectItems=null; String hql = "from Student where id= :studentId"; Query query = session.createQuery(hql); query.setParameter("studentId", studentId); selectItems = query.list(); //System.out.println("Возвращает StudentsGroupsDAOImpl отчество первого студента

"+selectItems.get(0).getStSecName());

return selectItems;

}

public boolean rightStudent(int stId, String stPk) {

boolean isStudent=false; String hql = "select count (*) from Student where id= :input_id and studentPkNumber= :input_PkNumber";

Query query = session.createQuery(hql); query.setParameter("input_id", stId); query.setParameter("input_PkNumber", stPk); List<Long> results = query.list();

/*Условие проверки пары "ID и пароль", если в базе найдена одна пара таких значений, то true*/ if (results.get(0)==1 )

{

isStudent=true;

}

return isStudent;

}

}