Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / из апплета в сервлет / 5 сообщений из 5, страница 1 из 1
29.09.2012, 20:58:51
    #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
29.09.2012, 21:52:20
    #37977139
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
из апплета в сервлет
planetka,

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

Сервер:

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

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


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