javax.servlet.ServletException: 서블릿 실행이 예외를 발생시켰습니다.
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
core.web.view.JspView.render(JspView.java:38)
core.web.mvc.DispatcherServlet.service(DispatcherServlet.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:623)
제공해주신 에러 메시지를 보면 JspView에서 예외가 발생하고 있습니다. 이는 HTML 페이지를 JSP 뷰로 렌더링하려고 시도할 때 문제가 생기는 것으로 보입니다.
JSP(JavaServer Pages)는 HTML 내에 자바 코드를 삽입하여 동적으로 웹 페이지를 생성하는 기술입니다. 반면 HTML은 정적인 마크업 언어로, 자바 코드를 직접 삽입할 수 없습니다.
서블릿 컨테이너(톰캣)는 JSP를 실행하기 위한 특별한 처리를 하므로, HTML을 JSP로 취급하면 파싱 에러가 발생할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
}
@GetMapping("/index")
public void index(HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello, World!</h1>");
out.println("</body></html>");
}
상황에 맞는 방법을 선택하여 HTML 페이지를 처리할 수 있습니다. 단순한 정적 페이지라면 HTML을 그대로 사용하고, 동적으로 내용을 생성해야 한다면 JSP를 사용하는 것이 좋습니다.