Tomcat4.x + com.sun.web.shell.Startup

解决方案 »

  1.   

    你在servlet里面默认的是doPost()方法吗?
    如果不是的话改成doPost()试试看
      

  2.   

    把你得Servlet铁出来大家看看吧。
      

  3.   

    ReserveLogin是提交数据的叶面,
    ReserveResponse是接受数据的叶面.
    第一次提交,叶面无法显示,刷新后,提交的数据丢失,叶面正常显示出所要的参数发生错误,即显示正常.//ReserveLogin.java
    /////////////////////////////////////////////////////
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;public class ReserveLogin extends HttpServlet{
    //support the post method
    public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    this.doGet( req, resp );
    } public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    resp.setContentType("text/html");
    PrintWriter out=new PrintWriter(resp.getOutputStream());
    String bookID = new String();
    bookID = req.getParameter( "bookID");
    String targetURL = new String();
    if( bookID == null || bookID.equals("") ){
    out.println( getPageHeaderString() );//need </body> and </html>
    out.println( "Parameter error!<br>" );
    out.println( "</body>\n</html>" );
    out.flush();
    return;
    }
    targetURL = resp.encodeRedirectURL( "http://surya.macs.hw.ac.uk:8082/servlet/ReserveResponse?bookID=" + bookID.trim());
    //targetURL = resp.encodeRedirectURL( "http://127.0.0.1:8080/ReserveResponse.do?bookID="  + bookID.trim());
    out.println("<!DOCTYPE HTML PUBLIC");
    out.println("   \"-//W3C//DTD HTML 4.01 Transitional//EN\" ");
    out.println("   \"http://www/w3.org/TR/html4/loose.dtd\"> ");
    out.println("<html>");
    out.println("<head>");
    out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
    out.println("<title>Login</title>");
    out.println("<script language=\"JavaScript\" type=\"text/javascript\">");
    out.println("<!-- hide this stuff from other browsers ");
    out.println("function checkName( inputName ){");
    out.println(" if( inputName.length == 0 )");
    out.println(" return false;");
    out.println(" var validateInput = /\\W{1,}/;");
    out.println(" if( !inputName.match( validateInput )){");
    out.println(" return true;");
    out.println(" } else {");
    out.println(" return false;");
    out.println(" };");
    out.println("}");
    out.println("");
    out.println("function checkPwd ( inputPwd ){");
    out.println(" var validateInput = /\\w{6,8}/;//password should be 6-8 letters");
    out.println(" var max8 = /\\w{9,}/;//password should not be more than 8 letters");
    out.println(" if( inputPwd.match( validateInput ) &&  checkName( inputPwd ) && !inputPwd.match(max8)){");
    out.println(" return true;");
    out.println(" }else{");
    out.println(" return false;");
    out.println(" }");
    out.println("}");
    out.println("");
    out.println("//Final checking");
    out.println("function checkAll(){");
    out.println(" if( !checkName( window.document.loginForm.userID.value ) || !checkPwd( window.document.loginForm.userPwd.value )){");
    out.println(" window.document.loginForm.userID.focus();");
    out.println(" alert(\"User name or password is NOT valid!\");");
    out.println(" return false;");
    out.println(" }");
    out.println(" return true;");
    out.println("}");
    out.println("// end the hiding comment --> ");
    out.println("</script> ");
    out.println("");
    out.println("<LINK href=\"lib.css\" type=\"text/css\" rel=\"stylesheet\">");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Please Login</h1>");
    out.println("<br>");
    out.println("<br>");
    out.println("<br>");
    out.println("<form method=\"POST\" action =\"" + targetURL + "\" name =\"loginForm\" onsubmit =\"return checkAll()\">");
    out.println("  <center><h3>Username :&nbsp;</h3> <input type=\"text\" name=\"userID\" size=\"20\"></center> <br>   ");
    out.println("  <center><h3>Password :&nbsp;</h3> <input type=\"password\" name=\"userPwd\" size=\"20\"></center> <br>");
    out.println("  <center><input type=\"submit\" value=\"Login\" name=\"submitBtn\" onclick=\"\">&nbsp&nbsp&nbsp<input type=\"reset\" value=\"Reset\" name=\"resetBtn\"></center> <br>");
    out.println("  <center><a href=\"Registration.htm\">New user please click here.</a> </center>");
    out.println("</form>   ");
    out.println("</body>   ");
    out.println("</html>");
    out.flush();
    out.close();
    }

    //test function
    public String getPageHeaderString(){
    String header;
    header = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"\n" +
     "\"http://www.w3.org/TR/html4/loose.dtd\">\n" +
     "<html>\n" +
     "<head>\n" +
     "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" +
     "<title>Online Library</title>\n" +
     "</head>\n" +
     "<body>\n"; 
    return header;
    }
    }
      

  4.   

    //////////////////////////////////////////////////////////////////
    //ReserveResponse.java
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    import java.util.*;
    import java.sql.*;public class ReserveResponse extends HttpServlet{
    private final String url = "jdbc:oracle:thin:@oracle:1521:orcl";
    private final String useName = "wz2";
    private final String passWord = "wz2";
    private ResultSet rs;
    private Connection con;
    private Statement stmt;
    private boolean isConnected = false;

    //do not support GET method
    public void doGet( HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    doPost( req, resp );
    }
    public void service( HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    super.service( req, resp );
    doPost( req, resp );
    }
    public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
    resp.setContentType("text/html");
    PrintWriter out= resp.getWriter();
    String bookTitle = new String();
    String userID = req.getParameter( "userID");
    String userPwd = req.getParameter( "userPwd" );
    String bookID = req.getParameter( "bookID" );
    String sql = new String();
    ResultSet rs=null;
    if( userID==null || userPwd==null || bookID==null || userID.equals("") || bookID.equals("") ){
    out.println( this.getErrorMsg( "Parameter error.<br>" ) );
    out.flush();
    out.close();
    return;
    }
    if( !connectDB() ){
    out.println( this.getErrorMsg( "Fail to connect database.<br>" ) );
    out.flush();
    out.close();
    return;
    }
    if( ! checkUser( userID, userPwd ) ){
    this.disconnectDB();
    out.println( this.getErrorMsg( "User name or Password error.<br>" ) );
    out.flush();
    out.close();
    //System.out.println(this.getErrorMsg( "aaaaaa<br>"));
    return;
    }

    bookTitle = getBookTitle( bookID.trim() );
    System.out.println("bookTitle:" + bookTitle );
    if( bookTitle == null || bookTitle.equals("") ){
    out.println( this.getErrorMsg("Fail to find the specified book.<br>"));
    out.flush();
    out.close();
    this.disconnectDB();
    return;
    }

    //check whether user is borrowing this book
    sql = "select * from reserve where book_id = " + bookID.trim()+ " and  borrower_id = " + userID.trim();
    try{
    rs = stmt.executeQuery(sql);
    if( rs.getFetchSize() >= 1 ){
    out.println( this.getErrorMsg( "You are borrowing this book" ) );
    out.flush();
    out.close();
    this.disconnectDB();
    return;
    }
    //check whether book is being borrowed by others
    sql = "select * from borrow where book_id = " + bookID.trim();
    rs = stmt.executeQuery(sql);
    if( rs.getFetchSize() < 1 ){
    //the book is in library, insert record into hold table
    sql = "insert into hold values ( "+ bookID.trim() + ", " + userID.trim() + ", SYSDATE )";
    if( stmt.executeUpdate(sql)<1 ){
    out.println( this.getErrorMsg( "Database error. Please try again later." ) );
    out.flush();
    this.disconnectDB();
    return;
    }//if( stmt.executeUpdate(sql)<1 )
    //update book record
    sql = "update book set status = 'Reserved' where book_id = " + bookID.trim();
    if( stmt.executeUpdate(sql)<1 ){
    out.println( this.getErrorMsg( "Database error. Please try again later." ) );
    out.flush();
    out.close();
    this.disconnectDB();
    return;
    }
    }else{
    //the book is not in library, insert record into reserve table
    sql = "insert into reserve values ( "+ bookID.trim() + ", " + userID.trim() + ", SYSDATE )";
    if( stmt.executeUpdate(sql)<1 ){
    out.println( this.getErrorMsg( "Database error. Please try again later." ) );
    out.flush();
    out.close();
    this.disconnectDB();
    return;
    }//if( stmt.executeUpdate(sql)<1 )
    }//else
    this.disconnectDB();
    }catch( Exception e ){
    System.out.print( e.getMessage());
    out.println( getErrorMsg( e.getMessage() ) );
    out.flush();
    out.close();
    return;
    }
    //caculate the hold date
    java.util.Calendar calendar;
    long lDate = 0;
    calendar = java.util.Calendar.getInstance();
    lDate = calendar.getTimeInMillis();
    lDate = 60*60*24*60;//hold for 60 days
    calendar.setTimeInMillis(lDate);
    //output the web page
    out.println("<!DOCTYPE HTML PUBLIC");
    out.println("   \"-//W3C//DTD HTML 4.01 Transitional//EN\"");
    out.println("   \"http://www/w3.org/TR/html4/loose.dtd\">");
    out.println("<html>");
    out.println("<head>");
    out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">");
    out.println("<title>Reserve Response</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Online Library</h1><br>");
    out.println("<p align=\"center\"><font color=\"#FF0000\"><b>Hold Response</b></font></p>");
    out.println("<table border=\"3\" cellpadding=\"2\" width\100%\">");
    out.println("  <tr>");
    out.println("    <td width=\"25%\" align=\"center\"><b>Title/Author</b></td>");
    out.println("    <td width=\"25%\" align=\"center\"><b>Hold Expiration Date</b></td>");
    out.println("    <td width=\"25%\" align=\"center\"><b>Pickup Location</b></td>");
    out.println("    <td width=\"25%\" align=\"center\"><b>Hold Status</b></td>");
    out.println("  </tr>");
    out.println("  <tr>");
    out.println("    <td width=\"25%\" align=\"center\">A Computer Book</td>");
    out.println("    <td width=\"25%\" align=\"center\">" + Integer.toString(calendar.get(calendar.DAY_OF_MONTH)) + "/" + Integer.toString( calendar.get(calendar.MONTH) ) + "/" + Integer.toString( calendar.get(calendar.YEAR) ) + "</td>" );
    out.println("    <td width=\"25%\" align=\"center\">Heriot-Watt University</td>");
    out.println("    <td width=\"25%\" align=\"center\">New Hold Created</td>");
    out.println("  </tr>");
    out.println("</table>");
    out.println("<form method=\"Get\" action=\"Search.do\">");
    out.println("  <p align=\"center\"><input type=\"submit\" value=\"Return to Search\" name = \"backBtn\" ></p>");
    out.println("</form>");
    out.println("</body>");
    out.println("</html>");
    out.flush();
    out.close();
    return;
    }

      

  5.   

    看看是否是ie缓存的设置问题工具->internet选项-〉internet临时文件->设置->每次访问此页时检查
      

  6.   

    在ReserveLogin.java中只留service()方法,把ReserveResponse.java中只留doPost()试试
      

  7.   

    在ReserveLogin.java中只留service()方法,把ReserveResponse.java中只留doPost()试试试了,还是不行
      

  8.   

    Mailbomb(网络咖啡) 
    Thanks for your up.
      

  9.   

    顶一下,你把现在的doGet()里面的东西全部搬到doPost()里面,然后,用doGet(...){doPost()}试试
      

  10.   

    kreven(天地无用恨离别) :
    试了,还是不行anyway, Thanks a lot.
      

  11.   

    kreven(天地无用恨离别) :
    试了,还是不行anyway, Thanks a lot.
      

  12.   

    SUN公司已经给我回信了,此问题似乎被定为新的BUG.所以,不玩了.准备结帖子.
      

  13.   

    这个问题我昨天还碰到了呢。
    你的tomcat运行了多少天了?
    我这边重起了一下tomcat就ok了,也不知道是不是和你一样。
      

  14.   

    Tomcat 不是我能控制的.是学校服务器上的,估计跑了几个月是没什么疑问的.