Hi, I'm having a weird problem when Tomcat 5.5.9 generates JSP files. At the end of the generated HTML code, it prints three weird characters. Here is the java source code that Tomcat generates (look at the 3 characthers in color RED): I may guess the problem may came from some strange charset encoding configured in Tomcat, which is running on a Redhat 9 Linux machine (Linux 2.4.20-42.9.legacybigmem) Anyone had this problem before? TIA, Gabriel package org.apache.jsp.sener;
import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import java.sql.*; import java.io.*; import java.util.*; public final class login_jsp extends org.apache.jasper.runtime.HttpJspBase implements org.apache.jasper.runtime.JspSourceDependent { private final String getDato(final HttpServletRequest request, final JspWriter out, final boolean bMuestraDeBase, final ResultSet rs, final String attrRS, final String requestParam, final String defaultStr) throws SQLException { if (bMuestraDeBase) { if ( rs.getString(attrRS) != null ) return rs.getString(attrRS); return defaultStr; } else if ( request.getParameter(requestParam) != null ) { return request.getParameter(requestParam); } return defaultStr; } private final String getDato(final HttpServletRequest request, final JspWriter out, final boolean bMuestraDeBase, final ResultSet rs, final String attrRS, final String requestParam) throws SQLException { return getDato(request, out, bMuestraDeBase, rs, attrRS, requestParam, ""); } // Muestra de la base de datos, y si es null muestra defaultStr private final String getDato(final HttpServletRequest request, final JspWriter out, final ResultSet rs, final String attrRS, final String defaultStr) throws SQLException { return getDato(request, out, true, rs, attrRS, null, defaultStr); } private final void saveLog(final HttpServletRequest request, final Connection c, String cambio) throws SQLException { final String userid = (String)request.getSession().getAttribute("userid"); if ( userid == null ) { // se murio la session c.rollback(); return; } // obtiene los parametros for(Enumeration it=request.getParameterNames(); it.hasMoreElements();) { String name = (String)it.nextElement(); cambio += name + '=' + request.getParameter(name) + ';'; } PreparedStatement pstmt = c.prepareStatement( "insert into BITACORA (ID_LOG, TIME_STAMP, ID_USUARIO, CAMBIO) values "+ "(AUTOINCREMENT_BITACORA.NEXTVAL, SYSDATE, ?, ?)"); pstmt.setInt(1, Integer.parseInt(userid)); pstmt.setCharacterStream(2, new StringReader(cambio), cambio.length()); pstmt.executeUpdate(); } private static java.util.Vector _jspx_dependants; static { _jspx_dependants = new java.util.Vector(5); _jspx_dependants.add("/includes/header.jsp"); _jspx_dependants.add("/includes/db.jsp"); _jspx_dependants.add("/includes/menu_admin.jsp"); _jspx_dependants.add("/includes/footer.jsp"); _jspx_dependants.add("/includes/db_close.jsp"); } public java.util.List getDependants() { return _jspx_dependants; } public void _jspService(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; JspWriter _jspx_out = null; PageContext _jspx_page_context = null; try { _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html; charset=UTF-8"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out; out.write('\n'); out.write('\n'); out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01Transitional//EN\">\r\n"); out.write("\r\n"); out.write("<html>\r\n"); out.write("\r\n"); out.write("\t<head>\r\n"); out.write("\t\t<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\">\r\n"); out.write("\t\t<title>SENER</title>\r\n"); out.write("\t\t<link href=\"../zsener.css\" rel=\"stylesheet\" media=\"screen\">\r\n"); out.write("\t\t<script language=\"JavaScript\" src=\"../includes/gen_validatorv2.js\" type=\"text/javascript\"></script>\r\n"); out.write("\t\t<script Language=\"Javascript\">\r\n"); out.write("\r\n"); out.write("\t\t\tfunction ponerIndexPopup(elpopup,elvalor)\r\n"); out.write("\t\t\t{\r\n"); out.write("\t\t\t\tvar i = 1;\r\n"); out.write("\t\t\t\tvar longitud = elpopup.length - 1;\r\n"); out.write("\t\t\t\tfor(i=1;i<=longitud;i++)\r\n"); out.write("\t\t\t\t\t{\r\n"); out.write("\t\t\t\t\t\tif (elpopup.options[i].value == elvalor) { elpopup.selectedIndex = i;}\r\n"); out.write("\t\t\t\t\t}\r\n"); out.write("\t\t\t}\r\n"); out.write("\t\t</script>\r\n"); out.write("\t</head>\r\n"); out.write("\r\n"); out.write("\t<body bgcolor=\"#ffffff\" leftmargin=\"0\" marginheight=\"0\" marginwidth=\"0\" topmargin=\"0\">\r\n"); out.write("\t\t<!--inicio tope a-->\r\n"); out.write("\t\t<table id=\"Table_01\" width=\"100%\" height=\"134\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n"); out.write("\t\t\t<tr>\r\n"); out.write("\t\t\t\t<td width=\"193\" height=\"134\" rowspan=\"2\"><img src=\"../images/semicirc_01.jpg\" width=\"193\" height=\"134\"></td>\r\n"); out.write("\t\t\t\t<td align=\"left\" height=\"42\" background=\"../images/barratop_02.gif\"><img src=\"../images/barratop_01.gif\" width=\"32\" height=\"42\"></td>\r\n"); out.write("\t\t\t\t<td width=\"99\" height=\"42\"><img src=\"../images/barratop_03.gif\" width=\"99\" height=\"42\"></td>\r\n"); out.write("\t\t\t\t<td width=\"170\" height=\"134\" rowspan=\"2\"><img src=\"../images/sener_topder.gif\" width=\"170\" height=\"134\"></td>\r\n"); out.write("\t\t\t</tr>\r\n"); out.write("\t\t\t<tr>\r\n"); out.write("\t\t\t\t<td height=\"92\"><img src=\"../images/topmain1.gif\" width=\"325\" height=\"92\"></td>\r\n"); out.write("\t\t\t\t<td width=\"99\" height=\"92\"><img src=\"../images/topmain2.gif\" width=\"99\" height=\"92\"></td>\r\n"); out.write("\t\t\t</tr>\r\n"); out.write("\t\t</table>\r\n"); out.write("\t\t<!--fin tope a-->"); out.write('\n'); out.write('\n'); out.write('\n'); out.write('\n'); out.write('\n'); out.write('\n'); Connection conn = null; String ano_en_curso = ""+Calendar.getInstance().get(Calendar.YEAR); try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( "jdbc:oracle:thin:@lizard.webappcabaret.net:1521<http://jdbc:oracle:thin:@lizard.webappcabaret.net:1521> :orcl", "signeo_2", "sener"); } catch(SQLException e) { out.println("SQLException: " + e.getMessage() + "<BR>"); while((e = e.getNextException()) != null) out.println(e.getMessage() + "<BR>"); } catch(ClassNotFoundException e) { out.println("ClassNotFoundException: " + e.getMessage() + "<BR>"); } finally {} out.write("\n"); out.write("\t\t<!--inicia tabla ppal-->\n"); out.write("\t\t<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"white\">\n"); out.write("\t\t\t<tr>\n"); out.write("\t\t\t\t<td class=\"fondomenul\" valign=\"top\" width=\"173\">\n"); out.write("\t\t\t\t\n"); out.write("\t\t\t\t\t<table id=\"Table_01\" width=\"173\" bgcolor=\"white\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td width=\"173\" height=\"33\"><img src=\"../images/menul_01.jpg\" width=\"173\" height=\"33\" alt=\"\"></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\">\n"); out.write("\t\t\t\t\t\t\t\t<p><a href=\"index.jsp\"><span class=\"bajaalgo\"> Presentación</span></a></p>\n"); out.write("\t\t\t\t\t\t\t</td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\"><a href=\"../sener/listaempresas.jsp\"><span class=\"bajaalgo\"> Empresas</span></a></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\"><a href=\"../sener/listausuarios.jsp\"><span class=\"bajaalgo\"> Usuarios</span></a></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\"><a href=\"../sener/listaproductos.jsp\"><span class=\"bajaalgo\"> Productos</span></a></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\"><a href=\"../sener/circulares.jsp\"><span class=\"bajaalgo\"> Circulares</span></a></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write(" <tr>\n"); out.write(" <td class=\"menulete\" width=\"173\" height=\"21\" background=\"../images/menul_03.gif\"><a href=\"../sener/log.jsp\"><span class=\"bajaalgo\"> Log</span></a></td>\n"); out.write(" </tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td width=\"173\" height=\"14\"><img src=\"../images/menul_07.gif\" width=\"173\" height=\"14\"></td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td width=\"173\" background=\"../images/menul_08.gif\" class=\"menulete\">\n"); out.write("\t\t\t\t\t\t\t\t<img src=\"../images/menul_08.gif\" width=\"173\" height=\"10\">\n"); out.write("\t\t\t\t\t\t\t</td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t<td width=\"173\" background=\"../images/menul_08.gif\" class=\"menulete\">\t\n"); out.write("\t\t\t\t\t\t\t\t\t\t\t\t\t\n"); out.write("\t\t\t\t\t\t\tUsuario: <br>\n"); out.write(" "); if ( session.getAttribute("userfirst") != null ) { out.write("\n"); out.write(" "); out.print( session.getAttribute("userfirst") ); out.write(' '); out.print( session.getAttribute("userlast") ); out.write("\n"); out.write(" "); } out.write("\n"); out.write("\t\t\t\t\t\t\t<br><br>\n"); out.write("\t\t\t\t\t\t\tNivel: \n"); out.write(" "); if ( session.getAttribute("userlevel") != null ) { out.write("\n"); out.write(" "); out.print( session.getAttribute("userlevel") ); out.write("\n"); out.write(" "); } out.write("\n"); out.write("\t\t\t\t\t\t\t<br><br>\n"); out.write("\t\t\t\t\t\t\t<u><a href=\"logout.jsp\ ">Desconectarse</a></u>\n"); out.write("\t\t\t\t\t\t\t</td>\n"); out.write("\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t</table>"); out.write("\n"); out.write("\n"); out.write("\t\t\t\t</td>\n"); out.write("\t\t\t\t\t\n"); out.write("\t\t\t\t<td width=\"24\">\n"); out.write("\t\t\t\t</td>\n"); out.write("\t\t\t\t<td valign=\"top\">\n"); out.write("\t\t\t\t\t<p class=\"titulos\">Sistema de administración</p>\n"); out.write("\t\t\t\t\t<p> Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus ultricies tincidunt odio. Proin adipiscing orci eu orci. Nullam wisi tellus, gravida id, tincidunt id, tincidunt in, eros. Donec a dui. Fusce porttitor justo a ante. Donec massa felis, euismod iaculis, molestie sed, tempor sed, orci. Etiam vel augue. Nunc at justo eget felis vulputate mollis. Morbi bibendum est ut pede. Pellentesque mi dolor, convallis at, dapibus sollicitudin, vehicula et, nunc. Nulla facilisi. Mauris molestie rutrum nulla.</p>\n"); out.write("\t\t\t\t\t<div align=\"center\">\n"); out.write("\t\t\t\t\t\t<br>\n"); out.write("\t\t\t\t\t\t<table class=\"tablaingreso\" border=\"0\" cellspacing=\"0\" cellpadding=\"4\">\n"); out.write("\t\t\t\t\t\t\t<form action=\"check_user.jsp\" method=\"post\" name=\"ingresoadmin\">\n"); out.write("\t\t\t\t\t\t\t<tr height=\"16\">\n"); out.write("\t\t\t\t\t\t\t\t<td colspan=\"2\" align=\"center\" bgcolor=\"#2866d4\" width=\"304\" height=\"16\"><img src=\"../images/ingreso.gif\" alt=\"\" height=\"14\" width=\"73\" border=\"0\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t<tr height=\"13\">\n"); out.write("\t\t\t\t\t\t\t\t<td colspan=\"2\" width=\"304\" height=\"13\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t\t<td align=\"right\" nowrap width=\"130\"><font color=\"#214391\">e-mail</font></td>\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"166\"><input class=\"inputingreso\" type=\"text\" name=\"email\" size=\"24\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t\t<td align=\"right\" nowrap width=\"130\"><font color=\"#214391\">Contraseña</font></td>\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"166\"><input class=\"inputingreso\" type=\"password\" name=\"password\" size=\"24\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t<tr>\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"130\"></td>\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"166\"><input type=\"submit\" name=\"submitButtonName\" value=\"Enviar\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t<tr height=\"13\">\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"130\" height=\"13\"></td>\n"); out.write("\t\t\t\t\t\t\t\t<td width=\"166\" height=\"13\"></td>\n"); out.write("\t\t\t\t\t\t\t</tr>\n"); out.write("\t\t\t\t\t\t\t</form>\n"); out.write("\t\t\t\t\t\t</table>\n"); out.write("\t\t\t\t\t</div>\n"); out.write("\t\t\t\t\t<p></p>\n"); out.write("\t\t\t\t</td>\n"); out.write("\t\t\t\t<td width=\"24\">\n"); out.write("\t\t\t\t\n"); out.write("\t\t\t\t</td>\n"); out.write("\t\t\t</tr>\n"); out.write("\t\t</table>\n"); out.write("\t\t<!--termina tabla ppal-->\n"); out.write("<table width=\"100%\" bgcolor=\"#FFFFFF\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\r\n"); out.write("\t<tr height=\"14\">\r\n"); out.write("\t\t<td rowspan=\"2\" align=\"right\" valign=\"top\" bgcolor=\"#214391\" width=\"188\">\r\n"); out.write("\t\t\t<img src=\"../images/esquinero_footer.gif\" height=\"18\" width=\"19\" border=\"0\">\r\n"); out.write("\t\t</td>\r\n"); out.write("\t\t<td bgcolor=\"#FFFFFF\" height=\"14\">\r\n"); out.write("\t\t\t<img src=\"../images/spacer.gif\" height=\"14\" width=\"32\" border=\"0\">\r\n"); out.write("\t\t</td>\r\n"); out.write("\t</tr>\r\n"); out.write("\t<tr height=\"4\">\r\n"); out.write("\t\t<td height=\"4\" background=\"../images/pattern_footer.gif\"></td>\r\n"); out.write("\t</tr>\r\n"); out.write("\t<tr height=\"40\">\r\n"); out.write("\t\t<td bgcolor=\"#214391\" width=\"188\" height=\"40\"></td>\r\n"); out.write("\t\t<td bgcolor=\"#214391\" height=\"40\"></td>\r\n"); out.write("\t</tr>\r\n"); out.write("</table>\r\n"); out.write("</body>\r\n"); out.write("</html>\r\n"); out.write('\n'); * out.write('ï'); out.write('»'); out.write('¿');* if(conn != null) { try { conn.close(); } catch (Exception ignored) {} finally {} } out.write('\n'); } catch (Throwable t) { if (!(t instanceof SkipPageException)){ out = _jspx_out; if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (_jspx_page_context != null) _jspx_page_context.handlePageException(t); } } finally { if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context); } } }