powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / jsp событие
12 сообщений из 12, страница 1 из 1
jsp событие
    #38642310
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, уважаемые форумчане.

Прошу помочь с небольшой задачей.

Есть Web-приложение и соответственно jsp.

Как сделать чтобы в момент наступления определенного события (на сервере появился новый файл) пользователь оповещался
самым простым образом, пусть даже javascript message.

Я такое делал в Swing приложении, но как сделать в сервлете?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public static void main(String[] args) {
		
	Timer timer = new javax.swing.Timer(5000, new ActionListener() {
			
			public void actionPerformed(ActionEvent e) {
				
				alarm.showMessage();	
				
			}
		});

	timer.start();
}



Иными словами, как сервлет заставить отслеживать событие?

Или я вообще не в ту сторону копаю? :)
...
Рейтинг: 0 / 0
jsp событие
    #38642337
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HTTP надо бы знать и HTML. JSP это серверная технология. Из неё нельзя так просто запушить сообщение клиенту.
Для нотификации клиентов с сервера существуют разные подходы
WebSocket - позволяет легальное двух-сторонее общение клиента и сервера по TCP
COMET - двух-сторонее общение клиента и сервера по HTTP, но особым способом.
Фоновый запрос по таймеру через AJAX - самое простое решение, но полностью одностороннее.

После выбора способа, можно уже выбирать API. Наприме
http://docs.oracle.com/javaee/7/tutorial/doc/websocket.htm
...
Рейтинг: 0 / 0
jsp событие
    #38642338
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё взять JSF или другой web фреймверк, где нотификации с сервера уже реализованы.
http://www.sql.ru/forum/996954/progressindicator-v-adf
...
Рейтинг: 0 / 0
jsp событие
    #38642344
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
jsp событие
    #38642508
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо.

Попробую сделать WebSocket.
...
Рейтинг: 0 / 0
jsp событие
    #38643414
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге получилось следующее:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
package servlet;
 
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
 
@ServerEndpoint(value = "/wsanswer")
public class WsAnswer{
	
	private static ArrayList<Session> sessionList = new ArrayList<Session>();
	
	@OnOpen
	public void onOpen(Session session){
		sessionList.add(session);
	}
	
	@OnClose
	public void onClose(Session session) {
		sessionList.remove(session);
	}
	
	@OnMessage
	public void onMessage(String msg, Session session) throws InterruptedException, IOException{
		
		String sentMessages = "";
		File to_file = new File("d://output/done/" + msg);
		
	    while("".equals(sentMessages)){
	    	Thread.sleep(3000);
	    	if (to_file.exists()) {
	    		sentMessages = "Ответ получен! ";
	    		session.getBasicRemote().sendText(sentMessages);
	    	}
	    }
	}
	
}



+

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
var ws = new WebSocket("ws://mycomp:8080/MyApp/wsanswer");

ws.onopen = function() {
};

ws.onmessage = function(message) {
	document.getElementById("wsanswer").textContent += message.data + "\n";
};

function postToServer() {
	ws.send(document.getElementById("msg").value);
	document.getElementById("msg").value = "";
}

function closeConnect() {
	ws.close();
}



+

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<link rel="stylesheet" href="css/styles.css" type="text/css"/>
	<script type="text/javascript" src="script/wsanswer.js"></script>
</head>
<body onclick="postToServer()"> 
	<h4 class = 'heads'>successfull</h4>
	<br><br>
	<span>zu2 file loaded:  </span><span><c:out value="${param.zu2File}" /></span>
	<br><br>
	<span>zp file loaded:  </span><span><c:out value="${param.zpFile}" /></span>
	<br><br>
	<span>appak file loaded:  </span><span><c:out value="${param.appakFile}" /></span>
	<br><br>
	<span>error file loaded:  </span><span><c:out value="${param.errorFile}" /></span>
	<br><br>
	<span>File created:  </span><span><c:out value="${sessionScope.fileCreate}" /></span>
	<br><br>

	<textarea id="wsanswer" readonly></textarea><br/><br/>
	<input id="msg" type="hidden" value='<c:out value="${sessionScope.fileCreate}" />' />
	Please <a href = "/ErzNsk/index.jsp">go to MainPage</a>
	
</body>
</html>



Единственно (расстраивает), все таки надо по страничке щелкнуть мышкой, сама по себе функция js у меня почему - то не вызывается, если я пишу просто в теле HTML:

Код: html
1.
2.
3.
4.
5.
<body>
<script>
postToServer();
</script>
</body>
...
Рейтинг: 0 / 0
jsp событие
    #38643449
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapvЕдинственно (расстраивает), все таки надо по страничке щелкнуть мышкой, сама по себе функция js у меня почему - то не вызывается, если я пишу просто в теле HTML:

Код: html
1.
2.
3.
4.
5.
<body>
<script>
postToServer();
</script>
</body>



Повесьте функцию на событие onLoad

Код: html
1.
2.
<body onLoad="postToServer();">
</body>
...
Рейтинг: 0 / 0
jsp событие
    #38643487
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за jQuery? Какие такие JavaScript фреймверки?
...
Рейтинг: 0 / 0
jsp событие
    #38643741
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Повесить функцию на событие onLoad я уже пробовал - функция не выполняется.
(Хотя может и я где-то ошибся).

Попробую еще ;)
...
Рейтинг: 0 / 0
jsp событие
    #38643743
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так ведь jQuery здесь не используется !?
...
Рейтинг: 0 / 0
jsp событие
    #38643748
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleapvТак ведь jQuery здесь не используется !?
И причина этому?..
...
Рейтинг: 0 / 0
jsp событие
    #38643754
aleapv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, я понял! Надеюсь, что получится, думал и без нее обойдусь.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / jsp событие
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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