不是很复杂..可我就是死活找不到出错信息什么的.每次一点提交,整个页面就卡死在POST上面没有任何动作了..(PS..第一次练习JAVA的东西)OTLindex.html:<FORM METHOD="POST" ACTION="servlet/bbs.login">
<TABLE>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD>用户名:<INPUT TYPE="text" NAME="userName"></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD>密码:&nbsp;&nbsp;<INPUT TYPE="password" NAME="passWord"></TD>
<TD></TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="submit" value="提交"></TD>
<TD></TD>
</TR>
</TABLE>
</FORM>============================login.javapackage bbs;
import java.io.*;
import java.sql.*;import javax.servlet.*;
import javax.servlet.http.*;import bbs.db;public class login extends HttpServlet{
  public void init(ServletConfig config) throws ServletException{
    super.init(config);
  }

  public synchronized void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
    db mysql = new db();
    ResultSet rs = null;
    Statement sql   = null;
    try {
      sql = mysql.getStmt();
    } catch (SQLException e) {
      e.printStackTrace();
    }    String query = "SELECT * FROM club_info_2 limit 0,20";
    try {
      rs = sql.executeQuery(query);
    } catch (SQLException e) {
      e.printStackTrace();
    }
    PrintWriter out = response.getWriter();
    response.setContentType("text/html");
    String userName = request.getParameter("userName");
    String passWord = request.getParameter("passWord");
    out.println("<html>");
    out.println("<body>");
    out.println(userName);
    out.println(passWord);
    out.println(rs);
    out.println("</body>");
    out.println("</html>");
  }  public synchronized void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
    out.println("专供测试");
  }
}=================================
db.javapackage bbs;
import java.sql.*;public class db {
  Connection con  = null;
  Statement stmt  = null;
  Statement stmt1 = null;
  public db(){
    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
    } catch (InstantiationException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      e.printStackTrace();
    }
    try {
      con = DriverManager.getConnection("jdbc:mysql://localhost:3306/user?user=&password=&userUnicode=true&characterEncoding=GB2312");
      System.out.println(con);
    } catch (SQLException e) {
      e.printStackTrace();
    }
  }

  public Statement getStmt() throws SQLException{
    return con.createStatement();
  }  public Statement getStmt1() throws SQLException{
    return con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  }
}

解决方案 »

  1.   

    你的web.xml上面配制了吗??
    用servlet要先在web.xml上面配置下
    servlet/bbs.login改成servlet/bbs/login 试下
      

  2.   

    public synchronized void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{哪本教你这种写法的,把synchronized去掉
      

  3.   

    XML我配过了.servlet/bbs.login改成servlet/bbs/login 试下
    这个我确定代码是走的通的我把读SQL的几段代码去掉就能显示出来.
    但一调用db.new 一个db类就不行了
      

  4.   

    "synchronized"
    ========
    确实有点搞笑啊
      

  5.   

    好像确实是synchronized的问题...
    我不太清楚这个是什么原因..一直用PHP的..PHP没这东西..
    别搞笑不搞笑了..啥原因啊?
      

  6.   

    晕,你把servlet的生命周期认真看一下,servlet在整个应用生命周期内只创建一次,以后的每次调用他都是创建一个新的线程,同步的问题web服务器已经帮你管理了
      

  7.   

    注:在处理多线程问题时,必须注意这样一个问题:当两个或多个线程同时访问同一个变量,其中一个线程需要修改这个变量时,我们应对这样的问题作出处理,否则可能发生混乱.---------------------------
    这句话意味着在servlet的doPost,doGet,service方法中应该尽量使用局部变量,除非是不再改变的全局变量