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ô! 😉