powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / из апплета в сервлет
5 сообщений из 5, страница 1 из 1
из апплета в сервлет
    #37977105
planetka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте! Подскажите, пожалуйста, как из апплета передать данные в сервлет? Задача состоит в том, что пользователь выбирает файлы (апплет - JFileChooser)..затем, эти выбранные должны попасть в сервлет, который, в свою очередь, загрузит эти файлы на сервер. Привожу код апплета и сервлета.

Апплет:

Код: 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.
package applet;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JTextField;

public class AppletForm extends JApplet{

	JTextField	txt	= new JTextField(15);

	public AppletForm(){}

	@Override
	public void init(){

		final Container c = getContentPane();
		c.setLayout(new FlowLayout());
		final JFileChooser fc = new JFileChooser();
		fc.setMultiSelectionEnabled(true);

		JButton btn = new JButton("Обзор");
		btn.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e){

				if(fc.showOpenDialog(c)==JFileChooser.APPROVE_OPTION)
					txt.setText(fc.getSelectedFile().getAbsolutePath());  //здесь нужно перенаправить в сервлет?
			}
		});
		c.add(btn);
		c.add(txt);
	}

}



Сервлет:

Код: 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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
package sevlet;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class Upload extends HttpServlet {	
	private Random random = new Random();
	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//проверяем является ли полученный запрос multipart/form-data
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		if (!isMultipart) {
			response.sendError(HttpServletResponse.SC_BAD_REQUEST);
			return;
		}

		// Создаём класс фабрику 
		DiskFileItemFactory factory = new DiskFileItemFactory();

		// Максимальный буфера данных в байтах,
		// при его привышении данные начнут записываться на диск во временную директорию
		// устанавливаем один мегабайт
		factory.setSizeThreshold(1024*1024);
		
		// устанавливаем временную директорию
		File tempDir = (File)getServletContext().getAttribute("javax.servlet.context.tempdir");
		factory.setRepository(tempDir);

		//Создаём сам загрузчик
		ServletFileUpload upload = new ServletFileUpload(factory);
		
		//максимальный размер данных который разрешено загружать в байтах
		//по умолчанию -1, без ограничений. Устанавливаем 10 мегабайт. 
		upload.setSizeMax(1024 * 1024 * 10);

		try {
			List items = upload.parseRequest(request);
			Iterator iter = items.iterator();
			
			while (iter.hasNext()) {
			    FileItem item = (FileItem) iter.next();

			    if (item.isFormField()) {
			    	//если принимаемая часть данных является полем формы			    	
			        processFormField(item);
			    } else {
			    	//в противном случае рассматриваем как файл
			        processUploadedFile(item);
			    }
			}			
		} catch (Exception e) {
			e.printStackTrace();
			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
			return;
		}		
	}
	
	/**
	 * Сохраняет файл на сервере, в папке upload.
	 * Сама папка должна быть уже создана. 
	 * 
	 * @param item
	 * @throws Exception
	 */
	private void processUploadedFile(FileItem item) throws Exception {
		File uploadetFile = null;
		//выбираем файлу имя пока не найдём свободное
		do{
			String path = getServletContext().getRealPath("/upload/"+random.nextInt() + item.getName());					
			uploadetFile = new File(path);		
		}while(uploadetFile.exists());
		
		//создаём файл
		uploadetFile.createNewFile();
		//записываем в него данные
		item.write(uploadetFile);
	}

	/**
	 * Выводит на консоль имя параметра и значение
	 * @param item
	 */
	private void processFormField(FileItem item) {
		System.out.println(item.getFieldName()+"="+item.getString());		
	}
}




Задача в принципе распространенная, но нигде решения найти не могу (желательно по шагам)
...
Рейтинг: 0 / 0
из апплета в сервлет
    #37977139
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
planetka,

Клиент:
- Выполняется Апплет
- Выбираются файлы
- Передача файлов по HTTP-POST (Content-type: multipart/form-data)

Сервер:

- Сервлет обрабатывает как обычную HTML-форму
...
Рейтинг: 0 / 0
из апплета в сервлет
    #37977209
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут прямо целый код написан
http://www.java.happycodings.com/Java_Applets/code12.html
...
Рейтинг: 0 / 0
из апплета в сервлет
    #37977233
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
planetkaВсем здравствуйте! Подскажите, пожалуйста, как из апплета передать данные в сервлет? (желательно по шагам)

1 Понять что такое html
2 Понять что такое http
3. ПОнять что такое апплеты
4 Понять что такое формы в html
5. Изучить java-se
6 Понять что такое сервлеты
7 изучить сервлеты
8 написать сервлет принимающий файлы из html-формы
9 написать апплет передающий файлы в сервлет
10 сделать страничку и объединить 8 и 9
11 профит
...
Рейтинг: 0 / 0
из апплета в сервлет
    #37981418
planetka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь =)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / из апплета в сервлет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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