Java : persistence, servlets презентация

Содержание

Слайд 1Java : persistence, servlets
http://mcproject.narod.ru


Слайд 2Основы Hibernate
Hibernate – одна из технологий ORM (Object Relational Mapping), реализует

технологию JPA (Java Persistence Architecture). Аналоги – iBATIS, Oracle TopLink
Работа с СУБД происходит через простые java-классы (POJO – Plain Old Java Objects), для которых указывается дополнительная информация (в XML или через аннотации)

Слайд 3Файлы, необходимые для работы
Библиотека hibernate (включает: ядро – core, аннотации –

annotation)
Файл конфигурации (hibernate.cfg.xml), в котором указаны общие параметры для hibernate и список классов для ORM
Классы POJO для воспроизведения структуры БД и хранения данных

Слайд 4Пример hibernate.cfg.xml





org.postgresql.Driver

jdbc:postgresql://localhost:5432/tpl_db
postgres
postgres

update

org.hibernate.dialect.PostgreSQLDialect

false
true

thread








Слайд 5Целевая структура БД


Слайд 6Класс Person
package ormtest.entities;

import java.util.*;
import javax.persistence.*;
import org.hibernate.annotations.IndexColumn;

@Entity
@Table(name="PERSON")
public class Person implements java.io.Serializable{

@Id()
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstname;
private String middlename;
private String lastname;
private String gender;
@Temporal(value = TemporalType.DATE)
private Date bdate;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "PERSON_DEPARTMENT",
joinColumns=@JoinColumn(name="PERSON"),
inverseJoinColumns=@JoinColumn(name="DEPARTMENT")
)
private List departments = new ArrayList();

//getXXX, setXXX methods (JavaBeans-style)
}


Слайд 7Класс Department
package ormtest.entities;

import java.util.*;
import javax.persistence.*;
import org.hibernate.annotations.IndexColumn;

@Entity
public class Department {

@Id()

@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String briefname;
private String fullname;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "PERSON_DEPARTMENT",
joinColumns = @JoinColumn(name = "DEPARTMENT"),
inverseJoinColumns = @JoinColumn(name = "PERSON"))
@IndexColumn(name = "DEP_INDEX")
private List persons = new ArrayList();

//getXXX, setXXX methods (JavaBeans-style)
}


Слайд 8Класс HibernateUtil
package ormtest.entities;

import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;

public class HibernateUtil {
private static

final SessionFactory sessionFactory;

static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}


Слайд 9Использование шаблона Data Access Object
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
DataSource – наши классы-сущности (POJO)


Слайд 10Класс OrganizationDAO
Методы для доступа к объектам в пакете ormtest.entities

public void

beginTransaction() throws Exception{
if( s != null ) throw new Exception( "Session already opened!" );
s = HibernateUtil.getSessionFactory().openSession();
s.beginTransaction();
}
public void commit() throws Exception{
try{
s.getTransaction().commit();
s.close();
}finally{
try{ s.close(); }catch( Exception exc ){}
s = null;
}
}
public void rollback() throws Exception{
s.getTransaction().rollback();
s.close();
}

public List getPesons() throws Exception{
return s.createQuery( "select p from Person p" ).list();
}
public Person getPerson( long id ) throws Exception{
return (Person)s.createQuery("select p from Person p where p.id=?").setLong( 0, id ).uniqueResult();
}
public void savePerson( Person p ) throws Exception{
s.saveOrUpdate( p );
}


Слайд 11Пример – добавление сотрудника
Person p = new Person();

p.setFirstname("oleg");
p.setLastname("ivanov");
p.setGender("M");
p.setBdate( new java.text.SimpleDateFormat("dd.mm.yyyy").parse("01.01.1980") );

Department dep = new Department( "ПИКО", "Кафедра Прикладной и
Компьютерной Оптики" );

dep.getPersons().add( p );

OrganizationDAO dao = OrganizationDAO.getInstance();
dao.beginTransaction();
dao.savePerson( p );
dao.saveDepartment( dep );
dao.commit();


Слайд 12Выбор всех сотрудников
OrganizationDAO dao = OrganizationDAO.getInstance();
dao.beginTransaction();
List persons = dao.getPesons();

for( Person p

: persons ){
System.out.println( " - " +
p.getFirstname() + " " + p.getLastname() );
System.out.println( "\tDepartments:" );
for( Department dep : p.getDepartments() )
System.out.println( "\t - [" + dep.getBriefname() + "] " +
dep.getFullname() );
}
dao.commit();


Слайд 13Информация по Hibernate
Настройка ORM на основе XML-конфигурации: http://docs.jboss.org/hibernate/stable/core/reference/en/html/index.html
Настройка ORM на основе

аннотаций: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/



Слайд 14Задание 1
Создать консольное приложение с поддержкой библиотеки Hibernate. Добавить к классам

из примеров класс Timesheet, связанный с классом Person (связь «многие-к-одному»). Класс должен содержать следующие поля:
Дата (включая время) начала выполнения работы;
Дата (включая время) окончания работы;
Описание работы;
Название проекта.

В классе Test добавить для пользователя несколько записей об использовании рабочего времени. Произвести сохранение в БД, а затем чтение с выводом на консоль.

Слайд 15Технологии JEE
JEE – Java Enterprise Edition
Включает следующие технологии:
Сервлеты (Servlets);
JSP (Java Server

Pages);
JSF (Java Server Faces);
RMI (Remote Method Invocation);
Веб-службы (Web Services)

Слайд 16Сервлеты
Работают под управлением контейнера сервлетов (Apache Tomcat, Sun Application Server, JBoss

и др.);
Состав:
Дескриптор развертывания (файл web.xml);
Класс, наследуемый от javax.servlet.http.HttpServlet


Слайд 17Взаимодействие по протоколу HTTP
Обозреватель отправляет стандартные запросы GET или POST на

сервер. После обработки на сервере клиенту возвращается ответ (с указанием типа: text/html, application/xml, text/plain).
При запросе типа GET на веб-сервере разбирается URL запрос и создается переменная окружения QUERY_STRING (например, a=1&b=2&c=3 для URL: http://localhost/cgi-bin/test.cgi?a=1&b=2&c=3)
При запросах типа POST веб-сервер передает параметры запроса CGI-приложению через стандартный поток ввода.

Слайд 18Особенности работы сервлета
Интерфейсом для сервлетов служит javax.servlet.Servlet. Интерфейс объявляет следующие методы:

void

destroy()
ServletConfig getServletConfig()
String getServletInfo()
void init()
void service( ServletRequest, ServletResponse )

Слайд 19Класс HttpServlet
Абстрактный класс, позволяет реализовать веб-приложение, путем перегрузки методов:
doPost( HttpServletRequest, HttpServletResponse

)
doGet( HttpServletRequest, HttpServletResponse )

Параметры методов позволяют получить доступ к параметрам запроса (по именам) и выходному потоку для записи ответа.

Слайд 20Пример сервлета
package svt;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TestServlet extends HttpServlet {


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("");
out.println("");
out.println("Servlet TestServlet");
out.println("");
out.println("");
out.println("

Servlet TestServlet at " + request.getContextPath () + "

");
out.println("");
out.println("");
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}


Слайд 21Быстрое создание сервлета в NetBeans
Создаем новое веб-приложение: File / New project

/ Web application. Зададим Context Path как “test”
Добавляем сервлет: Source Packages / New / Servlet… (назовем сервлет TestServlet, а url pattern – “/svt/*”)
Раскомментируем содержание метода processRequest
Развернем (deploy) сервлет на веб-сервере: <название проекта> / deploy
Обратимся к сервлету через обозреватель по URL: http://localhost:8084/test/svt



Слайд 22Содержание web.xml



TestServlet
svt.TestServlet


TestServlet
/svt/*



30



index.jsp




Слайд 23Обработка параметров
if( request.getParameter("login") == null || request.getParameter("passwd") == null ){

request.getRequestDispatcher("login.html").forward(request, response);
return;
}

String login = request.getParameter("login");
String passwd = request.getParameter("passwd");

if( login.equals("a") && passwd.equals("a") ){
request.getRequestDispatcher("login-ok.html").forward(request, response);
return;
}else
request.getRequestDispatcher("login-failed.html").
forward(request, response);


Слайд 24Перенаправление запросов
Сервлеты могут перенаправлять запросы, например, другим сервлетам или на другие

ресурсы данного веб-сервера.

RequestDispatcher rd = request.getRequestDispatcher(“page.html”);

В интерфейсе RequestDispatcher объявлены 2 метода.
Метод для перенаправления запроса (с закрытием выходного потока) -
void forward( ServletRequest request, ServletResponse response );
Метод для включение содержимого в текущий ответ, без закрытия потока -
void include( ServletRequest request, ServletResponse response );




Слайд 25Задание 2
Разработать веб-приложение для авторизации пользователя. Первая страница – форма для

ввода имени и пароля. Вторая – сообщение об ошибке авторизации. Третья – приглашение для работы в системе при успешной авторизации.

Форма авторизации

Логин или пароль указаны не правильно

Приглашение для работы в системе


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика