用POST向SERVLET提交的数据,第一次无法显示,刷新后正常 Tomcat4.x + com.sun.web.shell.Startup 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在servlet里面默认的是doPost()方法吗?如果不是的话改成doPost()试试看 把你得Servlet铁出来大家看看吧。 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 : </h3> <input type=\"text\" name=\"userID\" size=\"20\"></center> <br> "); out.println(" <center><h3>Password : </h3> <input type=\"password\" name=\"userPwd\" size=\"20\"></center> <br>"); out.println(" <center><input type=\"submit\" value=\"Login\" name=\"submitBtn\" onclick=\"\">   <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; }} ////////////////////////////////////////////////////////////////////ReserveResponse.javaimport 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; } 看看是否是ie缓存的设置问题工具->internet选项-〉internet临时文件->设置->每次访问此页时检查 在ReserveLogin.java中只留service()方法,把ReserveResponse.java中只留doPost()试试 在ReserveLogin.java中只留service()方法,把ReserveResponse.java中只留doPost()试试试了,还是不行 Mailbomb(网络咖啡) Thanks for your up. 顶一下,你把现在的doGet()里面的东西全部搬到doPost()里面,然后,用doGet(...){doPost()}试试 kreven(天地无用恨离别) :试了,还是不行anyway, Thanks a lot. kreven(天地无用恨离别) :试了,还是不行anyway, Thanks a lot. SUN公司已经给我回信了,此问题似乎被定为新的BUG.所以,不玩了.准备结帖子. 这个问题我昨天还碰到了呢。你的tomcat运行了多少天了?我这边重起了一下tomcat就ok了,也不知道是不是和你一样。 Tomcat 不是我能控制的.是学校服务器上的,估计跑了几个月是没什么疑问的. 求助:java获得html网页编码字段的正则表达式 求解一行关于jndi代码 J2EE一些系统的架构,麻烦提供些资料参考 Jbuilder 里tomcat下建立的WebModule路径只能是大写,怎么改 有人用display tag吗? James安装问题:运行run.bat提示下面的信息 怎么在本页面中用iframe的onmousemove java 实现在线录音(200分) 求助高手:request.getInputStream()的用法 请教表单提交的小问题~ 哪里有比较好的jsp源程序 急!在线等待
如果不是的话改成doPost()试试看
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 : </h3> <input type=\"text\" name=\"userID\" size=\"20\"></center> <br> ");
out.println(" <center><h3>Password : </h3> <input type=\"password\" name=\"userPwd\" size=\"20\"></center> <br>");
out.println(" <center><input type=\"submit\" value=\"Login\" name=\"submitBtn\" onclick=\"\">   <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;
}
}
//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;
}
Thanks for your up.
试了,还是不行anyway, Thanks a lot.
试了,还是不行anyway, Thanks a lot.
你的tomcat运行了多少天了?
我这边重起了一下tomcat就ok了,也不知道是不是和你一样。