• spring boot-12.Servlet 容器


    1.spring boot 默认使用的是嵌入式的Servlet容器,spring-boot-starter-web 依赖了spring-boot-satrter-tomcat就是引入了嵌入式的tomcat容器。

    2.如何修改嵌入式servlet 的配置呢?

    (1)在全局配置文件中已server.开头的配置即可修改相关配置,server.tomcat.可以修改tomcat相关配置,相当于修改server.xml配置文件。比如可以修改server.port,server.address等等。

    (2)在@Configuration 类中注册一个EmbeddedServletContainerCustomizer类,在这个类中去修改相关配置。

    @Bean  //一定要将这个定制器加入到容器中
    public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){
        return new EmbeddedServletContainerCustomizer() {
    
            //定制嵌入式的Servlet容器相关的规则
            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                container.setPort(8083);
            }
        };
    }

    3.注册Servlet 三大组件。

    由于spring boot 默认是以jar包的形式存在,项目中没有web.xml ,如何添加servlet,Filter,Listener 这三个组件呢?spring boot 分别提供了三个对象来注册三大组件

    (1)ServletRegistrationBean 用来注册Servlet,其中MyServlet即为一个标准的Servlet

    @Bean
    public ServletRegistrationBean myServlet(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
        return registrationBean;
    }

    (2)FilterRegistrationBean 用来注册Filter ,MyFilter为标准的Filter

    @Bean
    public FilterRegistrationBean myFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
        return registrationBean;
    }

    (3)ServletListenerRegistrationBean 用来注册Listener ,MyListener 为标准的Listener

    @Bean
    public
    ServletListenerRegistrationBean myListener(){ ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener()); return registrationBean; }

    将上面的组件添加到容器中即可

    4.将默认的tomcat 容器切换成其他的servlet容器

    将默认的tomcat 切换成其他的servlet容器的步骤是,先从spring-boot-starter-web 包中将 spring-boot-starter-tomcat 排除,再添加其他的jar包,如切换为jetty

    <!-- 引入web模块 -->
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <exclusions>
          <exclusion>
             <artifactId>spring-boot-starter-tomcat</artifactId>
             <groupId>org.springframework.boot</groupId>
          </exclusion>
       </exclusions>
    </dependency>
    
    <!--引入其他的Servlet容器-->
    <dependency>
       <artifactId>spring-boot-starter-jetty</artifactId>
       <groupId>org.springframework.boot</groupId>
    </dependency>

    5.使用外部的Servlet容器

    使用spring boot 内置的嵌入式servlet容器可以方便快捷地构建项目,但是项目默认是以jar包的形式运行的,而且不支持jsp,如果想要支持jsp且使用外部安装的tomcat改怎么办呢?

    (1)首先新建的项目的时候必须将项目的package选择成war形式的。

    (2)添加外部的tomcat(以STS为例)

    (3)我们的war项目建立完成以后是没有web.xml文件的,而且我们的jsp一般都是放在webapp目录下的,这个目录现在也是没有,接下来我们要创建这几个目录。

    右键点解项目,点击properties

    先将Dynamic web Module 取消勾选,点击apply。然后再次选中,就出在下面出Further 这个链接,然后点击链接

    在Content directorg 中填写scr/main/webapp ,这就是jsp文件放置的路径,然后勾选Generate web.xml ,自动生成web.xml文件。这样就可以生成我们需要的项目结构了

    (4)接下来将我们新建的项目添加的外部的tomcat中,启动tomcat,会发现tomcat 启动的同时,我们的spring boot 也跟着一起启动了

    (5)然后修改项目配置,让视图解析器去映射我们的jsp文件。在全局配置文件中增加以下配置。

    spring.mvc.view.prefix=/WEB-INF/
    spring.mvc.view.suffix=.jsp

    (6)编写我们测试类,就可以映射到src/main/webapp/WEB-INF下面的jsp

  • 相关阅读:
    day 5
    Python学习(十三)—— 面向对象程序设计
    Python学习(十二)—— 常见模块
    Python学习(十一)—— 程序解耦、模块、包
    Python学习(十)—— 装饰器和函数闭包
    Python学习(八)——文件操作:读、写
    Python学习(七)——匿名函数、map函数、filter函数、reduce函数与其他内置函数
    Python学习(六)—— 函数、全局变量与局部变量
    Python学习(五)—— 集合和字符格式化
    Python学习(四)—— 列表和元组的类中方法
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/9512823.html
Copyright © 2020-2023  润新知