Uma coisa que me irrita no que se refere a programação web em geral, especialmente server side includes, é que o HTML é misturado com o código. Assim sendo uma coisa que eu procuro sempre é criar um arquivo template onde há algumas strings que serão substituidas. Por exemplo, pegue esse template tirado lá do Tableless (e substitua o :
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"pt\" lang=\"pt\"> <meta name=\"resource-type\" content=\"document\" /> <meta http-equiv=\"pragma\" content=\"no-cache\" /> <meta name=\"revisit-after\" content=\"1\" /> <meta name=\"classification\" content=\"Internet\" /> <meta name=\"robots\" content=\"ALL\" /> <meta name=\"distribution\" content=\"Global\" /> <meta name=\"rating\" content=\"General\" /> <meta name=\"author\" content=\"Diego Alberto Eis, Elcio Luiz Ferreira\" /> <meta name=\"language\" content=\"pt-br\" /> <meta name=\"doc-class\" content=\"Completed\" /> <meta name=\"doc-rights\" content=\"Public\" /> <head> <title>_TITULO_</title> <style type=\"text/css\"> <!-- body{ background:#EEF; margin:0px; padding:0px; font-family:arial, verdana, helvetica; font-size:80%; } h1{ background:#966; padding:10px; margin:0px; color:#EEF; } #esquerda{ width:150px; float:left; margin:10px; } #direita{ width:150px; float:right; margin:10px; } #centro{ margin:10px 190px; padding:10px; border-top:1px solid black; border-left:1px solid black; border-right:1px solid black; border-bottom:1px solid black; background:#FFF; } #rodape{ font-size:90%; color:#336; padding:10px 30px; border:1px solid black; } --> </style> </head> <body> <h1>_CABECALHO_</h1> <div id=\"esquerda\"> _ESQUERDA_ </div> <div id=\"direita\"> _DIREITA_ </div> <div id=\"centro\"> _CENTRO_ </div> <div id=\"rodape\"> _RODAPE_ </div> </body> </html>
Pois é, agora pegue esse template aí, coloque ele na raiz do seu servidor JSP com o nome template.html e use o seguinte código JSP:
<%@page contentType=\"text/html\" import=\"java.io.*, java.util.*\" errorPage=\"ops.jsp\" %> <% String template = \"\"; String thisLine = \"\"; String paginaTitulo = \"Oi Target\"; String paginaCabecalho = \"Esse é o cabeçalho\"; String paginaDireita = \"Texto do lado direito da página\"; String paginaCentro = \"Texto principal da página\"; String paginaEsquerda = \"Texto do lado esquerdo da página\"; String paginaRodape = \"Texto de rodapé\"; Date dateNow = new Date(); paginaCentro = paginaCentro + \"<br />\"; paginaCentro = paginaCentro + \"<br />\"; paginaCentro = paginaCentro + \"Agora é \" + dateNow.getHours() + \":\" + dateNow.getMinutes(); // Le o arquivo template BufferedReader br = new BufferedReader ( new FileReader( getServletContext(). getRealPath(\"/template.html\")) ); while ((thisLine = br.readLine()) != null) { template = template + thisLine; } template = template.replaceFirst(\"_TITULO_\", paginaTitulo); template = template.replaceFirst(\"_CABECALHO_\", paginaCabecalho); template = template.replaceFirst(\"_DIREITA_\", paginaDireita); template = template.replaceFirst(\"_CENTRO_\", paginaCentro); template = template.replaceFirst(\"_ESQUERDA_\", paginaEsquerda); template = template.replaceFirst(\"_RODAPE_\", paginaRodape); %> <%= template %>
Pronto! Assim temos a interface separada do processamento. Sim, eu sei, que isso é uma coisa óbvia, mas deixa eu ter um histórico da minha aula de JSP, pô! 😉