Also grundsätzlich gilt dort ebenfalls das MVC-Prinzip (google mal oder such hier)... das heißt, du musst dir selbst überlegen, wie du trennst... du kannst halt in den jsp dich lediglich auf die Ausgabe beschränken. Informationen aus dem Modell holst du dir über entsprechend referenzierte Modellklassen, bei der Verarbeitung der Daten aus einem Formular werden entsprechende Controller-Klassen tätig, die wiederum das Modell updaten etc...
Servlets sind dazu keine Antwort... dort hast du eher mehr Mühen den HTML-Code auszugeben, wenn auch dort die Java-Klassen als solche besser deutlich werden... darüberhinaus sind Servlets in der Regel ein wenig flinker ... ich würde allerdings bei aufwendigen HTML-Seiten Generierungen davon abraten und auf JSP setzen, da es dann doch etwas netter zu warten etc. ist...
Programmlogik hat, wie du es schon vermutet hast, nichts in einer JSP zu suchen...