Credo di aver sottovalutato la cosa, comunque ecco come ho fatto per generare la tabella che mostra i valori di cui poi fare una POST:
codice:
[ottengo i valori di username e password per il DB]
<form name="f" action="doupdate.jsp" method="POST">
<table BORDER="1">
<tr><th>Nr.</th><th>attributo1</th><th>attributo2</th></tr>
<%
try{
String MY_URL = "jdbc:mysql://localhost/nomedatabase";
Class.forName(MY_DRIVER);
Connection c = DriverManager.getConnection(MY_URL,LOGIN, PASSWD);
Statement s = c.createStatement();
ResultSet rs = s.executeQuery("SELECT id, attr_1, attr_2 FROM nome_tabella");
String attr_1="", attr_2="";
int row=0;
while(rs.next()){
attr_1 = rs.getString("attr_1");
attr_2 = rs.getString("attr_2");
row = rs.getInt("id");
%>
<tr><td><input type="text" name="id<%=row %>" value="<%=row %>" size="2" READONLY/></td>
<td><input type="text" name="attr_1<%=row %>" value="<%=attr_1 %>" size="50"/></td>
<td><input type="text" name="attr_2<%=row %>" value="<%=attr_2 %>" style="text-transform:uppercase;" onkeyup="this.value=this.value.toUpperCase()"/></td></tr>
<%
}
session.setAttribute("username", LOGIN);
session.setAttribute("password", PASSWD);
}catch (SQLException s){
// se cado qui, in genere era per username o password errate
response.sendRedirect("loginfailed.jsp");
}
%>
</table>
<input type="submit" value="Aggiorna">
</form>
Poi alla pressione del tasto Aggiorna vengo reindirizzato ad un'altra JSP che effettua l'update e che poi mi rimanda a questa JSP che mostra i risultati.
Comunque problemi con caratteri speciali mi pare di non averne avuti. Non è previsto l'uso di doppi apici e lettere con la dieresi le prende senza problemi. Al limite potrei inserire un javascript che mi mostra un messaggio che impedisce l'uso di caratteri speciali.