分享

spring-boot(七)servlet等容器对象配置

 关平藏书 2018-01-12

这篇文章主要介绍servlet等容器对象的自定义配置。
spring-boot的强大之处就是做到了各种扩展使用都是插拔式的,方便我们专注业务方法的编写,简化环境的搭建。

按照官方给定的方式
微信截图_20161225142839.png
这些都是servlet3的注解配置。

下面开始介绍下如何在spring-boot的基础上启用servlet的容器对象的配置。
案例代码在 “spring-boot(六)缓存配置” 的基础上改造

项目结构图
微信截图_20161225143209.png

1。 新建文件夹 web/filter
创建 MyFilter.java

  1. @WebFilter(filterName="myFilter",urlPatterns="/*")
  2. public class MyFilter implements Filter {
  3. private Logger log = LoggerFactory.getLogger(this.getClass());
  4. @Override
  5. public void destroy() {
  6. log.info("MyFilter.destroy()...");
  7. }
  8. @Override
  9. public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException,
  10. ServletException {
  11. log.info("MyFilter.doFilter()...");
  12. arg2.doFilter(arg0, arg1);
  13. }
  14. @Override
  15. public void init(FilterConfig arg0) throws ServletException {
  16. log.info("MyFilter.init()...");
  17. }
  18. }

创建 MyListener.java

  1. @WebListener
  2. public class MyListener implements ServletContextListener {
  3. private Logger log = LoggerFactory.getLogger(this.getClass());
  4. @Override
  5. public void contextDestroyed(ServletContextEvent arg0) {
  6. log.info("MyListener.contextDestroyed()...");
  7. }
  8. @Override
  9. public void contextInitialized(ServletContextEvent arg0) {
  10. log.info("MyListener.contextInitialized()...");
  11. }
  12. }
  1. 在主启动类上加入 @ServletComponentScan 启用servlet组件的扫描
  1. @ServletComponentScan
  2. @EnableCaching
  3. @SpringBootApplication
  4. public class MainApplication {
  5. public static void main(String[] args) throws Exception {
  6. SpringApplication.run(MainApplication.class, args);
  7. }
  8. }

到此为止,servlet的启用已经完成,启动主启动类
微信截图_20161225143932.png

浏览器访问 http://localhost:666/hello/list

微信截图_20161225144001.png


其实到这里已经可以了,但是以上部分毕竟只是启用了,但是如何和页面交互传值,我还是举个例子来说明下。
比如如何将MyConfig的值保存在application中,页面如何获取application中的值 ?

扩展 MyListener.java 代码

  1. @WebListener
  2. public class MyListener implements ServletContextListener {
  3. private Logger log = LoggerFactory.getLogger(this.getClass());
  4. @Autowired
  5. MyConfig config;
  6. @Override
  7. public void contextDestroyed(ServletContextEvent arg0) {
  8. log.info("MyListener.contextDestroyed()...");
  9. }
  10. @Override
  11. public void contextInitialized(ServletContextEvent arg0) {
  12. log.info("MyListener.contextInitialized()...");
  13. arg0.getServletContext().setAttribute("config", config);
  14. }
  15. }

在 /templates/list.html 文件中增加config的输出

  1. <div th:text="${application.config.info}"></div>

浏览器再次访问 http://localhost:666/hello/list
微信截图_20161225145737.png


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多