Sobes.tech
Middle

Kuidas luua servlet Springis?

sobes.tech AI

Vastus AI-lt

Spring'is saate luua servlet mitmel viisil:

  1. Kasutades HttpServletBean või FrameworkServlet: Spring pakub abstraktseid klasse, mis laiendavad HttpServlet, lihtsustades integratsiooni Springi kontekstiga. FrameworkServlet on üldisem ja seda kasutatakse paljudes Springi veebiraamistikudes (näiteks DispatcherServlet).

    // Näide lihtsast servletist, mis pärineb `FrameworkServlet`-ist
    // Reaalsetes rakendustes on tavaliselt vaja rohkem konfiguratsioone
    public class MySpringServlet extends org.springframework.web.servlet.FrameworkServlet {
    
        @Override
        protected void doService(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
            // Päringu töötlemise loogika
            response.getWriter().write("Hello from MySpringServlet!");
        }
    }
    
  2. Käsitsi registreerimine kasutades @Bean ja ServletRegistrationBean: Spring konfiguratsioonis (tavaliselt @Configuration-ga märgitud klassis) saate luua oma servleti eksemplari ja mähkida selle ServletRegistrationBean-i. See võimaldab paindlikult määrata URL-i kaardistusi ja servleti parameetreid.

    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @Configuration
    public class ServletConfig {
    
        @Bean
        public ServletRegistrationBean<HttpServlet> myCustomServletRegistration() {
            ServletRegistrationBean<HttpServlet> registration = new ServletRegistrationBean<>(new MyCustomServlet());
            registration.addUrlMappings("/custom-servlet/*"); // URL-i kaardistus
            registration.setLoadOnStartup(1); // Käivitamisel laadimine
            return registration;
        }
    
        // Näide kasutaja määratud servletist
        public static class MyCustomServlet extends HttpServlet {
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
                response.getWriter().write("This is a custom servlet!");
            }
        }
    }
    
  3. Standardsed servlet-mehhanismid Spring Bootis (@ServletComponentScan): Spring Bootis, kui lisate annotatsiooni @ServletComponentScan peamisele rakenduseklassile (või mis tahes konfiguratsiooniklassile), skaneerib Spring Boot automaatselt paketid, kus on märgitud @WebServlet, @WebFilter, @WebListener annotatsioonidega klassid ning registreerib need.

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @SpringBootApplication
    @ServletComponentScan // Lülitab sisse standardsete annotatsioonide skaneerimise
    public class MySpringBootApp {
        public static void main(String[] args) {
            SpringApplication.run(MySpringBootApp.class, args);
        }
    
        // Näide servletist, mis registreeritakse automaatselt
        @WebServlet("/auto-servlet")
        public static class AutoRegisteredServlet extends HttpServlet {
            @Override
            protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
                response.getWriter().write("Automatically registered servlet!");
            }
        }
    }
    

Valik sõltub teie vajadustest. Springi konteksti ja selle võimaluste (näiteks DI) integreerimiseks kasutatakse sageli FrameworkServlet või registreeritakse ServletRegistrationBean kaudu. Lihtsate juhtumite või olemasolevate servletite migratsiooni puhul sobib @ServletComponentScan. Enamikul Spring MVC veebirakendustest on põhiserver DispatcherServlet, mis konfigureeritakse automaatselt Spring Bootis.