티스토리 뷰

일전에 똑같은 주제에 대해 글을 썼었는데 더 괜찮은 방법이 있어서 다시 글을 작성해본다. 적용방법은 아주 간단하다. 

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <jsp-config>
    <jsp-property-group>
      <url-pattern>*.jsp</url-pattern>
      <page-encoding>UTF-8</page-encoding>
      <scripting-invalid>false</scripting-invalid>
      <include-prelude>/WEB-INF/jsp/common/common.jsp</include-prelude>
    </jsp-property-group>
  </jsp-config>
</web-app>

기존의 web.xml이 위와 같이 있다고 하자. 하고 싶은건 모든 jsp 파일에 common.jsp 파일을 import 시키는 것이다. 여기서 이렇게 설정하지 않은면 모든 jsp 페이지에서 common.jsp 파일을 import 해야 한다. 

 

하지만 springboot에는 web.xml을 사용하지 않는다. 사용할수는 있어도 권고하지는 않는다. 위의 web.xml의 jsp-config 부분은 아래와 같이 사용할 수 있다. 

 

JspConfig.java

@Configuration
public class JspConfig extends SpringBootServletInitializer {
    
    @Bean
    public ConfigurableServletWebServerFactory configurableServletWebServerFactory() {
        return new TomcatServletWebServerFactory() {
        
            @Override
            protected void postProcessContext(Context context) {
                super.postProcessContext(context);
                JspPropertyGroup jspPropertyGroup = new JspPropertyGroup();
                jspPropertyGroup.addUrlPattern("*.jsp");
                jspPropertyGroup.setPageEncoding("UTF-8");
                jspPropertyGroup.setScriptingInvalid("false");
                jspPropertyGroup.addIncludePrelude("/WEB-INF/jsp/common/common.jsp");
                jspPropertyGroup.setTrimWhitespace("true");
                jspPropertyGroup.setDefaultContentType("text/html");
                JspPropertyGroupDescriptorImpl jspPropertyGroupDescriptor = new JspPropertyGroupDescriptorImpl(
                        jspPropertyGroup);
                context.setJspConfigDescriptor(new JspConfigDescriptorImpl(
                        Collections.singletonList(jspPropertyGroupDescriptor), Collections.emptyList()));
            }
        };
    }
}

SpringBootServletInitializer를 상속받아서 설정파일 클래스를 만들고 ConfigurableServletWebServerFactory Bean을 만들고 postProcessContext를 구현해주면 된다. 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31