diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 0d73912..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file diff --git a/src/main/java/ru/molokoin/home/entities/Media.java b/src/main/java/ru/molokoin/home/entities/Media.java new file mode 100644 index 0000000..27f573d --- /dev/null +++ b/src/main/java/ru/molokoin/home/entities/Media.java @@ -0,0 +1,36 @@ +package ru.molokoin.home.entities; + +import java.io.Serializable; + +import jakarta.persistence.Basic; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Lob; +import jakarta.persistence.NamedQueries; +import jakarta.persistence.NamedQuery; +import jakarta.persistence.Table; +/** + * Класс сущности, + * хранит сведения о файлах размещенных на сервере + * и ссылку на размещенный файл + */ +@Entity +@Table(name = "Medias") +@NamedQueries({ + @NamedQuery(name = "Medias.findAll", + query = "SELECT m FROM Media m") +}) +public class Media implements Serializable{ + @Id //уникальный идентификатор ресурса + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Basic(optional = false) //не может быть null + @Column(name = "id") + private Integer id;// PRIMARY KEY AUTO_INCREMENT + private String name;// name varchar(300) + private String type;// varchar(10) + private String description;// varchar(1000) + private Integer parent;// DEFAULT (0) +} diff --git a/src/main/java/ru/molokoin/home/servlets/Main.java b/src/main/java/ru/molokoin/home/servlets/Main.java new file mode 100644 index 0000000..e08ca90 --- /dev/null +++ b/src/main/java/ru/molokoin/home/servlets/Main.java @@ -0,0 +1,55 @@ +package ru.molokoin.home.servlets; + +import java.io.IOException; +import java.io.PrintWriter; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@WebServlet(name = "Main", value = "/main") +public class Main extends HttpServlet{ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + page(request, response); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + page(request, response); + } + + private void page(HttpServletRequest request, HttpServletResponse response) throws IOException { + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + + PrintWriter out = response.getWriter(); + out.println(""); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" home:main"); + /** + * Подключение стилей + */ + out.println(" "); + out.println(""); + out.println(""); + out.println("
"); + out.println("

molokoin.ru : main

"); + out.println("
"); + out.println(""); + out.println("
"); + out.println("
"); + out.println(""); + out.println(""); + } + + +} diff --git a/src/main/java/ru/molokoin/home/servlets/Storage.java b/src/main/java/ru/molokoin/home/servlets/Storage.java new file mode 100644 index 0000000..62e8f68 --- /dev/null +++ b/src/main/java/ru/molokoin/home/servlets/Storage.java @@ -0,0 +1,155 @@ +package ru.molokoin.home.servlets; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.io.Reader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.MultipartConfig; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; +/** + * Сервлет файлообменника + */ +@MultipartConfig(fileSizeThreshold = 2024 * 2024, + maxFileSize = 2024 * 2024 * 5, + maxRequestSize = 2024 * 2024 * 5 * 5) +@WebServlet(name = "Storage", value = "/storage") +public class Storage extends HttpServlet{ + /** + * Возвращает пользователю страницу, содержащую: + * - перечень доступных для скачивания файлов + * - форму для загрузки файла на сервер + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + //page(request, response); + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + + PrintWriter out = response.getWriter(); + out.println(""); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" home:storage"); + // Подключение стилей + out.println(" "); + out.println(""); + out.println(""); + out.println("
"); + out.println("

molokoin.ru : storage

"); + out.println("
"); + out.println(""); + out.println("
"); + out.println("

tables of content

"); + out.println("
"); + out.println(""); + out.println(""); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + page(request, response); + } + + private void page(HttpServletRequest request, HttpServletResponse response) throws IOException { + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + + PrintWriter out = response.getWriter(); + out.println(""); + out.println(""); + out.println(""); + out.println(" "); + out.println(" "); + out.println(" "); + out.println(" home:storage"); + // Подключение стилей + out.println(" "); + out.println(""); + out.println(""); + out.println("
"); + out.println("

molokoin.ru : storage

"); + out.println("
"); + out.println(""); + out.println("
"); + out.println("

tables of content

"); + // обработка данных + String description = request.getParameter("description"); // Retrieves + out.println("

"+description+"

"); + + String uploadPath = "/srv/apps/home/exchange"; + File uploadDir = new File(uploadPath); + if (!uploadDir.exists()) { + out.println("

"+"Директория для записи файла: " + uploadPath + " не доступна!!!" + "

"); + } else { + try { + Part filePart = request.getPart("file"); + String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); + out.println("

"+fileName+"

"); + for (Part part : request.getParts()) { + part.write(uploadPath + File.separator + fileName); + //out.println("

"+fileName + "содержит: " + part.getSize()+"

"); + } + } catch (ServletException e) { + //e.printStackTrace(); + } + } + + + + + + // Part filePart; + // try { + // filePart = request.getPart("file");// Retrieves + // String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix. + // out.println("

" + fileName + " contains: " + "

"); + // InputStream fileContent = filePart.getInputStream(); + // //читаем из файла + // StringBuilder textBuilder = new StringBuilder(); + // try (Reader reader = new BufferedReader(new InputStreamReader + // (fileContent, StandardCharsets.UTF_8))) { + // int c = 0; + // while ((c = reader.read()) != -1) { + // textBuilder.append((char) c); + // } + // out.println("

" + fileName + " contains: " + textBuilder.toString() + "

"); + // } + // } catch (ServletException e) { + // // TODO Auto-generated catch block + // //e.printStackTrace(); + // out.println("

" + "Файл вызвал ошибку: " + "

"); + // } + out.println("
"); + out.println(""); + out.println(""); + } + + +} + diff --git a/src/main/resources/META-INF/persistance.xml b/src/main/resources/META-INF/persistance.xml new file mode 100644 index 0000000..d7aa60f --- /dev/null +++ b/src/main/resources/META-INF/persistance.xml @@ -0,0 +1,9 @@ + + + + Подключение к базе molokoin.ru:3306/home + java:/home + + true + + \ No newline at end of file diff --git a/src/main/sql-scripts/home.sql b/src/main/sql-scripts/home.sql new file mode 100644 index 0000000..20ec72f --- /dev/null +++ b/src/main/sql-scripts/home.sql @@ -0,0 +1,11 @@ +create database home; + +create table home.repository ( + id INT PRIMARY KEY AUTO_INCREMENT, + name varchar(300) not null, + type varchar(10), + description varchar(1000), + parent INT DEFAULT(0) +); + +ALTER TABLE home.repository ADD data LARGEBLOB; \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index cb782db..9c9ba77 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -5,3 +5,9 @@ molokoin.ru + \ No newline at end of file diff --git a/src/main/webapp/content/test.txt b/src/main/webapp/content/test.txt new file mode 100644 index 0000000..f079749 --- /dev/null +++ b/src/main/webapp/content/test.txt @@ -0,0 +1 @@ +test1 \ No newline at end of file diff --git a/src/main/webapp/index.html b/src/main/webapp/index.html index 75e6c3d..7939329 100644 --- a/src/main/webapp/index.html +++ b/src/main/webapp/index.html @@ -14,6 +14,9 @@

some info

diff --git a/target/classes/META-INF/persistance.xml b/target/classes/META-INF/persistance.xml new file mode 100644 index 0000000..d7aa60f --- /dev/null +++ b/target/classes/META-INF/persistance.xml @@ -0,0 +1,9 @@ + + + + Подключение к базе molokoin.ru:3306/home + java:/home + + true + + \ No newline at end of file diff --git a/target/classes/ru/molokoin/home/entities/Media.class b/target/classes/ru/molokoin/home/entities/Media.class new file mode 100644 index 0000000..73b0785 Binary files /dev/null and b/target/classes/ru/molokoin/home/entities/Media.class differ diff --git a/target/classes/ru/molokoin/home/servlets/Main.class b/target/classes/ru/molokoin/home/servlets/Main.class new file mode 100644 index 0000000..41ae768 Binary files /dev/null and b/target/classes/ru/molokoin/home/servlets/Main.class differ diff --git a/target/classes/ru/molokoin/home/servlets/Storage.class b/target/classes/ru/molokoin/home/servlets/Storage.class new file mode 100644 index 0000000..668eb2e Binary files /dev/null and b/target/classes/ru/molokoin/home/servlets/Storage.class differ diff --git a/target/home.war b/target/home.war index 8a82307..e5f0826 100644 Binary files a/target/home.war and b/target/home.war differ diff --git a/target/home/WEB-INF/classes/META-INF/persistance.xml b/target/home/WEB-INF/classes/META-INF/persistance.xml new file mode 100644 index 0000000..d7aa60f --- /dev/null +++ b/target/home/WEB-INF/classes/META-INF/persistance.xml @@ -0,0 +1,9 @@ + + + + Подключение к базе molokoin.ru:3306/home + java:/home + + true + + \ No newline at end of file diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/entities/Media.class b/target/home/WEB-INF/classes/ru/molokoin/home/entities/Media.class new file mode 100644 index 0000000..73b0785 Binary files /dev/null and b/target/home/WEB-INF/classes/ru/molokoin/home/entities/Media.class differ diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Main.class b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Main.class new file mode 100644 index 0000000..41ae768 Binary files /dev/null and b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Main.class differ diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Storage.class b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Storage.class new file mode 100644 index 0000000..668eb2e Binary files /dev/null and b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Storage.class differ diff --git a/target/home/WEB-INF/web.xml b/target/home/WEB-INF/web.xml index cb782db..9c9ba77 100644 --- a/target/home/WEB-INF/web.xml +++ b/target/home/WEB-INF/web.xml @@ -5,3 +5,9 @@ molokoin.ru + \ No newline at end of file diff --git a/target/home/content/test.txt b/target/home/content/test.txt new file mode 100644 index 0000000..f079749 --- /dev/null +++ b/target/home/content/test.txt @@ -0,0 +1 @@ +test1 \ No newline at end of file diff --git a/target/home/index.html b/target/home/index.html index 75e6c3d..7939329 100644 --- a/target/home/index.html +++ b/target/home/index.html @@ -14,6 +14,9 @@

some info

diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index 8576f49..e26fc97 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,4 +1,4 @@ #Created by Apache Maven 3.8.5 -artifactId=home groupId=ru.molokoin +artifactId=home version=1.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..964659c --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +ru\molokoin\home\servlets\Storage.class +ru\molokoin\home\entities\Media.class +ru\molokoin\home\servlets\Main.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..f511928 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Storage.java +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\entities\Media.java +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Main.java