Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическое создание javascript'a / 15 сообщений из 15, страница 1 из 1
19.07.2013, 11:31:28
    #38336609
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Добрый день!

что хочется сделать :

чтобы можно было динамически создавать и отдавать пользователю скрипт !

есть идея :

в javascripte - есть набор переменных которые должны меняться из админки сайта :

Хочется чтобы на стороне сервера этот скрипт создавался автоматически и в него вносились изменения.

Как сделано сейчас :

в jsp страницу включается статический скрипт "/js/script.js
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="/js/script.js?version=1"></script>
        <title>JSP Page</title>
    </head>
    <body>



содержит переменную и набор функций :
Код: javascript
1.
2.
3.
4.
5.
6.
// стоимость игры
var min_costs = 
{
    'one': 40,
    'two': 30
};



а потом в теле в jsp в секции

идет вставка из бизнес бина - строки с новыми значениями :
Код: java
1.
2.
3.
<script>
   getNewPrice();
</script> 




где getNewPrice() - возвращает строку var min_costs = { 'one': 44, 'two': 33 };


Вопрос как в java сделать так чтобы по обращению к ресурсу - /js/script.js

генерить этот скрипт автоматически с верными данными ?

либо каждый раз - либо создавать его в структуре путей сервера и отдавать его клиенту ... а по изменению переписывать (наверное это более правильный путь ?)


как побороть проблему кеширования старой версии скрипта на клиенте ?
...
Рейтинг: 0 / 0
19.07.2013, 11:40:08
    #38336633
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Первое что пришло в голову это Сервлет :
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name = "NewServlet", urlPatterns = {"/js/script.js"})
public class NewServlet extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("application/x-javascript;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            out.println("var min_costs = { 'one': 44, 'two': 33 };");
        } finally {            
            out.close();
        }
    }
}
...
Рейтинг: 0 / 0
19.07.2013, 11:49:09
    #38336655
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Atum1Первое что пришло в голову это Сервлет :
На очереди JSP?
...
Рейтинг: 0 / 0
19.07.2013, 12:39:30
    #38336759
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
BlazkowiczAtum1Первое что пришло в голову это Сервлет :
На очереди JSP?

с мапленное на "/js/script.js ?


идея с файлом на диске плоха тем что в момент перезаписи файла - на клиента может попасть кусок этого файла и работать не будет.

так что остается решение с jsp ?
...
Рейтинг: 0 / 0
19.07.2013, 13:59:05
    #38336943
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Atum1,
зачем вам писать на 2-х ЯП сразу?
- JS на клиенте
- Java (JSP) на сервере.
Не понял идеи поменять их местами)
...
Рейтинг: 0 / 0
19.07.2013, 14:09:35
    #38336977
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Petro123Atum1,
зачем вам писать на 2-х ЯП сразу?
- JS на клиенте
- Java (JSP) на сервере.
Не понял идеи поменять их местами)

Пример : у вас есть достаточно богатый клиент на js - со своим хранилищем данных и реализованный как паттерн mvc

так вот в модели данных js скрипта есть некоторые константы - из примера
Код: javascript
1.
2.
3.
4.
5.
var min_costs = 
{
    'one': 40,
    'two': 30
}



На самом деле это не константы - а переменные, которые могут меняться в зависимости от состояния рынка или политической ситуации.

меняются они ручками в админке такого сайта.


скрипты для сайта пишут javascript программисты .они и хардкодят эти данные.

а эти данные должны меняться достаточно оперативно. -

решение описано в начале через jsp //

но мне интересно есть и еще какие-то решения ?


К примеру эти данные можно легко подгружать через ajax - оформить пару rest web севрисов ...

и возвращать эти данные по запросу - так же очень гибкое и правильное решение.
...
Рейтинг: 0 / 0
19.07.2013, 14:11:51
    #38336985
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Atum1К примеру эти данные можно легко подгружать через ajax - оформить пару rest web севрисов ...
и возвращать эти данные по запросу - так же очень гибкое и правильное решение.
Достаточно вспомнить про кеширование в браузере.
...
Рейтинг: 0 / 0
19.07.2013, 14:40:41
    #38337048
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Atum1,авторНа самом деле это не константы - а переменные, которые могут меняться в зависимости от состояния рынка или политической ситуации.

меняются они ручками в админке такого сайта.


скрипты для сайта пишут javascript программисты .они и хардкодят эти данные.

нет уж.
Распредели все ПЕРЕМЕННЫЕ )) по уровням:
- константы на уровне кода (никогда не меняются)
- константы в коде в спец модуле
- константы при деплое и настройке админом
- константы-переменные при загрузке onLoad скрипта JS
И приведи конкретный пример
...
Рейтинг: 0 / 0
19.07.2013, 14:41:30
    #38337051
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
BlazkowiczAtum1К примеру эти данные можно легко подгружать через ajax - оформить пару rest web севрисов ...
и возвращать эти данные по запросу - так же очень гибкое и правильное решение.
Достаточно вспомнить про кеширование в браузере.
+1
Ослик воспринимает JS файл тоже как константу)
...
Рейтинг: 0 / 0
19.07.2013, 22:47:42
    #38337611
risk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
А чего не сделать на яве сервис, который возвращает Json, а уже его дергать яваскриптом ?
...
Рейтинг: 0 / 0
19.07.2013, 22:49:52
    #38337614
risk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Petro123Blazkowiczпропущено...

Достаточно вспомнить про кеширование в браузере.
+1
Ослик воспринимает JS файл тоже как константу)

А что это никак нельзя изменить ? Я помню лепили что-то в конце к линке на яваскрипт, что бы линка всегда перегенеривалась соотвественно не будет кеша....
...
Рейтинг: 0 / 0
19.07.2013, 23:42:16
    #38337643
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
risk,
кеш сделан для пользователя.
А вы лепили для программистов забыв о нём.
Парадокс.
riskА чего не сделать на яве сервис, который возвращает Json, а уже его дергать яваскриптом ?
AJAX делает то же самое. Получай хоть список городов.
...
Рейтинг: 0 / 0
20.07.2013, 00:04:38
    #38337654
risk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Petro123risk,
кеш сделан для пользователя.

На сколько я понимаю для экономии трафика и экономии на репарсинге нового яваскрипта?
...
Рейтинг: 0 / 0
20.07.2013, 08:45:21
    #38337741
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
risk,
трафик
...
Рейтинг: 0 / 0
22.07.2013, 12:08:12
    #38338795
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамическое создание javascript'a
Могу для примера привести кусок такого скрипта (в данном случае JSF), заполняющего некий исходный массив данными из бина:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	<script type="text/javascript">
...
	var borrowers = {
		<c:forEach items="#{requestBean.borrowers}" var="item" varStatus="status">
			<c:if test="#{!status.first}">,</c:if>
			"0x#{item.personID}":["#{item.lastName}","#{item.firstName}","#{item.middleName}",'<h:outputText value="#{item.birthDate}"/>']
		</c:forEach>
		};
...
	</script>


Как видно из разметки это скрипт не из отдельного js файла, а отрисовываемый вместе со страницей.
На выходе получаем что-то типа
Код: javascript
1.
2.
3.
4.
5.
	var borrowers = {
			"0x000000000000437D":["Иванов","Иван","Петрович",'11.11.1971'],
			"0x00000000000043AC":["Иванова","Ольга","Сергеевна",'21.03.1996'],
			... и т.д
		};
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Динамическое создание javascript'a / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]