Aplikacja WWW - projekt - serwlety - Java Server Pages – 19.10.2009


1. Zaprojektować bazę danych według schematu:

 

Utworzyć tabelę product z następujacymi kolumnami i odpowiednimi typami (ID, NAME, DESC, INFO):

 

 

Dodać do tabeli product kilka przykładowych wierszy:

 

 

 

 

W projekcie aplikacji internetowej dołączyć obsługę bibliotek Hibernate:

Podać nowe połączenie z bazą danych: MySQL, test, root, studentmysql

 

 

Podać parametry połączenia:

 

 

Edycja pliku hibernate.cfg.xml dla podanego połączenia z bazą MySQL - test

 

 

Uruchmić hibernate reverse engineering:

 

 

Dołączyć tabelę product

 

 

 

 

Pliki projektu:

 

 

Uruchomić opcję Hibernate Mapping Files and POJOs from Database

 

 

 

 

Widok projektu - pliki

Plik product.hbm.xml:

Klasa Product

 

package web2;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.hibernate.Session;

import org.hibernate.*;

import org.hibernate.cfg.*;

 

import java.util.*;

 

import web.*;

 

/**

 *

 * @author

 */

public class HibernateExample extends HttpServlet {

 

 

    Session session = null;

 

 

    /**

     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.

     * @param request servlet request

     * @param response servlet response

     * @throws ServletException if a servlet-specific error occurs

     * @throws IOException if an I/O error occurs

     */

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        try {

            /* TODO output your page here*/

            out.println("<html>");

            out.println("<head>");

            out.println("<title>Servlet HibernateExample</title>"); 

            out.println("</head>");

            out.println("<body bgcolor=white>");

            out.println("<h1>Servlet HibernateExample at " + request.getContextPath () + "</h1>");

 

            out.println("<table border=\"2\" align=\"center\">");

            out.println("<thead>");

            out.println("<TR BGCOLOR=green>");

            out.println("<th>Example Pages</th>");

            out.println("</tr>");

            out.println("</thead>");

            out.println("<tbody>");

 

           

    // This step will read hibernate.cfg.xml  and prepare hibernate for use

    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

     session =sessionFactory.openSession();

 

 

 //Using from Clause

  String SQL_QUERY ="from Product product";

  Query query = session.createQuery(SQL_QUERY);

  for(Iterator it=query.iterate();it.hasNext();){

    Product product=(Product)it.next();

    out.println("<tr>");

    out.println("<td>");

    out.println("ID: " +  product.getId());

    out.println("</td>");

    out.println("<td>");

    out.println("Name: " + product.getName());

    out.println("</td>");

    out.println("<td>");

    out.println("INFO: " + product.getInfo());

    out.println("</td>");

    out.println("<td>");

    out.println("Desc: " + product.getDesc());

    out.println("</td>");

    out.println("</tr>");

   }

 

            out.println("</tbody>");

            out.println("</table>");

 

 

            out.println("</body>");

            out.println("</html>");

 

 

    session.close();

}catch(Exception e){

    System.out.println(e.getMessage());

}finally{

out.close();

}

 }

 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**

     * Handles the HTTP <code>GET</code> method.

     * @param request servlet request

     * @param response servlet response

     * @throws ServletException if a servlet-specific error occurs

     * @throws IOException if an I/O error occurs

     */

    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        processRequest(request, response);

    }

 

    /**

     * Handles the HTTP <code>POST</code> method.

     * @param request servlet request

     * @param response servlet response

     * @throws ServletException if a servlet-specific error occurs

     * @throws IOException if an I/O error occurs

     */

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        processRequest(request, response);

    }

 

    /**

     * Returns a short description of the servlet.

     * @return a String containing servlet description

     */

    @Override

    public String getServletInfo() {

        return "Short description";

    }// </editor-fold>

 

}

 

 

Hibernate Insert new row example:

try {

// This step will read hibernate.cfg.xml  and prepare hibernate for use

   SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

    session =sessionFactory.openSession();

 

Transaction trans = sessionFactory.beginTransaction();

Product product = (Product)sessionFactory.get(Product.class, new Long(1));

product.setId(3);

product.setINFO("RAM");

product.setDesc("2GB");

sessionFactory.update(product);

trans.commit();

sessionFactory.close();

System.out.println("Update successfully!");

    }

    catch(Exception e){

      System.out.println(e.getMessage());

    }

 

 

Natywne zapytania SQL

sess.createSQLQuery("SELECT * FROM Product).list();

sess.createSQLQuery("SELECT ID, NAME, INFO, DESC  FROM Product”).list();

Zwracany zostaje obiekt List of Object arrays (Object[])

Alternatywnie można wykorzystać addScalar():

sess.createSQLQuery("SELECT * FROM Product")

 .addScalar("ID", Hibernate.INTEGER)

 .addScalar("NAME", Hibernate.STRING)

 .addScalar("INFO", Hibernate.STRING)

.addScalar("DESC", Hibernate.STRING)

 

 

 

1. Tabela użytkowników systemu: Client / Person / Product

Tabela zleceń: Orders z indentyfikatorem każdego zlecenia, identyfikatorem produktu, identyfikatorem klienta

Tabela Products

2. Wyświetlanie wszystkich zleceń danego klienta

3. Wyświetlanie dla danego produktu wszystkich zamówień jakie zostały na ten produkt złożone

4. Utworzenie z dostępnych produktów, bieżącego koszyka

Informacje o JSP:

http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-JSP.html