Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Вывод изображения (Java Servlet + MySQL)  [new]
nastyaa
Member

Откуда:
Сообщений: 376
Я написала программу которая добавляет фио студента с его изображением которая хранится в web/images. Как можно сделать так, чтобы он брал изображения с локального диска компьютера и давал каждому новому изображению id.

Вот мой код

package servlet;

import dao.DatabaseDAO;
import entity.Student;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static java.lang.Integer.parseInt;

import java.util.List;

public class MyServlet extends HttpServlet {

    private DatabaseDAO dao;

    @Override
    public void init() throws ServletException {
        dao = new DatabaseDAO();
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String action = request.getParameter("actionname");

        if (action.equals("RemoveStudent")) {
            int id = parseInt(request.getParameter("id"));
            boolean deleted = dao.deleteStudentFromDB(id);

            String message;
            if (deleted) {
                message = "Студент удален.";
            } else {
                message = "Студент не существует";
            }
            request.setAttribute("message", message);

            List<Student> students = dao.readAllStudentsFromDB();
            request.setAttribute("students", students);

            request.getRequestDispatcher("ShowAllStudent.jsp").forward(request, response);
        }

        if (action.equals("ShowAllStudent")) {
            List<Student> students = dao.readAllStudentsFromDB();
            request.setAttribute("students", students);
            request.getRequestDispatcher("ShowAllStudent.jsp").forward(request, response); 
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        processRequest(request, response);
    }
}


Add Student Servlet
package servlet;

import dao.DatabaseDAO;
import entity.Student;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import static java.lang.Integer.parseInt;

import java.util.List;

public class MyServlet extends HttpServlet {

    private DatabaseDAO dao;

    @Override
    public void init() throws ServletException {
        dao = new DatabaseDAO();
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String action = request.getParameter("actionname");

        if (action.equals("RemoveStudent")) {
            int id = parseInt(request.getParameter("id"));
            boolean deleted = dao.deleteStudentFromDB(id);

            String message;
            if (deleted) {
                message = "Студент удален.";
            } else {
                message = "Студент не существует";
            }
            request.setAttribute("message", message);

            List<Student> students = dao.readAllStudentsFromDB();
            request.setAttribute("students", students);

            request.getRequestDispatcher("ShowAllStudent.jsp").forward(request, response);
        }

        if (action.equals("ShowAllStudent")) {
            List<Student> students = dao.readAllStudentsFromDB();
            request.setAttribute("students", students);
            request.getRequestDispatcher("ShowAllStudent.jsp").forward(request, response); 
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        processRequest(request, response);
    }
}


DAO database
package dao;

import entity.Student;

import java.sql.*;

import java.util.ArrayList;

public class DatabaseDAO {

    private static final String URL = "jdbc:mysql://localhost:3306/school_db_newnew?useTimezone=true&serverTimezone=GMT";
    private static final String USER = "root";
    private static final String PASSWORD = "123456";

    private static final String GET_ALL_STUDENTS_QUERY
            = "SELECT * FROM student;";

    private static final String INSERT_STUDENT_QUERY
            = "INSERT INTO student (name, surname, image) VALUES(?,?,?);";

    public static final String DELETE_STUDENT_QUERY = "DELETE FROM student WHERE id = ?;";

    private Connection conn;

    public DatabaseDAO() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException | ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    public ArrayList<Student> readAllStudentsFromDB() {
        ArrayList<Student> result = new ArrayList<>();

        try (PreparedStatement stmt = conn.prepareStatement(GET_ALL_STUDENTS_QUERY)) {
            ResultSet rs = stmt.executeQuery();
            while (rs.next()) {
                int id = rs.getInt("id");
                String firstName = rs.getString("name");
                String lastName = rs.getString("surname");
                String image = rs.getString("image");
                Student student = new Student(firstName, lastName);
                student.setId(id);
                student.setImage(image);
                result.add(student);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }

        return result;
    }

    public void insertStudentIntoDB(String name, String surname, String filename) {
        try (PreparedStatement stmt
                = conn.prepareStatement(INSERT_STUDENT_QUERY, Statement.RETURN_GENERATED_KEYS)) {

            stmt.setString(1, name);
            stmt.setString(2, surname);
            stmt.setString(3, filename);

            stmt.executeUpdate();
            ResultSet keys = stmt.getGeneratedKeys();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public boolean deleteStudentFromDB(int id) {
        try (PreparedStatement stmt = conn.prepareStatement(DELETE_STUDENT_QUERY)) {
            stmt.setInt(1, id);
            int rowsDeleted = stmt.executeUpdate();
            return rowsDeleted > 0;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
14 мар 19, 08:18    [21832021]     Ответить | Цитировать Сообщить модератору
 Re: Вывод изображения (Java Servlet + MySQL)  [new]
alex55555
Member

Откуда:
Сообщений: 2080
nastyaa
Вот мой код

За тебя ковырять твой убогий код нет никакого желания.
nastyaa
Как можно сделать так, чтобы он брал изображения с локального диска компьютера и давал каждому новому изображению id.

Чтение с локального диска реализуется в пакете java.io, гугли и читай про него.

Новое изображение ты ещё должна суметь отличить от старого. Когда научишься - приходи, объясняй как отличаешь, потом уже тебе разжуют, что ты делаешь неправильно.
14 мар 19, 11:41    [21832256]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить