![](https://csdnimg.cn/release/download_crawler_static/75814700/bg10.jpg)
17.3.1. Use Another Web Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê417
17.3.2. Disabling the Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê418
17.3.3. Change the HTTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê419
17.3.4. Use a Random Unassigned HTTP Port . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê419
17.3.5. Discover the HTTP Port at Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê419
17.3.6. Enable HTTP Response Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê420
17.3.7. Configure SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê421
17.3.8. Configure HTTP/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê421
HTTP/2 with Tomcat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê421
HTTP/2 with Jetty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê422
HTTP/2 with Reactor Netty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê422
HTTP/2 with Undertow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê422
17.3.9. Configure the Web Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê422
17.3.10. Add a Servlet, Filter, or Listener to an Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê424
Add a Servlet, Filter, or Listener by Using a Spring Bean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê424
Add Servlets, Filters, and Listeners by Using Classpath Scanning . . . . . . . . . . . . . . . . . . . . . . . Ê425
17.3.11. Configure Access Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê425
17.3.12. Running Behind a Front-end Proxy Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê426
Customize Tomcat’s Proxy Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê427
17.3.13. Enable Multiple Connectors with Tomcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê428
17.3.14. Use Tomcat’s LegacyCookieProcessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê430
17.3.15. Enable Tomcat’s MBean Registry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê430
17.3.16. Enable Multiple Listeners with Undertow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê431
17.3.17. Create WebSocket Endpoints Using @ServerEndpoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê431
17.4. Spring MVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê432
17.4.1. Write a JSON REST Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê432
17.4.2. Write an XML REST Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê433
17.4.3. Customize the Jackson ObjectMapper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê433
17.4.4. Customize the @ResponseBody Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê435
17.4.5. Handling Multipart File Uploads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê435
17.4.6. Switch Off the Spring MVC DispatcherServlet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê436
17.4.7. Switch off the Default MVC Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê436
17.4.8. Customize ViewResolvers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê436
17.5. Jersey. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê438
17.5.1. Secure Jersey endpoints with Spring Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê438
17.5.2. Use Jersey Alongside Another Web Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê438
17.6. HTTP Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê439
17.6.1. Configure RestTemplate to Use a Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê439
17.6.2. Configure the TcpClient used by a Reactor Netty-based WebClient . . . . . . . . . . . . . . . . . . Ê439
17.7. Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê440
17.7.1. Configure Logback for Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ê441