Регистрация сервлета Spring Boot

Я переношу традиционное приложение Servlet/JSP на Spring Boot.

Это текущая структура класса сервлета

public class CreateAbsenceServlet extends CommonServlet 

Мне удалось зарегистрировать этот сервлет как bean-компонент в классе конфигурации весенней загрузки, как показано ниже.

@Bean
  public ServletRegistrationBean CreateAbsenceServletRegistrationBean() {
    ServletRegistrationBean bean = new ServletRegistrationBean(
        new CreateAbsenceServlet(), "/createAbsence");

    return bean;
  }

Вопрос в том, как мне зарегистрировать CommonServlet, потому что для этого сервлета нет прямого сопоставления, так как это абстрактный класс, который расширяет HTTPServlet и имеет множество методов жизненного цикла сервлета.

@SuppressWarnings("serial")
public abstract class CommonServlet extends HttpServlet {

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

        prepareExecute(request, response);
    }

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

        prepareExecute(request, response);
    }

    protected abstract void execute(HttpSession session,
            HttpServletRequest request, HttpServletResponse response,
            PrintWriter out, BufferedReader reader) throws Exception;

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

        try {
            HttpSession session = request.getSession();
            PrintWriter out = response.getWriter();
            BufferedReader reader = request.getReader();
            response.setContentType("text/html");

            execute(session, request, response, out, reader);
        } catch (Exception ex) {
            if (ServletException.class.isInstance(ex)) {
                throw (ServletException) ex;
            } else {
                throw new ServletException(ex);
            }
        }
    }

    public String getParameterValue(HttpServletRequest req, String parameter) {
        Enumeration<String> parameterNames = req.getParameterNames();
        String paramValue = "";

        while (parameterNames.hasMoreElements()) {
            String paramName = parameterNames.nextElement();

            if (parameter.equalsIgnoreCase(paramName)) {
                String[] paramValues = req.getParameterValues(paramName);

                for (int i = 0; i < paramValues.length; i++) {
                    paramValue = paramValues[i];
                }
            }
        }

        return paramValue;
    }

    public void sendError(HttpServletResponse response, String errorMessage,
            int status) throws IOException {

        response.setStatus(status);
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(errorMessage);
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
2
0
778
1

Ответы 1

Мои наблюдения и предложения следующие:

  • Можете ли вы проверить, могут ли методы в классе быть конвертируется в прослушиватель или фильтр с помощью @WebFilter или Аннотация @WebListener.
  • Сообщение об ошибке можно обработать с помощью весенней загрузки @ControllerAdvice. и аннотации @ExceptionHandler отдельно.

вы можете найти подробное объяснение того, как это сделать, из этого поста здесь:
Как я могу зарегистрировать сервлет с помощью Spring Boot?

Другие вопросы по теме