В этой статье я попытаюсь описать процесс создания многомодульного web приложения. Итак начнем. Для примера, создадим сайт myjava com ua




Скачать 119.79 Kb.
НазваниеВ этой статье я попытаюсь описать процесс создания многомодульного web приложения. Итак начнем. Для примера, создадим сайт myjava com ua
Дата публикации02.04.2013
Размер119.79 Kb.
ТипДокументы
odtdocs.ru > Философия > Документы
В этой статье я попытаюсь описать процесс создания многомодульного WEB приложения. Итак начнем. Для примера, создадим сайт myjava.com.ua с полезными статьями по Java (типа этого:))))).


Для сборки проекта будем использовать Apache Maven . Детальную инфу по которому можна почитать в 2 книгах, доступных для скачивания на сайте http://www.sonatype.com/documentation/books.
Так наше приложение будет состоять из 4 подмодулей (для начала:)):

  1. myjava-model – в этом модуле будет описана обьектаня модель приложения. Тоесть это такие классы, как Opinion – описывающий отзыв о какой то статье, Article – собственно сама статья(точнее инфа о ней — где хранится, кто автор, как называется), ну и другие классы описывающие данные приложения,

  2. myjava-article – тут мы опишем логику по чтению статтей. Напишем пару класиков, которые будут управлять стаьями. Статьи у нас будут хранится в виде обычных html файлов прямо на диске. Вообще то было несколько идей: хранить в базе в табличке, хранить в jcr (Java Content Repository) типа JackRabbit, и хранить в файликах на диске.Но в файликах быстрее всего получиться, кроме того очень просто редактировать статьи, причем в любом редакторе. Да и статьи редко изменяются — нет смысла их в базе хранить.

  3. Myjava – persist – модуль содержит Data Access Objects (DAO), для хранния обьектов в базе данных. Он напрямую зависит от myjava-model и зависит от Hibernate аннотаций определенных в последнем.

  4. Myjava-webapp – это наш web-проект. Тут мы будем использовать Spring MVC.



Как среду разработки будем испольовать Eclipse. Заходим на сайт http://www.sonatype.com/products/m2eclipse/features/installation и смотрим видео где и как скачать Eclipse и m2eclipse плагин для Maven и как их установить.
clipsem2eclipse

Удачно установив Eclipse и плагин приступаем к разработке проэкта. Сначала нужно создать родительский проэкт, который будет содержать все эти подмодули (описаны выше).

Создаем новый Maven Project:








Получаем проект вида:

Открываем pom.xml:

Ставим Packaging - pom.





На этом создание родительского проэкта завершено.
^ Создание модели приложения:
Приступим к разработке myjava-model.
Нам необходимо построить концептуальную модель базы данных. Советую почитать книженцию Питер Роб «Системы баз данных», там все просто идеально расписано. Идеально было бы найти и скачать где то Visual Paradigm for UML или Rational Rose(первая мне больше доставляет), но фиг где найдешь да и весят они до...я. Поэтому идем на update site: http://www.azzurri.co.jp/eclipse/plugins/ и ставим



Теперь нам необходимо выделить сущности и их свойства.

New → Database Modeling → Clay Database Modeling




Строим нашу схему бд:



Далее генерим ddl код (Clay → Generate SQL):


DROP TABLE Opinion IF EXISTS;

DROP TABLE Article IF EXISTS;

DROP TABLE User IF EXISTS;
CREATE TABLE User (

us_id INT NOT NULL

, us_name VARCHAR(128) NOT NULL

, us_login VARCHAR(32) NOT NULL

, us_password VARCHAR(256) NOT NULL

, PRIMARY KEY (us_id)

);
CREATE TABLE Article (

ar_id INT NOT NULL

, ar_title VARCHAR(512) NOT NULL

, ar_filename VARCHAR(255) NOT NULL

, us_id INT NOT NULL

, ar_date DATETIME

, PRIMARY KEY (ar_id)

);
CREATE TABLE Opinion (

op_id INT NOT NULL

, op_text VARCHAR(1024) NOT NULL

, us_id INT NOT NULL

, op_date DATETIME

, PRIMARY KEY (op_id)

);
ALTER TABLE Article

ADD CONSTRAINT FK_Article_1

FOREIGN KEY (us_id)

REFERENCES User (us_id);
ALTER TABLE Opinion

ADD CONSTRAINT FK_Opinion_1

FOREIGN KEY (us_id)

REFERENCES User (us_id);

Создадим сабмоуль myjava-model. На родительском проекте : New → Maven Module




в pom.xml добавляем следующие зависимости:
xml version="1.0" encoding="UTF-8"?>

myjava

ua.com.myjava

0.0.1-SNAPSHOT
4.0.0

ua.com.myjava

myjava-model

myjava-model

0.0.1-SNAPSHOT

http://maven.apache.org





junit

junit

3.8.1

test




org.hibernate

hibernate-annotations

3.3.0.ga





org.hibernate

hibernate-commons-annotations

3.3.0.ga




Тут Maven ругается что не может найти javax.transaction:jta:jar:1.0.1B:compile.

Поэтому добавляем репозиторий с этой либой:

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

myjava

ua.com.myjava

0.0.1-SNAPSHOT
4.0.0

ua.com.myjava

myjava-model

myjava-model

0.0.1-SNAPSHOT

http://maven.apache.org





http://download.java.net/maven/2/

http://download.java.net/maven/2/

http://download.java.net/maven/2/









junit

junit

3.8.1

test




org.hibernate

hibernate-annotations

3.3.0.ga





org.hibernate

hibernate-commons-annotations

3.3.0.ga



И последнее добавляем поддержку всех модных фич (типа аннтаций) которые присущи Java 1.5 +.
..



org.hibernate

hibernate-annotations

3.3.0.ga





org.hibernate

hibernate-commons-annotations

3.3.0.ga











maven-compiler-plugin

2.0.2



1.6

1.6

UTF-8

true










Все можна приступать за маппинг классов.

package org.myjava.model;
import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;
@javax.persistence.TableGenerator(

name="USER_GEN",

table="GENERATOR_TABLE",

pkColumnName = "key",

valueColumnName = "value",

pkColumnValue="USER"

)
@Entity

public class User {

@Id

@Column(name="us_id")

@GeneratedValue(strategy=GenerationType.TABLE, generator="USER_GEN")

public int id;

@Column(name="us_name")

public String name;

@Column(name="us_login")

public String login;

@Column(name="us_password")

public String password;
public int getId() {

return id;

}
public void setId(int id) {

this.id = id;

}
public String getName() {

return name;

}
public void setName(String name) {

this.name = name;

}
public String getLogin() {

return login;

}
public void setLogin(String login) {

this.login = login;

}
public String getPassword() {

return password;

}
public void setPassword(String password) {

this.password = password;

}

}

package org.myjava.model;
import java.util.Date;
import javax.persistence.Column;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.ManyToOne;

@javax.persistence.TableGenerator(

name="ART_GEN",

table="GENERATOR_TABLE",

pkColumnName = "key",

valueColumnName = "value",

pkColumnValue="ARTICLE"

)

public class Article {

@Id

@Column(name="ar_id")

@GeneratedValue(strategy=GenerationType.TABLE, generator="ART_GEN")

private int id;

@Column(name="ar_title")

private String title;

@Column(name="ar_filename")

private String filename;

@Column(name="ar_date")

private Date date;

private User user;
public int getId() {

return id;

}
public void setId(int id) {

this.id = id;

}
public String getTitle() {

return title;

}
public void setTitle(String title) {

this.title = title;

}
public String getFilename() {

return filename;

}
public void setFilename(String filename) {

this.filename = filename;

}
public Date getDate() {

return date;

}
public void setDate(Date date) {

this.date = date;

}
@ManyToOne

public User getUser() {

return user;

}
public void setUser(User user) {

this.user = user;

}

}
package org.myjava.model;
import java.util.Date;
import javax.persistence.Column;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.ManyToOne;
@javax.persistence.TableGenerator(name = "OP_GEN", table = "GENERATOR_TABLE", pkColumnName = "key", valueColumnName = "value", pkColumnValue = "OPINION")

public class Opinion {

@Id

@Column(name = "op_id")

@GeneratedValue(strategy = GenerationType.TABLE, generator = "OP_GEN")

private int id;
@Column(name = "op_text")

private String text;
@Column(name = "op_date")

private Date date;
private User user;
@ManyToOne

public User getUser() {

return user;

}
public void setUser(User user) {

this.user = user;

}

}

Добавить документ в свой блог или на сайт

Похожие:

Log in please
Начнём с того, что подключим библиотеку jstl в уже существующий проект HelloProject. Поместим jstl jar в директорию lib проекта....

Реферат по дисциплине «Человеко-машинное взаимодействие» на тему...
Он может быть использован для создания приложения в Web-браузере: например для более простой навигации или для придания интерактивности...

Реферат по дисциплине «Человеко-машинное взаимодействие» на тему...
Он может быть использован для создания приложения в Web-браузере: например для более простой навигации или для придания интерактивности...

Первый этап. Создание простого web-сервиса
Веб-сервис можно реализовать в различных средах, в нашем случае это будет NetBeans, версия не так важна. Технология создания приложения...

Лабораторная работа №4 Тема: «Web- проектирование и Web-дизайн. Пакет...
Цель работы: Ознакомление с основами Web-проектирования и Web-дизайна. Формирование навыков использования пакета FrontPage 2002/2000...

Приказ №34 от 09. 2011   Положение о школьном сайте оу общие положения
Школьный Web-сайт (далее сайт) создается в целях активного продвижения информационных и коммуникационных технологий в практику работы...

О проведении муниципального этапа конкурса web-сайтов обучающихся «Мой первый сайт»
Ветствии с приказом Управления образования и науки Тамбовской области от 14. 02. 2013 №358 «О проведении областного конкурса web-сайтов...

Расшифровка подписи моу «сош №3 с углубленным изучением отдельных предметов»
Официальный сайт школы (далее – Сайт) – это web-узел (совокупность файлов) в сети Интернет, наполняемый официальной информацией образовательного...

Технология ajax улучшает приложения Интернет
Технология ajax является не новым языком программирования, а просто новым способом использования существующих стандартов. С помощью...

Правила приема описываются установленные
Школьный Web-сайт (далее сайт) создается с целью активного продвижения информационных и коммуникационных технологий в практику работы...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
odtdocs.ru
Главная страница