Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Набираем Velocity 
:(
    Опции темы
Domestic Cat
Дата 10.3.2005, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Консольное приложение в

1. Сначала нужно стянуть Велосити, версия 1.4:
http://jakarta.apache.org/site/downloads/d...city-engine.cgi
Разархивируем в директорию, скажем, C:\velocity\

2. В разархивированном виде можно ради интереса собрать Велосити самим : для этого нужно зайти в директорию build и запустить ант.
Далее владельцам тигра нужно матерно обругать тех, кто решил использовать переменную enum и установить в билд файле source="1.4" проперти.
Далее можно прогнать все возможные тесты с помощью ant test.

3. Для тех, кто делать этого не хочет, в корне лежат 2 jarа : velocity-1.4.jar и velocity-dep-1.4.jar. Их нужно добавить в CLASSPATH.

4. Теперь можно создать свое первое десктоп приложение (сервлет надеюсь добавить на днях).
Начинаем с темплейта: создаем файл test.vm такого содержания
Код

#set ($name = "Sam")
Hello, World
I am $name 
$name I am

Это очень простой темплейт. Он содержит директиву #set и одну переменную.

5. Пишем файл VeloTest.java
Код

import org.apache.velocity.app.*;
import org.apache.velocity.*;
import java.io.*;
import java.util.*;

public class VeloTest
{
    public static void DoVelo(String file) throws Exception
    {
        Velocity.init();
        VelocityContext vc = new VelocityContext();
        Template t = Velocity.getTemplate(file);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        t.merge(vc, bw);
        bw.flush();
        bw.close();        
    }
    
    public static void main(String[] args) throws Exception
    {
        DoVelo("test.vm");
    }    
}


Чтоб иксепшны не путались под ногами, я их убрал в throws.

6. Компилим

javac VeloTest.java

и запускаем:
java VeloTest
Цитата

Hello, World
I am Sam
Sam I am



--------------------

PM   Вверх
batigoal
Дата 10.3.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Посмотрел на http://jakarta.apache.org/, что такое Velocity, но все равно не понял. Для чего используются эти шаблоны?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 10.3.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата
It permits web page designers to reference methods defined in Java code. Web designers can work in parallel with Java programmers to develop web sites according to the Model-View-Controller (MVC) model, meaning that web page designers can focus solely on creating a well-designed site, and programmers can focus solely on writing top-notch code. Velocity separates Java code from the web pages, making the web site more maintainable over the long run and providing a viable alternative to Java Server Pages  (JSPs) or PHP.

Velocity can be used to generate web pages, SQL, PostScript and other output from templates. It can be used either as a standalone utility for generating source code and reports, or as an integrated component of other systems. When complete, Velocity will provide template services for the Turbine web application framework. Velocity+Turbine will provide a template service that will allow web applications to be developed according to a true MVC model.



--------------------

PM   Вверх
batigoal
Дата 10.3.2005, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Вот именно это я и не понял. Можно вызывать методы из текста страницы? Так это можно сделать и без использования сторонних технологий.
Исходя из твоего примера, я так понял, что можно иметь готовый шаблон (который представляет из себя HTML, XML, SQL, текст и т.д.) и передавать в него значения переменных, получая таким образом документ, запрос и т.д.
Но ведь точно так же мы можем сделать и в тексте обычной JSP.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Domestic Cat
Дата 10.3.2005, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Текст обычной JSP - это Java код. Задача фреймворка состоит в том, чтобы презентацию сделать как можно более простой. Тогда за хтмл можно посадить обычного веб-дизайнера. Далее этот дизайнер делает супер-пупер страницу. Программист пишет бизнес логику. Они встречаются, и программер дает дизайнеру имена переменных. Дизайнер вставляет их в свою страницу, типа "Привет, $name".
То есть, дизайнеру не нужно ничего знать о java или jsp.
Кроме того, четкое отделение презентации от модели есть хорошо, и называется Модель 2 паттерн.


--------------------

PM   Вверх
batigoal
Дата 10.3.2005, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 16
Всего: 151



Цитата(Domestic @ 10.3.2005, 11:57)
Текст обычной JSP - это Java код

Но ведь можно просто привести все к виду обычного HTML с включенными <%= name %>, или, в крайнем случае, с циклами или итераторами, и мы получим ту же самую изоляцию (хотя у меня пока сводить все к этому не получается smile , все равно на странице присутствуют методы)


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Sleepy_PIP
Дата 10.3.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



Цитата(Domestic @ 10.3.2005, 11:57)
Текст обычной JSP - это Java код. Задача фреймворка состоит в том, чтобы презентацию сделать как можно более простой. Тогда за хтмл можно посадить обычного веб-дизайнера. Далее этот дизайнер делает супер-пупер страницу. Программист пишет бизнес логику. Они встречаются, и программер дает дизайнеру имена переменных. Дизайнер вставляет их в свою страницу, типа "Привет, $name".
То есть, дизайнеру не нужно ничего знать о java или jsp.
Кроме того, четкое отделение презентации от модели есть хорошо, и называется Модель 2 паттерн.

так задача UI интерфейса везеде и всегда - не просто выдать юзеру какой-то отчет, хоть он и прекрасно строится в терминах Velocity, но и получить реакцию от клиента. т.е. интерактив .... т.е. на лицо - в Velicity можно писать _выходные_ _отчеты_, не требующиее интеракива. Это конечно хорошо, но далеко не все, и к тому-ж проигрывает PDF отчетам.
Ну все конечно ИМХО чайника smile


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Domestic Cat
Дата 10.3.2005, 18:42 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата
так задача UI интерфейса везеде и всегда - не просто выдать юзеру какой-то отчет, хоть он и прекрасно строится в терминах Velocity, но и получить реакцию от клиента. т.е. интерактив .... т.е. на лицо - в Velicity можно писать _выходные_ _отчеты_, не требующиее интеракива. Это конечно хорошо, но далеко не все, и к тому-ж проигрывает PDF отчетам.


Нет такой серверной технологии, которая б давалa интерактив. А JavaScript или аналогичый клиентский скрипт / АктивХ / апплет никто не мешает пользовать.


--------------------

PM   Вверх
Domestic Cat
Дата 14.3.2005, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Пример посерьезнее.

Код

// test.vm
We want to present you our new products:

#foreach ($product in $products)
    Product : $product.name, just for $product.price
#end

#include("logo.txt")


Код

//logo.txt
Spamers, Inc. Copyright 2005, All rights reserved


Код

public class Product
{
    private String name;
    private float price;
    
    public Product(String name, float price)
    {
            this.name = name;
            this.price = price;
    }
    
    public String getName()
    {
        return name;    
    }
    
    public float getPrice()
    {
        return price;    
    }
    
    public void setName(String s)
    {
        name = s;
    }
    
    public void setPrice(float q)
    {
        price = q;
    }
    
    public String toString()
    {
        return name + ", $" + price;
    }    
}


Код

public class Velo
{
    private ArrayList al = new ArrayList();
    
    private void fillList()
    {
        al.add(new Product("Enlargement pills", 12.99f));
        al.add(new Product("English courses", 55.99f));
        al.add(new Product("Book - How to Lose Weight", 34.99f));    
    }
    
    public void DoVelo(String file) throws Exception
    {
        fillList();
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        Velocity.init();
        Template t = Velocity.getTemplate(file);
        VelocityContext vc = new VelocityContext();
        vc.put("products", al);
        t.merge(vc, bw);
        bw.flush();
        bw.close();
    }
    
    public static void main(String[] args) throws Exception
    {
        new Velo().DoVelo("test.vm");
    }    
}


Запуск дает:

Цитата
We want to present you our new products:

        Product : Enlargement pills, just for 12.99
        Product : English courses, just for 55.99
        Product : Book - How to Lose Weight, just for 34.99

Spamers, Inc. Copyright 2005, All rights reserved



--------------------

PM   Вверх
Се ля ви
Дата 16.3.2005, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: 3
Всего: 127



Domestic Cat
По-моему, довольно похожие облегченные конструкции встречались в спецификации JSP 2.0 - там тоже есть конструкции без традиционных "<%" и "%>" - можно их сравнить как-то?

За топик большое спасибо)


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Domestic Cat
Дата 16.3.2005, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата
По-моему, довольно похожие облегченные конструкции встречались в спецификации JSP 2.0 - там тоже есть конструкции без традиционных "<%" и "%>" - можно их сравнить как-то?


Нет, Велосити - это template engine, jsp - это ява код внутри хтмла smile
Велосити похож конечно, например, можно "вызывать методы" : $product.setPrice(55). Разница в том, что темпейт - файл vm парсится и все, jsp компилируется в класс и исполняется. В темплейтах нельзя определять методы. Зато можно делать макросы.



--------------------

PM   Вверх
Zandr
Дата 1.4.2005, 11:00 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: нет
Всего: 13



Цитата
Зато можно делать макросы.

Что ни начнешь писать - все компилятор получается...
PM MAIL   Вверх
Domestic Cat
Дата 2.4.2005, 23:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 13
Всего: 172



Цитата(Zandr @ 1.4.2005, 02:00)
Что ни начнешь писать - все компилятор получается...

smile Скорее интерпретатор.
А вообще, мощный шаблонный движок.


--------------------

PM   Вверх
simanyay
Дата 21.5.2005, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: 2
Всего: 36



У меня вопрос:
Какое преимущество, в плане производительности, даёт Velocity по сравнению с использованием JSP (<%= %>)? Просто я не до конца понимаю смысла Velocity для web-страниц.


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
simanyay
Дата 21.5.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: 2
Всего: 36



Вопрос и сомнения вроде отпали. Советую всем, у кого такой же вопрос прочитать это: Case Study: JSP vs. Velocity
Добавлено @ 16:12
Попробую, в общем курсовую написать используя Velocity. Авось и получится smile


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1805 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.