Tiago creio que vc esteja errando nos conceitos. JSP não foi feito para armazenar métodos ou regras de negócio. JSP deveria ser usado somente para apresentação dos dados.
Mas existe recursos para fazer o que vc está tentando, apesar de não ser aconselhável.
Vc está usando uma declaração para criar um metodo. Dentro da declaração (<%! %> ) só pode haver código JAVA. Logo sua tentativa de colocar :
não irá funcionar pois HTML não é JAVA. O que vc pode fazer?
Pode mandar imprimir isso na saida (tela do usuário final que na verdade é o corpo da mensagem HTTP). Para imprimir na saida use o objeto implicito do JSP out, chame seu metodo println().
Seu código ficaria assim:
Agora lembre que essa forma de programar é uma má prática de programação. Vc deve estar vindo de linguegens como PHP ou ASP. Java é bem diferente, é melhor dar uma estudada em Servlet, JSP e MVC. Não pense que Java é mais chato, na verdade ele só fornece melhores práticas para o desenvolvimento e manutenção do código.
Se houverem métodos dentro de um JSP,eles DEVEM estar dentro de declarações(apesar de serem uma má prática,como vc disse).Realmente vale a pena estudar mais e compreender como funciona a modularização do Java em camadas e a separacão de responsabilidades que as mesmas proporcionam
Abraços
Rafael Roque
Sun Certified Programmer for Java 2 Platform
Sun Web Component Developer for Java 2 Platform