我照网上的源码写了个数据库测试jsp页面
  <%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html;charset=gb2312" %>
  <html>
  <body>
  <%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
   String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
   //pubs 为你的数据库的
   String user="sa";
   String password="1983";
   Connection conn= DriverManager.getConnection(url,user,password);
   Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
   String sql="select job_id,job_desc from jobs";
   ResultSet rs=stmt.executeQuery(sql);
   while(rs.next()) { %>
    您的第一个字段内容为:<%=rs.getString(1)%><br>
    您的第二个字段内容为:<%=rs.getString(2)%><br>
  <% } %>
  <% out.print("数据库操作成功,恭喜你"); %>
  <% rs.close();
   stmt.close();
   conn.close();
  %>
  </body>
  </html>----------------------------------------------------------------
我的tomcat5.0 ,sqlserver打的sp4的补丁,3个jdbc都放在了common/lib下,我把这个jsp文件放在了ROOT/下,运行就出现了这样的错误:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: Unable to compile class for JSP
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:520)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.io.UTFDataFormatException: Invalid byte 1 of 1-byte UTF-8 sequence.
org.apache.jasper.xmlparser.UTF8Reader.invalidByte(UTF8Reader.java:615)
org.apache.jasper.xmlparser.UTF8Reader.read(UTF8Reader.java:487)
org.apache.jasper.xmlparser.XercesEncodingDetector.load(XercesEncodingDetector.java:1000)
org.apache.jasper.xmlparser.XercesEncodingDetector.skipString(XercesEncodingDetector.java:951)
org.apache.jasper.xmlparser.XercesEncodingDetector.scanXMLDecl(XercesEncodingDetector.java:1209)
org.apache.jasper.xmlparser.XercesEncodingDetector.getEncoding(XercesEncodingDetector.java:108)
org.apache.jasper.xmlparser.XercesEncodingDetector.getEncodingMethod(XercesEncodingDetector.java:121)
org.apache.jasper.xmlparser.XMLEncodingDetector.getEncoding(XMLEncodingDetector.java:57)
org.apache.jasper.compiler.ParserController.determineSyntaxAndEncoding(ParserController.java:313)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:170)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:101)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:203)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:470)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:451)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:439)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28这是哪里出错啊?

解决方案 »

  1.   

    自己顶!刚学web,各位帮帮忙啊!教教小弟我!
      

  2.   

    建议调试步骤:
    1、把charset=gb2312改为charset=utf-8,看运行结果(汉字可能会出现乱码)
    2、把数据库操作语句注释掉,看运行结果,如果运行正确,则一步步缩小注释范围
      

  3.   

    您的第一个字段内容为:<%=rs.getString(1)%><br>
        您的第二个字段内容为:<%=rs.getString(2)%><br>
    把中文去掉
    <%=rs.getString(1)%><br>
    <%=rs.getString(2)%><br>
      

  4.   

    你应该在/tomcat/webapps下新建立个目录,然后将你的jsp文件放进去,然后访问看行不行?
      

  5.   

    再检查下你的web.xml看看是否是gb2312
      

  6.   

    <%@ page contentType="text/html;charset=gb2312" import="java.lang.*,java.io.*,java.sql.*,java.util.*"%>
    <html>
    <body>
    <%
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    String url="jdbc:sqlserver://127.0.0.1;databaseName=yourdb;";
    String user="sa";
    String password="sasa";
    Connection conn=DriverManager.getConnection(url,user,password);
    Statement stmt=conn.createStatement();
    String sql="select item1,item2 from yourtable";
    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()) { %>
      您的第一个字段内容为:<%=rs.getString(1)%><br>
      您的第二个字段内容为:<%=rs.getString(2)%><br>
    <%
    }
    %><%
    out.print("数据库操作成功,恭喜你");
    %><%
    rs.close();
    stmt.close();
    conn.close();
    %>
    </body>
    </html>
      

  7.   

    如果你使用SQL2005,请打开SQL Server Configuration Manager,查看“SQL Server 2005网络配置”-〉SQLSERVER 的协议-〉TCP/IP是否禁用,如果禁用了,请启用TCP/IP
      

  8.   

    编码问题
    建议:检查一下你的这个jsp文件是什么编码类型,用记事本打开JSP文件,另存为后可看到此jsp的编码类型,然后再作处理.
      

  9.   

    回复人:mydeman(漫步者) ( 五级(中级)) 信誉:100  2007-01-09 22:56:35  得分:0

    建议调试步骤:
    1、把charset=gb2312改为charset=utf-8,看运行结果(汉字可能会出现乱码)
    2、把数据库操作语句注释掉,看运行结果,如果运行正确,则一步步缩小注释范围
    ------------------------------------------------------------------------------------
    确实是gb编码的问题 , 谢谢已解决!