programing

스프링 부트에서의 Dispatcher Servlet 및 web.xml

magicmemo 2023. 3. 22. 20:58
반응형

스프링 부트에서의 Dispatcher Servlet 및 web.xml

현재 Java EE에서 Spring Boot 프로젝트로 프로젝트를 전환하려고 합니다.그러나 디스패처 servlet과 web.xml에 대해 혼란스러워서 web.xml이 더 이상 프로젝트에서 읽히지 않는 것 같습니다.현재 프로젝트는 Tomcat 7에서 실행되고 있습니다.

인마이web.xml파일, 나는 많은 것을 가지고 있습니다.servlet,servlet-mapping,filter그리고.filter mapping디스패처에서의 매핑 방법을 잘 모르겠어요.

제 샘플도 첨부했습니다.web.xml버전은 2.5 입니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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_2_5.xsd">
  <display-name>displayName</display-name>
  <description>description</description>
  <resource-ref>
    ...
  </resource-ref>
  <filter>
    <filter-name>Some Filter Name</filter-name>
    <filter-class>Some Filter Class</filter-class>
    <init-param>
      <param-name>Some Param Name</param-name>
      <param-value>Some Value</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Some Filter Name</filter-name>
    <url-pattern>Some url-pattern</url-pattern>
  </filter-mapping>
  <context-param>
    <param-name>Some Param Name</param-name>
    <param-value>Some Param Value</param-value>
  </context-param>
  <servlet>
    <servlet-name>Some Servlet Name</servlet-name>
    <servlet-class>Some Servlet Class</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Some Servlet Name</servlet-name>
    <url-pattern>Some Url Pattern</url-pattern>
  </servlet-mapping>
</web-app>

질문:

  1. 제 안에 있는 모든 것들을web.xml스프링 디스패처에 의존할 수 있습니다.그렇다면 어떻게 하면 그것을 달성할 수 있을까요?
  2. 에서 멀어지고 있다.web.xml봄 부츠 프로젝트를 위한 방법

여기 안내 좀 해주시겠어요?감사합니다!!

  1. 네, 스프링 부트는 xml 설정에 의존하지 않게 되어 디스패처 서블릿과 동등한 설정이 자동으로 됩니다.다음 링크를 클릭하면 필터를 등록하는 방법을 볼 수 있습니다.Spring Boot에서 필터 클래스를 추가하려면 어떻게 해야 합니까?
  2. gradle이 아닌 maven을 사용하는 경우 spring boot 프로젝트에서 XML은 다음과 같습니다.pom.xmlspring boot을 사용하는 방법은 모든 xml 구성, web.xml 등을 spring boot의 자동 구성 + Java 구성으로 이동하는 것입니다.

spring boot은 Java Configuration에서 모든 작업을 수행하고 그 원칙을 따를 때 매우 적합합니다.지금까지의 경험으로는 XML 설정과 레거시 스프링의 결합을 시작하면 자동 설정 프로세스가 중단되기 시작합니다.새로운 스프링 부트 베스트 프랙티스에 준거하기 위해 가능한 한 많은 노력을 기울이는 것이 좋습니다.

  1. 당신은 그것을 가질 수 있다.web.xml단, 추가가 필요합니다.

    <listener>
         <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
    </listener> 
    

    …에.web.xml그리고 필요한 의존관계pom.xml.

  2. 모든 수신기 클래스, 필터가 Java 클래스로 변환됩니다.이 수업은@Configuration.

  3. 인터셉터가 있는 경우 컨피규레이션클래스로 이동할 수 있습니다.

스프링 부트는 xml 기반 구성보다 주석을 선호하기 때문에 이 경우 를 사용하는 대신web.xml를 설정하다servlet, servlet-mapping, filter그리고.filter mapping주석 기반의 자동 콩을 사용하여 콩을 등록할 수 있습니다.그러기 위해서는 다음 작업을 수행해야 합니다.

  • xml 기반 매핑을 주석 기반 매핑으로 변환
  • 을 만들다@Bean주석을 사용하면 스프링 부트가 컴포넌트 스캔 중에 주석을 자동으로 올릴 수 있습니다.

참고: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

  • 필터를 등록하고 필터 콩을 추가하기 위해 클래스를 만들 수 있습니다.@Configuration ★★★★★★★★★★★★★★★★★」@Component을 .FilterRegistrationBean필터를 등록합니다.@Bean 주석을 사용하여 필터 자체의 콩을 만들 수도 있습니다.

예를 들어 다음과 같은 xml 기반 필터에 해당합니다.

<filter>
  <filter-name>SomeUrlFilter</filter-name>
   <filter-class>com.company.SomeUrlFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SomeUrlFilter</filter-name>
    <url-pattern>/url/*</url-pattern>
    <init-param>
       <param-name>paramName</param-name>
       <param-value>paramValue</param-value>
    </init-param>
</filter-mapping>

동등한 주석 기반은 다음과 같습니다.

@Bean
public FilterRegistrationBean someUrlFilterRegistration() {

    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(someUrlFilter());
    registration.addUrlPatterns("/url/*");
    registration.addInitParameter("paramName", "paramValue");
    registration.setName("Filter");
    registration.setOrder(1);
    return registration;
} 

@Bean(name = "someUrlFilter")
public Filter someUrlFilter() {
    return new SomeUrlFilter();
}
  • springboot xml 을 기반 할 수 .★★★★★★★★★★★★★★★★★,web.xml예를 들어 다음과 같습니다.

Web.xml

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/dispatcher.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

다른 파일 dispatcher.xml에서는 다음과 같이 콩을 작성할 수 있습니다.

<beans ...>

    <context:component-scan base-package="com.demo"/>

    <bean
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

의 : 봄 note 。web.xml will will will will will will 。src/main/webapp/WEB-INF.

https://www.baeldung.com/register-servlet 를 참조해 주세요.

꽤 오랜 시간을 들여서 세 가지를 공유했는데, 제가 기억하는 바로는 명령줄에서 작동하게 하는 것이었습니다.

  1. 가장 중요: JSP는 /src/main/resources/META-INF/resources 폴더에만 보관해야 합니다.자세한 내용은 여기를 참조하십시오.
  2. jar를 빌드할 때 maven이 폴더 /src/main/resources를 고려하고 있는지 확인하십시오.그렇지 않으면 pom.xml에 이러한 행을 추가합니다.

  <resources>
     <resource>
        <directory>src/main/resources</directory>   
      </resource>
    </resources>

  1. MVC 구성 파일

    @Configuration
    public class MvcConfig extends WebMvcConfigurerAdapter {
        @Bean
        public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/Representation/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    

언급URL : https://stackoverflow.com/questions/43225549/dispatcherservlet-and-web-xml-in-spring-boot

반응형