All work

Moved a legacy Java EE application off JSP, Servlets and raw JDBC onto Spring Boot with a React front end — incrementally, without a big-bang cutover.

The problem

The application was built on JSP, Servlets, JSTL, and hand-written JDBC. Business logic lived in the view layer, every data access path repeated its own connection handling, and there was no clean seam to test against. It still had to keep serving users throughout, so a rewrite-and-swap was never an option.

What I built

I rebuilt the back end on Spring Boot — Spring MVC for routing, Spring Security for authentication and authorisation, and Spring Data JPA with Hibernate to replace the hand-rolled JDBC — exposing REST and JAX-RS endpoints that the old and new front ends could both call. On the database side I reworked the SQL Server objects the application depended on, tuning queries and rewriting stored procedures and triggers around the new access patterns. The front end moved page by page: JSP views were replaced with React and TypeScript screens, with Bootstrap and jQuery kept alive at the boundary so half-migrated pages kept working during the cutover. Docker-based environments and CI/CD pipelines made each increment deployable on its own.

Outcome

Interaction performance improved by about 28%, and the application came off Java EE with no big-bang release — onto a stack the team could actually test and extend.