SpringBoot自定义Servlet

在普通web工程中可以按照以下步骤创建Servlet:

1:写自定义Servlet

//自定义Servlet并且重写doGet和doPost方法
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Get-Servlet Start<====================");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Post-Servlet Start<====================");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("hello warrior");
    }
}

2:在web.xml中配置Servlet

<!-- 配置web.xml -->
<servlet>
    <servlet-name>TestServlet</servlet-name>
    <servlet-class>con.test.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>TestServlet</servlet-name>
    <url-pattern>/testServlet/*</url-pattern>
</servlet-mapping>

 

SpringBoot配置自定义Servlet依然很简单,而且省去了web.xml的配置

1:注解注入方式

  1.1 依然是写自定义Servlet

/**
 * @description:写自定义Servlet并且重写doGet和doPost方法添加@WebServlet注解
 * @author: liying
 * @date: 2019-06-26
 */
@WebServlet(urlPatterns = "/testServlet/*")
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Get-Servlet Start<====================");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Post-Servlet Start<====================");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("hello warrior");
    }
}

  1.2 配置启动类注册Servlet

//1 注解注册

@EnableEurekaClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
//启动类添加Servlet注解,并且指定Serlvet扫描位置不指定也可以,但是为了代码的可读性最好加上,明确Servlet位置
@ServletComponentScan(basePackages = "com.micro.picture.tiger.component.servlet")
public class BatchApplicationStart {
    public static void main(String[] args) {
        SpringApplication.run(BatchApplicationStart.class, args);
    }
}

 

2: 代码方式注入

  2.1 自定义注解

/**
 * @description:写自定义Servlet并且重写doGet和doPost方法不需要添加@WebServlet注解
 * @date: 2019-06-26
 */
public class TestServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Get-Servlet Start<====================");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=================>Post-Servlet Start<====================");
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("hello warrior");
    }
}

  2.2 启动类增加注入代码

//2 代码注册
@EnableEurekaClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class BatchApplicationStart {
    //使用代码注解可以省略自定义Servlet和启动类上的注解
    @Bean
    public ServletRegistrationBean registServlet(){
        return new ServletRegistrationBean(new TestServlet(), "/testServlet/*");
    }
    
    public static void main(String[] args) { 
        SpringApplication.run(BatchApplicationStart.class, args);
    } 
}    

 

测试:

启动工程,使用URL测试:http://localhost:18901/testServlet/123

 参考:

https://www.cnblogs.com/NeverCtrl-C/p/8191920.html

posted @ 2019-06-26 10:43  杏仁拌饭  阅读(543)  评论(0)    收藏  举报