Я перевожу традиционное приложение Servlet / JSP в Spring Boot.
Это текущая структура класса сервлета
public class CreateAbsenceServlet extends CommonServlet
Мне удалось зарегистрировать этот сервлет в качестве компонента вкласс конфигурации весенней загрузки, как показано ниже
@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);
}
}