springboot配置嵌入式servlet容器

配置嵌入式Servlet容器

springboot默认tomcat嵌入式servlet容器,所以不用在配置tomcat。

1.如何定制修改servlet容器?

1.在applicatio.properties里修改和server有关的配置(推荐)
如:

server.tomcat
server.tomcat.connection-timeout=   连接超时时间
server.tomcat.uri-encoding=UTF-8  修改编码

server.servlet.XXX 通用servlet容器设置
server.tomcatXXX 一般是Tomcat的设置

2.通过代码的方式修改配置

-编写一个配置类 @Configuration 注解即可
-在里面添加一个ConfigurableServletWebServerFactory定制器

@Bean
 public ConfigurableServletWebServerFactory configurableServletWebServerFactory(){
  TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();//这里是一个工厂
  factory.setPort(8088);//修改端口号
  //factory.setContextPath("/lanqiao518");
  return factory;
  }

-返回定制器,并注入到容器中 @Bean ,这个时候就配置好了

3.注册Servlet三大组件(servlet、Listener【监听器】,Filter【过滤器】)

首先要自己写一个类,分别实现三大组件自己的接口然后才能添加进容器中

这里以servlet为例:
在这里插入图片描述
Servlet:

public class MyServlet extends HttpServlet {//写好servlet下一步给他添加进容器中
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doPost(req,resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("text/html;charset=utf-8");
    resp.setCharacterEncoding("utf-8");
    resp.getWriter().write("hello 你好");
  }
}

listener:

public class Mylistener implements ServletContextListener {
  @Override
  public void contextInitialized(ServletContextEvent sce) {

    System.out.println("项目启动了————————————————————————");
  }

  @Override
  public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("项目关闭了————————————————————————");
  }
}

Filter:

public class MyFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {

  }

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("MyFilter拦截了----------------------");
    filterChain.doFilter(servletRequest,servletResponse);//然后放行
  }

  @Override
  public void destroy() {

  }
}

1.将自己写的servlet注入容器:

@Configuration
public class MyServletConfig {
  //将自己写的servlet添加进容器
@Bean
  public ServletRegistrationBean myServlet(){
    ServletRegistrationBean registrationBean=new ServletRegistrationBean(new MyServlet(),"/my");//将自己写的servlet添加进来,并给一个访问路径
    return registrationBean;
  }
}

2.将自己写的Linstener注入容器

@Bean
public ServletListenerRegistrationBean myListener() {
  ServletListenerRegistrationBean listenerRegistrationBean = new ServletListenerRegistrationBean(new Mylistener());//传一个自己写的监听器即可
  return listenerRegistrationBean;
}

3.将自己写的Filter注入容器

@Bean
public FilterRegistrationBean myFilter(){
  FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(new MyFilter(),myServlet());//传一个自己写的Filter 和你要拦截的servlet 可以是多个
  return filterRegistrationBean;
}

注意:注入时的名称和自己编写的类名一致
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值