We avoided interactive web apping with our big project. It introduces a creeping slowness as the data gets larger. Spit out the data into an array and let Javascript deal with it.
We do all business logic with PL/SQL called from Java in both batch and when we build the web page.
I used to do all of my business logic coding that way, also - in Transact-SQL stored procedures. It's technically a "violation" of the old three-tier client server architecture, but it was blazing fast, immune to user error (and power-user manipulation), and the company was not going to be moving away from SQL Server for the foreseeable future, anyway.
I have no doubt new college graduates would have been baffled and horrified - but my business users loved me. :)