Как автоматически перенаправить http на https в веб-приложение Java?

1- Что такое Https?

Hyper Text Transfer Protocol Secure (HTTPS) это безопасная версия  HTTP (протокол (protocol) передающий данные между вашим браузером и вебсайтом). 'S' в конце  HTTPS это сокращенное  'Secure' (Безопасный). Это означает все коммуникации между браузером и вебсайтом закодированы (encrypted). HTTPS обычно используется для защиты онлайн транзакций с высокой конфиденциальностью, такие как онлайн банк или онлайн покупики.
На данный момент  HTTPS рекомендуется для использования. Вебсайты, исопльзующие  HTTPS так же получают более высокие приоритеты в поисковике  Google.

2- Редирект http на https

Если у вас есть вебсайт, который работает с протоколом  HTTP, допустим вы успешно установили HTTPS для вашего вебсайта. Но страницы (page), которые найдены пользователем в  Google все еще являются ссылками, использующими протокол  HTTP, поэтому вам нужно что-то сделать, чтобы когда пользователь зашел по данной ссылке, она автоматически редиректирует (redirect) на  HTTPS.
  • http://example.com/somepage ==> https://example.com/somepage
Для приложений  Java Web автоматический редирект  http на  https довольно прост. Вам нужны некоторые конфигурации в файле  web.xml:
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   version="3.0">
   <display-name>My Web App</display-name>

   <!-- .... -->

   <security-constraint>
      <web-resource-collection>
         <web-resource-name>SessionTest</web-resource-name>
         <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>

  <!-- .... -->

</web-app>
Упаковать и развернуть еще раз (redeloy)ваше приложение на  Web Server. И все!
Применчание: Если ваше приложение не имеет файл  web.xml, вы можете создать его и расположить в папку  WEB-INF.
Для ссылок без необходимости безопасности, и вы не хотите автоматического редиректа на  HTTPS, вы так же можете конфигурировать в  web.xml.
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   version="3.0">
   <display-name>My Web App</display-name>

   <!-- .... -->

   <security-constraint>
      <web-resource-collection>
         <web-resource-name>SessionTest</web-resource-name>
         <url-pattern>/*</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>
 
 
   <security-constraint>
      <web-resource-collection>
         <web-resource-name>Non-SecureResource</web-resource-name>
         <url-pattern>/test.jsp</url-pattern>
         <url-pattern>/somepath/*</url-pattern>
      </web-resource-collection>
      <user-data-constraint>
         <transport-guarantee>NONE</transport-guarantee>
      </user-data-constraint>
   </security-constraint>


  <!-- .... -->

</web-app>