/* * guestbookServlet.Java * * Created on */
import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import java.util.Date; /** * * @author 川石 * 请尊重作者的劳动 * @version 1.0 */ public class guestbookServlet extends HttpServlet {
boolean debug=false; String sDBDriver; Connection conn=null; ResultSet rs=null; /** Initializes the servlet. */ public void init(ServletConfig config) throws ServletException { super.init(config); if(debug) sDBDriver=new String("sun.jdbc.odbc.JdbcOdbcDriver"); else sDBDriver=new String("org.gjt.mm.mysql.Driver"); try{ Class.forName(sDBDriver); } catch(java.lang.ClassNotFoundException e){
System.err.println("Driver类初始化:"+e.getMessage()); }
}
/** Destroys the servlet. */ public void destroy() {
}
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { response.setContentType("text/Html;charset=gb2312"); java.io.PrintWriter out = response.getWriter(); boolean empty=true; boolean noResult=true; String sqlStr; int currentPage=0; int totalPage=0; int reccount=0; ResultSet myrs=null; String username=request.getParameter("username"); String email=request.getParameter("email"); String UContent=request.getParameter("ucontent"); String ipage=request.getParameter("ipage"); if(ipage==nullipage.length()==0) currentPage=1; else currentPage=Integer.parseInt(ipage); if((username==nullusername.length()==0)(ucontent==nullucontent.length()==0))empty=true; else empty=false;
Date myDate=new Date(); //String intime=new String(String.valueOf(myDate.getYear()+1990)+String.valueOf(myDate.getMonth())); String year=String.valueOf(myDate.getYear()+1900); String month=String.valueOf(myDate.getMonth()+1); if(month.length()==1) month=new String("0"+month); String days=String.valueOf(myDate.getDate()); if(days.length()==1) days=new String("0"+days); String hours=String.valueOf(myDate.getHours()); if(hours.length()==1) hours=new String("0"+hours); String minutes=String.valueOf(myDate.getMinutes()); if(minutes.length()==1) minutes=new String("0"+minutes);
String intime=year+"-"+month+"-"+days+" "+hours+":"+minutes; if(email==nullemail.length()==0) email=new String(""); if(!empty){ //username=convert(username); //email=convert(email); //ucontent=convert(ucontent); sqlStr="insert into Mintegbook(Mname,Memail,Mcontent,Mtime,Mid) values("+username+","+email+","+ucontent+","+intime+",1)"; getDsnConn(); executeInsert(sqlStr); } sqlStr=new String("select Mname,Memail,Mcontent,Mtime from Mintegbook order by Mtime DESC");
getDsnConn(); reccount=getRecordCount("Mintegbook"); if(reccount==0) noResult=true; else noResult=false; if(!noResult){ int ipageSize=10; totalPage=getTotalPage("Mintegbook",ipageSize); if(currentPage>totalPage) currentPage=totalPage; int cursor=(currentPage-1)*ipageSize+1; try{ myrs=executeScrollableQuery(sqlStr); myrs.absolute(cursor); } catch(SQLException e){ noResult=true; } } out.println("<HTML><HEAD><TITLE>我的Servlet留言板</TITLE>"); out.println("<META http-equiv="Content-Type" content="text/html; charset=gb2312">"); out.println("<STYLE type="text/Css">"); out.println("<!--"); out.println(".mytext { font-family: "宋体"; font-size: 12px}"); out.println(" -->"); out.println("</STYLE>"); out.println("</HEAD>"); out.println("<BODY bgcolor="#FFFFFF" text="#000000">"); out.println("<TABLE width="600" border="0" cellspacing="0" cellpadding="0" align="CENTER" class="mytext">"); out.println("<TR><TD height="22"> <a href="http://www.vcdoor.com">我的主页</a> 我的Servlet留言板(<A href="mailto:yf188@21cn.com">川石</A>制作)</TD></TR>"); out.println("<TR><TD height="1" bgcolor="#999933"></TD></TR>"); out.println("</TABLE>"); out.println("<BR>"); out.println("<TABLE width="600" border="0" cellspacing="0" cellpadding="0" align="CENTER" class="mytext">"); out.println("<TR><TD height="8"></TD></TR>"); out.println("<TR><TD height="18" bgcolor="#f7f7f7"><DIV align="right">"); out.println("共有 "+reccount + " 条留言 "); out.println(" 当前第<font color=#ff0000>"+currentPage+"</font>/共 "+totalPage+" 页 "); if(currentPage>1) out.println(" <a href=guestbookServlet?ipage=1>首页</a> <a href=guestbookServlet?ipage="+(currentPage-1)+">上一页</a> "); else out.println(" 首页 上一页 "); if(currentPage<totalPage) out.println(" <a href=guestbookServlet?ipage="+(currentPage+1)+">下一页</a> <a href=guestbookServlet?ipage="+totalPage+">末页</a> "); else out.println(" 下一页 末页 ");
out.println("</DIV></TD></TR>");
out.println("</TABLE>"); out.println("<BR>");
//这里是显示留言内容 if(!noResult){ String dname; String demail; String dcontent; String dtime; Date temptime; try{ do{
dname=new String(myrs.getString("Mname")); demail=new String(myrs.getString("Memail")); dcontent=new String(myrs.getString("Mcontent")); try{ dtime=new String(myrs.getObject("Mtime").toString()); } catch(java.lang.NullPointerException e){ dtime=new String("2001-04-06 12:30"); } if(dname==null) dname=new String("川石"); if(demail==null) demail=new String("yf188@21cn.com"); if(dcontent==null) dcontent=new String("test"); if(dtime==null) dtime=new String("2001-04-06 12:30"); dname=convert(dname); dcontent=convert(dcontent); //temptime=myrs.getDate("Mtime");
/* String tempyear=String.valueOf(temptime.getYear()+1900); String tempmonth=String.valueOf(temptime.getMonth()+1); if(tempmonth.length()==1) tempmonth=new String("0"+tempmonth); String tempdays=String.valueOf(temptime.getDate()); if(tempdays.length()==1) tempdays=new String("0"+tempdays); String tempminute=String.valueOf(temptime.getMinutes()); if(tempminute.length()==1) tempminute=new String("0"+tempminute); String temphours=String.valueOf(temptime.getHours()); if(temphours.length()==1) temphours=new String("0"+temphours); String dtime=tempyear+" 年 "+ tempmonth +" 月 "+ tempdays +" 日 " + temphours+ " 时 "+ tempminute + " 分 "; */ out.println("<TABLE width="600" border="0" cellspacing="0" cellpadding="4" align="CENTER" class="mytext">"); out.println("<TR><TD>姓名 <A href="mailto:"+demail+"">"+dname+"</A> 留言时间:"+dtime+"</TD></TR>"); out.println("<TR><TD height="10"></TD></TR>"); out.println("<TR><TD height="10">"+dcontent+"</TD></TR>"); out.println("</TABLE>"); out.println("<HR width="600" size="1">"); }while(myrs.next());} catch(SQLException e){ out.println("error found"); } } else{ out.println("还没有留言!"); } //结束
out.println("<FORM name="form1" method="post" action="guestbookServlet">"); out.println("<TABLE width="600" border="0" cellspacing="0" cellpadding="4" align="CENTER" class="mytext">"); out.println("<TR><TD width="80">姓名:</TD><TD><INPUT type="text" name="username">*</TD></TR>"); out.println("<TR><TD>Email:</TD><TD><INPUT type="text" name="email">*</TD></TR>"); out.println("<TR><TD>留言:</TD><TD><TEXTAREA name="ucontent" cols="65" rows="4"></TEXTAREA></TD></TR>"); out.println("</TABLE>"); out.println("<TABLE width="400" border="0" cellspacing="0" cellpadding="6" align="CENTER" class="mytext">"); out.println("<TR><TD height="15" width="200"> </TD><TD> </TD></TR>"); out.println("<TR><TD><DIV align="RIGHT"><INPUT type="button" name="Button" value=" 提 交 " style="cursor:hand" onclick="javascript:check()"></DIV></TD>"); out.println("<TD><INPUT type="reset" name="Submit2" value=" 重 置 "></TD></TR>"); out.println("</TABLE>"); out.println("</FORM>");
out.println("<TABLE width="400" border="0" cellspacing="0" cellpadding="4" align="CENTER" class="mytext">"); out.println("<TR><TD width="15"> </TD></TR>"); out.println("<TR><TD><DIV align="LEFT">声明:这是川石利用国外免费jsp服务器开发的Servlet留言程序。应用JDBC连接mySQL数据库。</DIV></TD></TR>"); out.println("<TR><TD> </TD></TR>"); out.println("</TABLE>"); out.println("</BODY>"); out.println("</HTML>");
out.println("<SCRIPT language="javascript">"); out.println("function check(){"); out.println("if(form1.username.value.length<1form1.ucontent.value.length<1)"); out.println("{alert(姓名和留言是必须有的!);}else{form1.submit();}}"); out.println("</SCRIPT>");
out.close(); }
/** Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); }
/** Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } protected void getDsnConn(){ String sqlUrl="jdbc:mysql://10.0.0.1/你申请用户名?user=你的名字&passWord=你的帐号"; try{ if(debug) conn=DriverManager.getConnection("jdbc:odbc:ODBC源","用户名","密码口令"); else conn=DriverManager.getConnection(sqlUrl); } catch(SQLException es){ System.err.println("和库连接时出错:"+es.getMessage()); } } protected void executeInsert(String sqlStr){ try{ Statement stmt=conn.createStatement(); stmt.executeUpdate(sqlStr); } catch(SQLException es){ System.err.println("执行插入时:"+es.getMessage()); } } protected void executeUpdate(String sqlStr){ try{ Statement stmt=conn.createStatement(); stmt.executeUpdate(sqlStr); } catch(SQLException e){ System.err.println("error in query record"); } }
//查寻
protected ResultSet executeQuery(String sqlStr){ rs=null; try{ Statement stmt=conn.createStatement(); rs=stmt.executeQuery(sqlStr); } catch(SQLException ex){ System.err.println("执行查寻出错:"+ex.getMessage()); } return rs; } protected ResultSet executeScrollableQuery(String sqlStr){ rs=null; try{ Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); rs=stmt.executeQuery(sqlStr); } catch(SQLException e){ System.err.println("执行动态查寻出错"); } return rs; } //得到表记录总数 protected int getRecordCount(String sTableName){ rs=null; int CountResult=0; String sqlStr="select count(*) from "+sTableName; try{ Statement stmt=conn.createStatement(); rs=stmt.executeQuery(sqlStr); if(rs.next()) CountResult=rs.getInt(1); rs=null; stmt.close(); } catch(SQLException ex){ System.err.println(ex.getMessage());
}
return CountResult; } //得到记录总页数 protected int getTotalPage(String sTableName,int iPageSize){ int totalPage; int totalRecNum=getRecordCount(sTableName); if(totalRecNum%iPageSize==0) totalPage=totalRecNum/iPageSize; else totalPage=totalRecNum/iPageSize+1; return totalPage; } protected String convert(String InputStr){ String converted=new String(); byte[] bytes; try{ bytes=InputStr.getBytes("ISO8859-1"); converted=new String(bytes,"GB2312"); } catch(java.io.UnsupportedEncodingException e){ System.out.print("error"); } return converted; } /** Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; }
}
|