I really enjoy coding web applications with PL/SQL. It is straight forward and easy to do. However, sometimes the PL/SQL applications do not seem as easily managed as some of the JavaServer Faces applications which I have written.
Usually I follow the same technique when it comes to coding a PL/SQL web application. I use the PL/SQL Web Toolkit to do most of the front end work. I usually try to keep the code simple, and if possible, I try to keep each application contained within it's own package. Sometimes one package per application does not happen because of code sizing and code reuse from some other "common" code package.
One thing I do not like about PL/SQL apps is that the view and the business logic are almost never separated. There really is no MVC (Model View Controller) structure to coding a PL/SQL web application. Navigation between pages usually involves passing parameters between different PL/SQL procedures to perform different tasks and output the result. Sometimes this gets annoying (similar to that of coding with JSP) because keeping track of parameters can be a pain if you have lots to deal with. All in all, typical PL/SQL web appplications are easy to code, but they are riddled with intertwined PL/SQL code and HTP web toolkit "tags". This leads to code which is difficult to maintain. Especially if you do not look at the code for 6 months and then try to come back and determine what you did in the first place. It can be done...but it takes time to review your work and come up to speed with the tact you took when you wrote the application.
I do not think PL/SQL web applications need to be this way. They should be easier to code and they should follow an MVC structure to keep the view separated from the business logic in different packages. JavaServer Faces is an excellent Java EE coding framework. I'd argue that it could possibly be the most advanced web framework available today. I think PL/SQL needs a framework which is similar.
Why not use objects to pass data in PL/SQL apps instead of passing parameters between procedures? Why can't we code PL/SQL components like those in the JSF API? I propose that we create a framework similar to JSF for PL/SQL.