SpringBoot之自定义Servlet

举报
西魏陶渊明 发表于 2022/09/25 02:33:07 2022/09/25
【摘要】 生产中我们有时候需要自定义servlet比如,对一些特定的资源路径进来的请求,做一些特殊处理,本文,介绍两种自定义的方法。 目录 @WebServlet 注解方式注册ServletRegistrationBean 1.@WebServlet 注解方式 使用该方式注意一点,就是要与 @ServletComponentSca...

生产中我们有时候需要自定义servlet比如,对一些特定的资源路径进来的请求,做一些特殊处理,本文,介绍两种自定义的方法。

目录

  • @WebServlet 注解方式
  • 注册ServletRegistrationBean

1.@WebServlet 注解方式

使用该方式注意一点,就是要与 @ServletComponentScan 配合使用


  
  1. @WebServlet(urlPatterns = "/api", description = "api进来的通过该servlet")
  2. public class ApiGateWayServlet extends HttpServlet {
  3. private ApplicationContext applicationContext;
  4. private ApiGateWayHandler apiGateWayHandler;
  5. @Override
  6. public void init() throws ServletException {
  7. super.init();
  8. applicationContext = WebApplicationContextUtils.getWebApplicationContext(getServletContext());
  9. apiGateWayHandler = applicationContext.getBean(ApiGateWayHandler.class);
  10. }
  11. @Override
  12. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  13. apiGateWayHandler.handle(req,resp);
  14. }
  15. }

在启动类,添加ServeltComponentScan


  
  1. @ServletComponentScan
  2. @SpringBootApplication
  3. public class SpringBootSampleApplication {
  4. public static void main(String[] args) {
  5. ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(SpringBootSampleApplication.class, args);
  6. SpringContextUtils.setApplicationContext(configurableApplicationContext);
  7. }
  8. }

2. 注册ServletRegistrationBean


  
  1. @SpringBootApplication
  2. public class SpringBootSampleApplication {
  3. @Bean
  4. public ServletRegistrationBean servletRegistrationBean() {
  5. return new ServletRegistrationBean(new ApiGateWayServlet(), "/*");
  6. }
  7. public static void main(String[] args) {
  8. ConfigurableApplicationContext configurableApplicationContext = SpringApplication.run(SpringBootSampleApplication.class, args);
  9. SpringContextUtils.setApplicationContext(configurableApplicationContext);
  10. }
  11. }

3.check是否配置成功


  
  1. 2017-09-19 10:44:28.313 INFO 6761 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'apiGateWayServlet' to [/*]
  2. 2017-09-19 10:44:28.315 INFO 6761 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]

文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。

原文链接:springlearn.blog.csdn.net/article/details/102425338

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。