Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснительная записка к курсачу по САПИС - 9 баллов.doc
Скачиваний:
251
Добавлен:
01.04.2014
Размер:
640 Кб
Скачать

5.3 Обоснование использования фреймворка JavaServer Faces

Для реализации страницы администратора использовался фреймворк JavaServer Faces (JSF). Это позволило избежать написания множественного кода страниц представления и бизнес-логики. Это сделал IDE (NetBeans). Страницы позволяют просматривать списки пользователей, сообщений, авторизаций. Также можно добавлять, удалять и изменять информацию в элементах списка. При просмотре подробной информации о пользователе просматривается список сообщений, которые пользователь отправил, или которые были отправлены пользователю. [7]

5.4 Обоснование использования библиотеки commons-fileupload

Необходимо было сделать загрузку фотографий. Для этого послужила библиотека commons-fileupload. Часть кода jsp:

<form action="Upload" method="post" enctype="multipart/form-data">

<div>

<input type="hidden" name="userName" value="<%out.print(request.getAttribute("userName"));%>">

<input name="file1" type="file">

<input type="submit" value="Обновить фотографию"><br>

</div>

</form>

Код сервлета:

import controller.MyContext;

import entity.Users;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Iterator;

import java.util.List;

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;

import session.UsersFacadeRemote;

public class Upload extends HttpServlet {

String userName;

@Override

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(1 * 1024 * 1024);

// устанавливаем временную директорию

File tempDir = (File) getServletContext().getAttribute("javax.servlet.context.tempdir");

factory.setRepository(tempDir);

//Создаём сам загрузчик

ServletFileUpload upload = new ServletFileUpload(factory);

//максимальный размер данных который разрешено загружать в байтах

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()) {

//если принимаемая часть данных является полем формы

userName = item.getString();

} else {

//в противном случае рассматриваем как файл

processUploadedFile(item);

}

}

} catch (Exception e) {

response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

return;

}

getServletContext().getRequestDispatcher("/edit.htm").forward(request, response);

}

private void processUploadedFile(FileItem item) throws Exception {

//если если размер равен нулю

//скорее всего пользователь оставил поле пустым

//игнорируем его

if (item.getSize() == 0) {

return;

}

//в базу

UsersFacadeRemote uFR = (UsersFacadeRemote) MyContext.getContext().lookup("HostelServer/UsersFacade/remote");

Users user = uFR.find(userName);

user.setPhoto(item.get());

uFR.edit(user);

}

}

Комментарии автора кода сохранены. [13]