Начальный набор для создания веб-приложений в среде IDE NetBeans 4.0 Web Application Starter kit

Рекомендованный материал по NetBeans!
На это веб-приложение оказала огромное влияние превосходная книга Джейсона Фолкнера (Jayson Falkner) и Кевина Джонса (Kevin R Jones): "Servlets and JSP the J2EE Web Tier". (Сервлеты и JSP — веб-уровень J2EE)

Книгу можно приобрести в магазине
Amazon.com:
http://www.amazon.com/exec/obidos/ASIN/0321136497/102-1831065-4468902

Введение

В этом учебном курсе предлагаются пошаговые указания по разработке с помощью среды IDE NetBeans веб-приложения "модель-представление-контроллер", пригодного для дальнейшего расширения. Начнем с разработки объекта POJO в качестве модели, нескольких файлов представления и контроллера. После этого расширим проект, добавив JDBC для взаимодействия с хранилищем данных MySQL.

Загрузить файлы и исходные коды


Начало работы


Создание веб-приложения

  1. Выберите "Файл" > "Новый проект". В области "Категории" выберите "Web". В области "Проекты" выберите "Веб-приложение" и нажмите кнопку "Далее".
Мастер2
  1. Введите имя проекта "Netbeans4Tutorial".

Мастер1
  1. Оставьте флажок "Установить как главный проект" отмеченным. Обратите внимание на значение в поле "Контекст": /Netbeans4Tutorial.
  2. Также обратите внимание, что на панели описания описана спецификация сервлета 2.4: это обязательное требование, поскольку в этом проекте широко применяется язык выражений (EL).
  3. Нажмите кнопку "Готово". Создается папка проекта $PROJECTHOME/Netbeans4Tutorial. Папка проекта содержит все исходные файлы и метаданные проекта (например, сценарий Ant для этого проекта). После этого проект "HelloWeb" откроется в среде IDE. Логическая структура каталога показана в окне "Проекты", а структура файлов — в окне "Файлы".

Создание модели POJO


Создание модели

  1. Разверните узел проекта и узел "Исходные файлы". Обратите внимание, что узел "Source Packages" содержит только пустой узел пакета по умолчанию.
  2. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите "Создать > Класс Java".
  3. Введите имя класса "StarterModel", а затем введите в поле со списком "Пакет" значение org.netbeans.starttutorial.model.
  4. Нажмите кнопку "Готово".
StarterModel

Добавление полей и методов

  1. После автоматического создания пустого определения класса пора заполнить его именами полей.
  2. Введите или скопируйте эти имена полей в узел.
  3. Щелкните правой кнопкой мыши имена полей и выберите "инкапсулировать" в меню "Реорганизация кода".
  4. private int id;
    private String authour;
    private String summary;
    private String story;
    private String topic;
    private java.sql.Timestamp date;
  5. Код должен выглядеть следующим образом. установите все флажки и нажмите кнопку "Далее".
encapsulate.jpg

На рисунке показаны все поля, выбранные для создания методов доступа и мутаторов для этих полей.

metodes.jpg


Наконец, добавим выражения импорта к методам ниже для завершения создания класса starterModel.
import java.util.ArrayList;
import java.util.List;




public List getpopulateStarterModelArray ()
{

List starterModelarray = new ArrayList ();
StarterModel s =
getModel (1, "Привет, мир ", "Первая часть", "учебного курса ", "over",new java.util.Date ());


StarterModel st =
getModel (2, "теперь ", "пора ", "добавить ", "еще страниц ",new java.util.Date ());

StarterModel stu =
getModel (3, "Но сначала нужно ", "разобраться,", "что на самом деле", "произошло, не правда ли?",new java.util.Date ());

starterModelarray.add (s);
starterModelarray.add (st);
starterModelarray.add (stu);
return starterModelarray;
}

private StarterModel getModel (int a, String b,String c,String d,String e,java.util.Date f )
{
StarterModel sModel = new StarterModel ();
sModel.setId (a);
sModel.setAuthour (b);
sModel.setStory (c);
sModel.setTopic (d);
sModel.setSummary (e);
sModel.setDate (new java.sql.Timestamp (new java.util.Date ().getTime ()));
return sModel;
}

Создание контроллера


Переименование поля

  1. Разверните узел проекта и узел "Исходные файлы". Обратите внимание, что узел "Source Packages" содержит только пустой узел пакета по умолчанию.
  2. Щелкните правой кнопкой мыши узел "Исходные файлы" и выберите "Создать > Класс Java".
  3. Введите имя класса "FrontControllerFilter", а затем введите в поле со списком "Пакет" значение org.netbeans.starttutorial.controller.
  4. Нажмите кнопку "Готово".

Генерация методов получения и установки

  1. Для удобства читателя приведем класс FrontControllerFilter, который можно просто скопировать.
     package org.netbeans.starttutorial.controller;

    import java.io.*;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import org.netbeans.starttutorial.interfaces.PageProcessImplementation;
  2. public class FrontControllerFilter implements Filter
    {
    protected FilterConfig config = null;

    public void init (FilterConfig filterConfig)
    {
    config = filterConfig;
    }

    public void doFilter ( ServletRequest req, ServletResponse res,
    FilterChain chain ) throws IOException, ServletException
    {
    if (!(req instanceof HttpServletRequest))
    {
    throw new ServletException ("Для фильтра требуется запрос HTTP.");
    }


    HttpServletRequest request = (HttpServletRequest)req;
    HttpServletResponse response = (HttpServletResponse)res;
    String uri = request.getRequestURI ();


    int begin = uri.lastIndexOf ("/")+1;
    int end = uri.lastIndexOf (".");

    String name = "pageholder";
    if (begin < end)
    {
    name = uri.substring (begin, end);
    }

    boolean doFilter = true;

    // попытка загрузки и выполнения неявного компонента управления MVC.
    try
    {
    Object o = Class.forName ("org.netbeans.starttutorial.viewimplementation."+name).newInstance ();
    if (!(o instanceof PageProcessImplementation))
    {
    throw new ServletException ("отсутствует интерфейс");
    }

    PageProcessImplementation control = (PageProcessImplementation)o;
    doFilter = control.processPageRequest (request, response);
    }
    catch (ClassNotFoundException e)
    {
    System.out.print ("\nClassNotFoundException \n" + e);
    }
    catch (InstantiationException e)
    {
    System.out.print ("\nInstantiationException \n" + e);
    }
    catch (IllegalAccessException e)
    {
    System.out.print ("\nIllegalAccessException \n" + e);
    }

    if (doFilter)
    {
    chain.doFilter (request, response);
    }
    }

    public void destroy ()
    {
    }
    }

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


Создайте класс Java с именем пакета и именем класса, указанными ниже
package org.netbeans.starttutorial.interfaces;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.ServletException;


/**
* публичный интерфейс общего пользования
* задача на сегодня: обратитесь к контроллеру, чтобы понять, зачем вообще нужен интерфейс
*/
public interface PageProcessImplementation
{
public boolean processPageRequest (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException;
}

Создание страницы представления


Правка файла страницы JavaServer по умолчанию и создание кода класса

  1. Разверните узел проекта и узел "Веб-страницы". Обратите внимание на то, что в среде IDE автоматически создана стандартная страница Java Pages index.jsp. Мы ей пользоваться не будем.
  2. Щелкните правой кнопкой мыши узел "Веб-страницы" и выберите "Создать > JSP".
  3. Введите "pageholder" в поле "Имя файла" JSP, а затем введите в поле каталога значение "view.
  4. Нажмите кнопку "Готово".
  5. pageholder
  6. Вставьте или введите следующий текст.

    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>

    <%--
    Директива taglib ниже импортирует библиотеку JSTL. Если ее раскомментировать,
    в библиотеку также необходимо добавить библиотеку JSTL. В свойствах проекта
    выберите Построить -> Компиляция исходного кода, затем нажмите кнопку Добавить библиотеку,
    чтобы добавить библиотеку JSTL 1.1.
    --%>

    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


    <html>
    <body>
    <c:forEach var="starterModel" begin="0" items="${arrayofstarterobjects}">
    <c:out value="${starterModel.id}" />
    <br>
    <c:out value="${starterModel.authour}" />
    <c:out value="${starterModel.story}" />
    <c:out value="${starterModel.summary}" />
    <c:out value="${starterModel.topic}" />
    <p>
    </c:forEach>

    Выведем сегодняшнюю дату:
    <c:forEach var="starterModel" begin="0" end ="0" items="${arrayofstarterobjects}">
    ${starterModel.date}
    </c:forEach>
    </body>
    </html>

  1. Разверните узел проекта и узел "Исходные файлы".
  2. Щелкните правой кнопкой мыши узел "Веб-страницы" и выберите "Создать > JSP".
  3. Введите "pageholder" в поле "Имя файла" JSP, а затем введите в поле каталога значение "view.
  4. Нажмите кнопку "Готово".

  5. pageholder.jpg
  6. package org.netbeans.starttutorial.viewimplementation;

    import java.io.IOException;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.netbeans.starttutorial.controller.*;
    import org.netbeans.starttutorial.model.*;
    import org.netbeans.starttutorial.interfaces.PageProcessImplementation;


    /**
    *
    * @author
    */
    public class pageholder implements PageProcessImplementation
    {
    public boolean processPageRequest (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
    ServletContext sc = request.getSession ().getServletContext ();
    try
    {
    StarterModel starterModel = new StarterModel ();

    request.setAttribute ("arrayofstarterobjects", starterModel.getpopulateStarterModelArray ());
    }
    catch(Exception e)
    {
    System.out.print ("Исключительная ситуация в классе pageholder");
    }
    return true;
    }
    }

Изменения в файле web.xml

  1. Разверните узел проекта и узел "WEB-INF".
  2. Дважды щелкните файл web.xml для открытия в редакторе.
  3. Вставьте или введите следующий текст в файл web.xml.
  4.      <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
    <filter>
    <filter-name>ControlFilter</filter-name>
    <filter-class>org.netbeans.starttutorial.controller.FrontControllerFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>ControlFilter</filter-name>
    <url-pattern>/view/*</url-pattern>
    </filter-mapping>
    <session-config>
    <session-timeout>30</session-timeout>
    </session-config>
    <welcome-file-list>
    <welcome-file>
    index.html
    </welcome-file>
    <welcome-file>
    index.htm
    </welcome-file>
    <welcome-file>
    view/pageholder.jsp
    </welcome-file>
    </welcome-file-list>
    </web-app>

Компиляция и выполнение проекта


Добавление требуемых библиотек

  • Щелкните правой кнопкой мыши узел проекта и выберите "Свойства".
  • Выберите "Построение | Компиляция исходных файлов"
  • Нажмите кнопку "Добавить библиотеку".
  • Выберите библиотеку JSTL 1.1 и нажмите кнопку "Добавить библиотеку".
  • Нажмите кнопку "ОК".

  • libs.jpg

Построение проекта

  • Выберите пункт меню "Построить > Построить главный проект" (F11). Выполняется построение проекта.

Выполнение главного проекта

  • Выберите в меню "Выполнение" пункт "Выполнить > Выполнить главный проект" (F6). Дважды щелкните заголовок окна "Вывод" и разверните его на весь экран, чтобы были видны все выводимые данные. Обратите внимание, что средство Ant сначала выполняет построение файла Netbeans4Tutorial.war, а затем компилирует с его помощью Netbeans4Tutorial. Наконец, выполняется развертывание веб-приложения на сервере по умолчанию. Дважды щелкните заголовок окна "Выходные данные" и сверните его.
  • Выберите окно "Файлы" и разверните узел проекта "HelloWeb". Построенные файлы класса расположены в папке build. Построенный файл WAR расположен в папке dist.
  • Для повторного запуска программы нажмите клавишу F6. Новая компиляция не требуется, программа запускается сразу.

  • Выполнить

ЧАСТЬ 2 — ДОБАВЛЕНИЕ БАЗЫ ДАННЫХ


Создание базы данных/хранилища данных

  1. Если база данных MySQL еще не установлена, установите ее.
  2. Убедитесь в том, что загружена самая свежая версия коннектора jdbc mysql со страницы: http://dev.mysql.com/downloads/connector/j/3.1.html
  3. Запустите mysql.
  4. Откройте вкладку "Выполнение" в среде NetBeans, разверните узел "База данных и драйверы".
  5. Щелкните правой кнопкой и выберите пункт меню "Добавить драйвер".
  6. Найдите файл mysql_connector.jar и нажмите кнопку "Добавить".
  7. Завершите операцию нажатием кнопки "ОК".
  8. Затем выберите созданный узел mysql, щелкните его правой кнопкой мыши и выберите "Соединиться с помощью...".
  9. Выберите только что созданное соединение mysql.
  10. Введите адрес URL базы данных jdbc:mysql://localhost/ и укажите действительное имя пользователя и пароль к базе данных. Нажмите кнопку "ОК".
  11. Щелкните правой кнопкой мыши узел jdbc:mysql/localhost, выберите команду "Выполнить", затем вставьте следующую команду: "CREATE DATABASE nbstarterkit" и выполните ее. База данных создана.
  12. Теперь выполните отключение и удалите узел mysql.
  13. Повторите действия с 8 по 10, однако теперь с этим адресом URL: jdbc:mysql://localhost/nbstarterkit
  14. Выполните следующую команду для создания таблицы: CREATE TABLE `content` (
      `id` int(11) NOT NULL auto_increment,
      `author` varchar(50) default NULL,
      `summary` text,
      `story` text,
      `topic` varchar(50) default NULL,
      `date` datetime default NULL,
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM;
  15. и еще одну команду для ее наполнения

    INSERT INTO `content` (`id`,`author`,`summary`,`story`,`topic`,`date`) VALUES ("1","Jan John Jullion-Ceccarelli","Это руководство позволяет перенести приложения и параметры настройки среды IDE из среды IDE NetBeans 3.6 в среду IDE NetBeans 4.0, а также демонстрирует приемы повышения производительности труда с использованием новой системы проектов IDE NetBeans.","Это руководство позволяет перенести приложения и параметры настройки среды IDE из среды IDE NetBeans 3.6 в среду IDE NetBeans 4.0, а также демонстрирует приемы повышения производительности труда с использованием новой системы проектов IDE NetBeans.","НОВОСТИ","2005-01-30 21:39:39");

Запуск полного проекта с поддержкой JDBC

  1. Проверьте, запущена ли MySQL.
  2. Добавьте к проекту файл mysql-connector.jar.
  3. Выберите в меню "Выполнение" пункт "Выполнить > Выполнить главный проект" (F6). Дважды щелкните заголовок окна "Вывод" и разверните его на весь экран, чтобы были видны все выводимые данные. Обратите внимание, что средство Ant сначала выполняет построение файла Netbeans4Tutorial.war, а затем компилирует с его помощью Netbeans4Tutorial. Наконец, выполняется развертывание веб-приложения на сервере по умолчанию. Дважды щелкните заголовок окна "Выходные данные" и сверните его.
  4. Выберите окно "Файлы" и разверните узел проекта "HelloWeb". Построенные файлы класса расположены в папке build. Построенный файл WAR расположен в папке dist.
  5. Для повторного запуска программы нажмите клавишу F6. Новая компиляция не требуется, программа запускается сразу.
final.jpg