美文网首页springcloud
Springboot支持servlet

Springboot支持servlet

作者: 庙人 | 来源:发表于2018-12-19 17:45 被阅读0次

    SpringBoot支持Servlet有两种方式 (文件上传)
    第一种方式
    1:代码注册通过ServletRegistrationBean获得控制
    首先定义一个Servlet
    DuckTestServlet

    package com.duck.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class DuckTestServlet extends HttpServlet{
    
        private static final long serialVersionUID = -8685285401859800066L;
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            // TODO Auto-generated method stub
            this.doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            // TODO Auto-generated method stub
            System.out.println("this is DuckTestServlet");
            PrintWriter pw = resp.getWriter();
            pw.write("this is DuckTestServlet");
            pw.flush();
            pw.close();
        }
    
        @Override
        public void init() throws ServletException {
            // TODO Auto-generated method stub
            super.init();
        }
    }
    

    2:
    ServletRegistrationBean注册定义的Servlet

    package com.duck;
    
    import com.duck.servlet.DuckTestServlet;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication(scanBasePackages = {"com.duck"},exclude={})
    public class DuckAdminApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DuckAdminApplication.class, args);
        }
    
        /**
         * 通过代码的形式注册一个Servlet,这种形式不需要添加@ServletComponentScan注解来扫描
         * @return
         */
        @Bean
        public ServletRegistrationBean servletRegistrationBean() {
            return new ServletRegistrationBean(new DuckTestServlet(), "/duckTest/*");
        }
    
    }
    

    通过访问路径控制urlmapping,此为/duckTest/*,即可拦截到servlet方法


    image.png

    第二种方式
    通过WebServlet方式
    1:定义DuckTest2Servlet

    package com.duck.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    /**
     *  @WebServlet注解的Servlet注册需要@ServletComponentScan注解的扫描
     */
    @WebServlet(urlPatterns = "/duckTest2/*")
    public class DuckTest2Servlet extends HttpServlet{
        private static final long serialVersionUID = -8685285401859800067L;
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            // TODO Auto-generated method stub
            this.doPost(req, resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
            System.out.println("this is DuckTest2Servlet");
            PrintWriter pw = resp.getWriter();
            pw.write("this is DuckTest2Servlet");
            pw.flush();
            pw.close();
        }
    
        @Override
        public void init() throws ServletException {
            // TODO Auto-generated method stub
            super.init();
        }
    }
    

    2:启动类添加@ServletComponentScan

    package com.duck;
    
    import com.duck.servlet.DuckTestServlet;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.ServletComponentScan;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    
    @SpringBootApplication(scanBasePackages = {"com.duck"},exclude={})
    //扫描工程中的Servlet
    @ServletComponentScan(basePackages = {"com.duck"})
    public class DuckAdminApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DuckAdminApplication.class, args);
        }
    
        /**
         * 通过代码的形式注册一个Servlet,这种形式不需要添加@ServletComponentScan注解来扫描
         * @return
         */
        @Bean
        public ServletRegistrationBean servletRegistrationBean() {
            return new ServletRegistrationBean(new DuckTestServlet(), "/duckTest/*");
        }
    
    }
    

    3:通过定义的urlmapping路径,即可进入servlet方法


    image.png

    相关文章

      网友评论

        本文标题:Springboot支持servlet

        本文链接:https://www.haomeiwen.com/subject/tmpjkqtx.html