?? guestbookservlet.java
字號:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.text.DateFormat;
import java.util.Locale;
public class GuestBookServlet extends HttpServlet {
public void init() {
try {
Class.forName("com.imaginary.sql.msql.MsqlDriver").newInstance();
}catch( Exception e ) {}
}
//Sign guestbook
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
String url = "jdbc:msql://athens.imaginary.com:1114/db_web";
ServletOutputStream out = res.getOutputStream();
java.util.Date date = new java.util.Date();
String name,email,comment;
Connection conn = null;
Exception err = null;
int id = -1;
String[] tmp;
//init
//accept name
tmp = req.getParameterValues("name");
if( tmp == null /* tmp.length != 1*/ ) {
name = null;
}
else {
name = tmp[0];
}
//accept email
tmp = req.getParameterValues("email");
if( tmp == null ){ //tmp.length != 1 ) {
email = null;
}
else {
email = tmp[0];
}
//accept comments
tmp = req.getParameterValues("comments");
if( tmp == null ){ // tmp.length != 1 ) {
comment = null;
}
else {
comment = tmp[0];
}
//header
res.setContentType("text/html");
printPageHeader(out);
if( name.length() < 1 ) {
out.println("You must specify a valid name!");
printCommentForm(out);
printPageFooter(out);
return;
}
if( email.length() < 3 ) {
out.println("You must specify a valid email address!");
printCommentForm(out);
printPageFooter(out);
return;
}
if( email.indexOf("@") < 1 ) {
out.println("You must specify a valid email address!");
printCommentForm(out);
printPageFooter(out);
return;
}
if( comment.length() < 1 ) {
out.println("You left no comments!");
printCommentForm(out);
printPageFooter(out);
return;
}
//access to mSQL
try {
Statement statement;
ResultSet result;
conn = DriverManager.getConnection(url, "borg","");
statement = conn.createStatement();
result = statement.executeQuery("SELECT next_id " +
"FROM sys_gen " +
"WHERE id = 'comment_id'");
if( !result.next() ) {
throw new java.sql.SQLException("Failed to generate id.");
}
id = result.getInt(1) + 1;
result.close();
statement.close();
statement = conn.createStatement();
statement.executeUpdate("UPDATE sys_gen SET next_id = " + id +
" WHERE id = 'comment_id'");
statement.close();
statement = conn.createStatement();
comment = fixComment(comment);
statement.executeUpdate("INSERT into comments " +
"(comment_id, email, name, comment, " +
"cmt_date) "+
"VALUES (" + id +", '" + email +
"', '" + name + "', '" +
comment + "', '" + date.getTime() +
"')");
statement.close();
}
catch( java.sql.SQLException e ) {
e.printStackTrace();
err = e;
}
finally {
if( conn != null ) {
try { conn.close(); }
catch( Exception e ) { }
}
}
if( err != null ) {
out.println("An error occurred on save: " + err.getMessage());
}
else {
printCommentForm(out);
printComments(out);
}
}
//browser the guestbook
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String url = "jdbc:msql://athens.imaginary.com:1114/db_web";
ServletOutputStream out = res.getOutputStream();
Connection conn = null;
int id = -1;
Exception err = null;
res.setContentType("text/html");
printPageHeader(out);
printCommentForm(out);
printComments(out);
printPageFooter(out);
}
public String getServletInfo() {
return "Guest Book Servlet v1.0 Copyright 251 1997 George Reese";
}
private void printCommentForm(ServletOutputStream out)
throws IOException {
out.println("<CENTER>");
out.println("<FORM ACTION="+"/servlet/GuestBook"+" METHOD="+"POST"+">");
out.println("<TABLE>");
out.println("<TR ALIGN="+"LEFT"+">");
out.println("<TD>Name:</TD>");
out.println("<TD><INPUT TYPE="+"TEXT"+" NAME="+"name"+" SIZE=30></TD>");
out.println("<TD><INPUT TYPE="+"SUBMIT"+" VALUE="+"Save"+"></TD>");
out.println("</TR>");
out.println("<TR ALIGN="+"LEFT"+">");
out.println("<TD>Email:</TD>");
out.println("<TD><INPUT TYPE="+"TEXT"+" NAME="+"email"+" SIZE=30></TD>");
out.println("</TR>");
out.println("<TR ALIGN="+"LEFT"+">");
out.println("<TD>Comments:</TD>");
out.println("</TR>");
out.println("<TR ALIGN="+"CENTER"+">");
out.println("<TD COLSPAN=3>");
out.println("<TEXTAREA NAME="+"comments"+" COLS=40 ROWS=7>");
out.println("</TEXTAREA></TD>");
out.println("</TR>");
out.println("</TABLE>");
out.println("</FORM>");
out.println("</CENTER>");
}
private void printComments(ServletOutputStream out)
throws IOException {
Connection conn = null;
try {
DateFormat fmt = DateFormat.getDateInstance(DateFormat.FULL,
Locale.getDefault());
String url = "jdbc:msql://athens.imaginary.com:1114/db_web";
Statement stmt;
ResultSet results;
conn = DriverManager.getConnection(url, "borg", "");
stmt = conn.createStatement();
results = stmt.executeQuery("SELECT name, email, cmt_date, " +
"comment, comment_id " +
"FROM comments " +
"ORDER BY cmt_date");
out.println("<DL>");
while( results.next() ) {
String name, email, cmt;
java.util.Date date;
name = results.getString(1);
if( results.wasNull() ) {
name = "Unknown User";
}
email = results.getString(2);
if( results.wasNull() ) {
email = "user@host";
}
date = results.getDate(3);
if( results.wasNull() ) {
date = new java.util.Date();
}
cmt = results.getString(4);
if( results.wasNull() ) {
cmt = "No comment.";
}
out.println("<DT><B>" + name + "</B> (" + email + ") on " +
fmt.format(date));
cmt = noHTML(cmt);
out.println("<DD> <PRE>" + cmt + "</PRE>");
}
out.println("</DL>");
}
catch( SQLException e ) {
out.println("A database error occurred: " + e.getMessage());
}
if( conn != null ) {
try { conn.close(); }
catch( Exception e ) { }
}
}
private void printPageHeader(ServletOutputStream out)
throws IOException {
out.println("<HTML>");
out.println("<HEAD>");
out.println("<TITLE>Guest Book</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<CENTER><H1><B>Guest Book</B></FONT></CENTER>");
}
private void printPageFooter(ServletOutputStream out)
throws IOException {
out.println("</BODY>");
out.println("</HTML>");
out.flush();
}
private String noHTML(String cmt) {
if( cmt.indexOf("<") != -1 ){ // cmt.indexOf(">") != -1 ) {
String tmp = "";
for(int i=0; i<cmt.length(); i++) {
char c = cmt.charAt(i);
if( c == '<' ) {
tmp = tmp + "<";
}
else if( c == '>' ) {
tmp = tmp + ">";
}
else {
tmp = tmp + c;
}
}
cmt = tmp;
}
return cmt;
}
private String fixComment(String comment) {
if( comment.indexOf("'") != -1 ) {
String tmp = "";
for(int i=0; i<comment.length(); i++) {
char c = comment.charAt(i);
if(c=='\'') {
tmp = tmp + "\'";
}
else {
tmp = tmp + c;
}
}
comment = tmp;
}
return comment;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -