servlet程序哪里错了啊?谢谢~import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*; 
public class CounterServlet extends HttpServlet 
{
private static final String CONTENT_TYPE = "text/html; charset=GBK";
    //private String indata;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException 
{
/*接受客户端信息*/
response.setContentType (CONTENT_TYPE); PrintWriter out = response.getWriter();
//indata = request.getParameter("DATA");
/*与数据库连接查询*/
String url = url="jdbc:microsoft:sqlserver://localhost:1433;Da2tabaseName=chfjava"; 
Connection con; 
Statement stmt; 
String query = "select * from shop"; 
try { 
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 

catch(java.lang.ClassNotFoundException e) { 
System.err.print("ClassNotFoundException: "); 
System.err.println(e.getMessage()); 

try { 
out.println("<h2 align='center'>" + "搜索结果" + "</h2>");
out.println("<html>");
out.println("<head><title>商品搜索结果</title></head>");
out.println("<body>");
con = DriverManager.getConnection(url, "sa", ""); 
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query); 
while (rs.next()) { 
String s = rs.getString("id"); 
String t = rs.getString("name");
String f = rs.getString("price"); 
out.println(s + " "  +  t + " " + f); 

stmt.close(); 
con.close(); 
//out.println("<P>"+ indata + "</P>");
out.println("</body></html>");
out.close();

catch(SQLException ex) { 
System.err.println("SQLException: " + ex.getMessage()); 

}
}
html文件<html>
<head>
<title>网上购物</title>
</head>
<body bgcolor="white">
<table border="10" cellpadding="10" align="CENTER">
<tr><td width="275">
<h2>商品信息查询</h2>
<br>输入你要查询的信息<br>
<form method="post" action="CounterServlet"> 
<input type= "text" name="DATA" size=30> 
<p>
<input type="SUBMIT" value= "查询"> 
<input type="RESET" value= "重新输入"> 
</form> 
</td></tr> 
</table> 
</body> 
</html>运行结果
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: Error allocating a servlet instance
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Thread.java:619)
root cause java.lang.NoClassDefFoundError: test/CounterServlet (wrong name: CounterServlet)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:620)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1853)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:875)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1330)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1209)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Thread.java:619)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.
--------------------------------------------------------------------------------Apache Tomcat/5.5.26

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cschf】截止到2008-06-24 00:08:57的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:40                 
    结贴数:1                  结贴分:20                 
    未结数:1                  未结分:20                 
    结贴率:50.00 %            结分率:50.00 %            
    楼主加油
      

  2.   

    CounterServlet有没有package test;这句?
      

  3.   

    java.lang.NoClassDefFoundError: test/CounterServlet (wrong name: CounterServlet)你的web.xml中的关于test/CounterServlet 的servlet配置有问题。查查。
      

  4.   

    web.xml中这个servlet是怎么配置的
      

  5.   

    web.xml中这个servlet是怎么配置的
      

  6.   


            <servlet>
    <servlet-name>CounterServlet</servlet-name>//servlet名称可以自定义
    <servlet-class>
    CounterServlet所在的位置
    </servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>CounterServlet</servlet-name>//名称同上、二者名称相同
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
      

  7.   

    String url = url="jdbc:microsoft:sqlserver://localhost:1433[color=#FF6600];Da2tabaseName=chfjava"; [/color]
      

  8.   

    首先你的连接字符串导错了 
     String url = url="jdbc:microsoft:sqlserver://localhost:1433;Da2tabaseName=chfjava"; 
    其次楼主 你看你导入包没有 SQLSERVER驱动包
    msbase.jar,msutil.jar,mssqlserver.jar
      

  9.   

    应该是你的servlet-name写错了
    觉得
    仔细核对下
      

  10.   

    虽然我不知道问题出在哪,但我还是发现了一个小的细节:
     ResultSet rs = stmt.executeQuery(query); 
                while (rs.next()) { 
                    String s = rs.getString("id"); 
                    String t = rs.getString("name");
                    String f = rs.getString("price"); 
                    out.println(s + " "  +  t + " " + f); 
                } 
                stmt.close(); 
                con.close(); 
    这段代码中应该还要关闭一个对象  rs.close();  正确的应为:
     ResultSet rs = stmt.executeQuery(query); 
                while (rs.next()) { 
                    String s = rs.getString("id"); 
                    String t = rs.getString("name");
                    String f = rs.getString("price"); 
                    out.println(s + " "  +  t + " " + f); 
                } 
                rs.close();
                stmt.close(); 
                con.close(); 
      

  11.   

    Da2tabaseName 我来迟了
      

  12.   

    很明显的问题sevlet加上包package test;然后web.xml 里面改成下面的<servlet-class>test.CounterServlet </servlet-class>正式的开发里面最好用包结构因为有包的类无法引用到无包的类
      

  13.   

    String url = url="jdbc:microsoft:sqlserver://localhost:1433;Da2tabaseName=chfjava"; 
    我写的这句没有错啊,和你们说的一样啊