Spring Boot学习笔记-7

Spring Boot学习笔记-7

一、嵌入式Servlet容器

(1)Servlet运行原理

1.浏览器依据ip,port建立与容器之间的连接。
2.浏览器将相关数据打包(按照http协议创建一个请求数据包),然后发送请求。
3.容器将请求数据包解析出来,然后将解析到的数据放到request对象里面,同时还会创建一个response对象。
4.容器创建servlet对象,然后调用该对象的service方法(将request对象和response对象作为参数)
可以通过request对象获得请求参数值,并且将处理结果写到response对象里。
5.容器通过response获取处理结果,然后打包(响应数据包)发送给浏览器。
6.浏览器解析响应数据包,生成相应的页面。

(2)定制&修改Servlet容器相关配置

Spring Boot学习笔记-7_第1张图片

1.在配置文件中修改和server有关配置

//通用Servlet容器配置
server.port=8081
server.servlet.context-path=/crud
//Tomcat配置
server.tomcat.uri-encoding=utf-8

2.编写嵌入式Servlet容器定制器(WebServerFactoryCustomizer)

@Bean
public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
    return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() {
        @Override
        public void customize(ConfigurableWebServerFactory factory) {
            factory.setPort(8081);
        }
    };
}

二、注册JavaWeb三大组件

(1)Servlet
public class MyServlet extends HttpServlet {

    @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.getWriter().write("Hello MyServlet");
        
    }
}
    @Bean
    public RegistrationBean myServlet()
    {
        RegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(), "/myServlet");
        return registrationBean;
    }

Spring Boot学习笔记-7_第2张图片

(2)Filter

在客户端到服务器的过程中,当发送请求时,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行,在服务器给客户端响应时也会进行判断,如果有不符合的信息将会被filter进行拦截,如果符合则会进行放行。

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("MyFilter");
        filterChain.doFilter(servletRequest,servletResponse);
    }
    @Bean
    public FilterRegistrationBean myFilter()
    {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setUrlPatterns(Arrays.asList("/hello", "/myServlet"));
        return registrationBean;
    }

(3)Listener

作用:监听某个事件的发生,状态的改变
内部机制:接口回调

    //web应用启动
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized");
    }

    //当前web项目销毁
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("contextDestroyed");
    }
    @Bean
    public ServletListenerRegistrationBean myListener()
    {
        ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
        return registrationBean;
    }


你可能感兴趣的:(SpringBoot学习笔记,java,spring,boot)