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

Откуда:
Сообщений: 39
Я сделал проект с помощью сервлетов, но надо его переделать на Spring с помощью @controller. Я книгу прочитал но не получается. Буду благодарен за помощь

MyServlet
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);
    }
}


AddStudentServlet

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet;

import dao.DatabaseDAO;
import entity.Student;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;


@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2, // 2MB
        maxFileSize = 1024 * 1024 * 10, // 10MB
        maxRequestSize = 1024 * 1024 * 50)   // 50MB
public class AddStudentServlet extends HttpServlet {

    /**
     * Name of the directory where uploaded files will be saved, relative to the
     * web application directory.
     */
    private static final String SAVE_DIR = "images";

    private DatabaseDAO dao;

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

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // creates the save directory if it does not exists
        String savePath = "C:\\Pictures";
        File fileSaveDir = new File(savePath);
        if (!fileSaveDir.exists()) {
            fileSaveDir.mkdirs();
        }

        String name = request.getParameter("name");
        String surname = request.getParameter("surname");
        String fileName;

        for (Part part : request.getParts()) {
            String contentDisp = part.getHeader("content-disposition");
            String[] items = contentDisp.split(";");
            for (String item : items) {
                String ss = item.trim();
                if (ss.startsWith("filename")) {
                    try {
                        int id = dao.insertStudentIntoDB(name, surname);
                        fileName = String.valueOf(id);
                        String fileExt = ss.substring(ss.lastIndexOf("."), ss.length() - 1); // расширение включая точку
                        String fullPath = savePath + File.separator + fileName + fileExt;
                        part.write(fullPath);
                        dao.updateStudentImage(id, fullPath);
                        request.setAttribute("message", "Студент добавлен.");
                    } catch (IOException e) {
                        request.setAttribute("message", "Ошибка при добавлении студента!");
                    }
                }
            }
        }

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

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}


GetImage Servlet
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package servlet;

import dao.DatabaseDAO;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

   

public class GetImage extends HttpServlet {

    private DatabaseDAO dao;

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

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        int id = Integer.parseInt(request.getParameter("id"));
        String fullPath = dao.readStudentImagePath(id);

        response.setContentType("image/jpeg");
        
        try (BufferedInputStream bin = new BufferedInputStream(new FileInputStream(fullPath));
                BufferedOutputStream bout = new BufferedOutputStream(response.getOutputStream())) {

            int ch = 0;
            while ((ch = bin.read()) != -1) {
                bout.write(ch);
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
4 апр 19, 07:35    [21851971]     Ответить | Цитировать Сообщить модератору
 Re: Как сервлеты переделать в Spring  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
fallen2019,
А не надо переделывать.
Читаешь книгу и выполняешь там все примеры.
4 апр 19, 08:29    [21852000]     Ответить | Цитировать Сообщить модератору
 Re: Как сервлеты переделать в Spring  [new]
chpasha
Member

Откуда:
Сообщений: 7693
fallen2019
но не получается

не получается - это не сообщение об ошибке. ты предлагаешь кому-нибудь портянку эту за тебя переписать или как ты себе представляешь, что дальше произойдет?
4 апр 19, 10:46    [21852216]     Ответить | Цитировать Сообщить модератору
 Re: Как сервлеты переделать в Spring  [new]
betelgeizex
Member

Откуда:
Сообщений: 46
fallen2019,

Для начала, вынесите всю логику, не связанную непосредственно с сервлетом (работа с БД, запись/чтение файлов), в отдельный класс - Service Layer.
Сервлеты должны лишь обрабатывать request/response и вызывать методы сервиса.

А потом те же методы сервиса дергайте из контроллера. И все! )
4 апр 19, 12:12    [21852425]     Ответить | Цитировать Сообщить модератору
 Re: Как сервлеты переделать в Spring  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
betelgeizex,
Но это и без спринга можно делать. В простых сервлетах.
4 апр 19, 12:19    [21852435]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить