ajax留言本

java bean代码:
package com.bean;

public class Message {
private int id;

private String name;

private String message;

private String postdate;

public Message(int id ,String name, String message, String postdate){
this.id = id;
this.name = name;
this.message = message;
this.postdate = postdate;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public String getPostdate() {
return postdate;
}

public void setPostdate(String postdate) {
this.postdate = postdate;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

}


数据库访问代码:
package com.dbAccess;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.bean.Message;

public class DB {

private String username = "root";

private String password = "admin";

private String url = "jdbc:mysql://localhost:3306/guestbook";

private String driver = "com.mysql.jdbc.Driver";

private Connection connection = null;

private Statement statement = null;

private ResultSet resultSet = null;

private Message msg = null;

private String queryString ="select * from message";

public boolean openConnection(){
boolean b = false;
try{
Class.forName(driver).newInstance();
connection = DriverManager.getConnection(url,username,password);
b = true;
}catch(Exception e){
e.printStackTrace();
b = false;
}
return b;
}

@SuppressWarnings("unchecked")
public List query(){
List list = new ArrayList();
int id = 0;
String name = null;
String message = null;
String postdate = null;
try{
this.openConnection();
statement = connection.createStatement();
resultSet = statement.executeQuery(queryString);
while(resultSet.next()){
id = resultSet.getInt("id");
name = resultSet.getString("name");
message = resultSet.getString("message");
postdate = resultSet.getString("postdate");
msg = new Message(id,name,message,postdate);
list.add(msg);
}
}catch(Exception e){
e.printStackTrace();
}finally{
this.closeResultSet();
this.closeStatement();
this.closeConnection();
}
return list;
}

public boolean insert(String sqlString){
boolean b = false;
try{
this.openConnection();
statement = connection.createStatement();
statement.execute(sqlString);
b = true;
}catch(Exception e){
e.printStackTrace();
b = false;
}
return b;
}

public void closeConnection(){
try{
if(connection!=null){
connection.close();
}
}catch(Exception e){
e.printStackTrace();
}
}

public void closeStatement(){
try{
if(statement!=null){
statement.close();
}
}catch(Exception e){
e.printStackTrace();
}
}

public void closeResultSet(){
try{
if(resultSet!=null){
resultSet.close();
}
}catch(Exception e){
e.printStackTrace();
}
}

public Connection getConnection() {
return connection;
}

public void setConnection(Connection connection) {
this.connection = connection;
}

public Statement getStatement() {
return statement;
}

public void setStatement(Statement statement) {
this.statement = statement;
}

public ResultSet getResultSet() {
return resultSet;
}

public void setResultSet(ResultSet resultSet) {
this.resultSet = resultSet;
}

public Message getMsg() {
return msg;
}

public void setMsg(Message msg) {
this.msg = msg;
}

}



servlet代码:
package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

import com.dbAccess.DB;

@SuppressWarnings("unchecked")
public class GuestBook extends HttpServlet {

/**
*
*/
private static final long serialVersionUID = 1L;

@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if(action.equals("getAll")){
getAll(request,response);
}else if(action.equals("addNew")){
addNew(request,response);
}
}

protected void getAll(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DB db = new DB();
List list = db.query();
PrintWriter out = response.getWriter();
JSONArray jsonArray = JSONArray.fromObject(list);
out.println(jsonArray);
out.flush();
out.close();
}

protected void addNew(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
String message = request.getParameter("message");
Calendar calendar = Calendar.getInstance();

String postdate = calendar.get(Calendar.YEAR)+"-"+(calendar.get(Calendar.MONTH)+1)+"-"+calendar.get(Calendar.DATE);
String sqlString = "insert into message(name ,message , postdate) values('"+name+"','"+message+"','"+postdate+"')";
DB db = new DB();
db.insert(sqlString);
PrintWriter out = response.getWriter();
out.println(1);
out.flush();
out.close();
}
}


css样式文件:
@charset "utf-8";
/* CSS Document */
* {
margin:0;
padding:0;
}
html {
background-color:#eee;
height:100%;
}
body {
padding:15px;
font-size:11px;
width:500px;
background-color:#fff;
height:100%;
font-family:Tahoma;
border-left:20px solid #ccc;
}
ul {
list-style:none;
border-top:1px solid #999;
height:350px;
overflow-x:auto;
overflow-y:scroll;
}
span {
font-weight:bold;
font-size:12px;
}
span.date {
margin-left:10px;
font-weight:normal;
font-size:11px;
}
li {
border-bottom:1px dashed #666;
line-height:20px;
}
form {
margin-top:10px;
border-top:1px solid #999;
}
label {
display:block;
line-height:20px;
font-weight:bold;
cursor:pointer;
background-color:#999;
color:#fff;
margin:3px 0;
padding-left:5px;
width:100%;
}
#txtName , #txtContent {
width:100%;
font-size:11px;
}
#btnSubmit {
display:block;
margin-top:3px;
border:1px solid #666;
padding:2px 5px;
width:100%;
}
.msgBox {
font-size:11px;
}


javascript代码:
1、guestbook.js
var url ='guestBook';

function init(){
document.getElementById('btnSubmit').onclick = submitMessage;
readMessages();
}

function readMessages(){

var options = {
method:'GET',
parameters:'action=getAll',
onLoading:function(){
document.getElementById('loadingMsg').style.display = '';
},
onSuccess:function(x){
var resBook = x.responseText;
try{
var messages = resBook;
var messages = eval('('+resBook+')');

for(var i = 0;i < messages.length; i++){
displayMessage(messages[i]);
}
document.getElementById('loadingMsg').style.display = 'none';
//document.getElementById('btnSubmit').disabled = false;
doScroll();
}catch(e){

}
},
onFailure:function(){
document.getElementById('loadingMsg').style.display = 'none';
window.alert('request failure.');
}
};
ajaxRequest(url,options);
}

function displayMessage(data){

var name = data.name;
var date = data.postdate;
var message = data.message;
var span = document.createElement('span');
var nameText = document.createTextNode(name);
span.appendChild(nameText);
var dateSpan = document.createElement('span');
var dateText = document.createTextNode(date);
dateSpan.appendChild(dateText);
dateSpan.className = 'date';
var p = document.createElement('p');
var contentText = document.createTextNode(message);
p.appendChild(contentText);
var li = document.createElement('li');
li.appendChild(span);
li.appendChild(dateSpan);
li.appendChild(p);
document.getElementById('msgList').appendChild(li);
}

function submitMessage(){

var name = document.getElementById('txtName').value;
var message = document.getElementById('txtContent').value;

var options = {
method:'GET',
parameters:'action=addNew&name='+escapeHTML(name)+'&message='+escapeHTML(message),
onLoading:function(){
document.getElementById('submitMsg').style.display='';
document.getElementById('btnSubmit').disabled = true;
},
onSuccess:function(x){
var resBack = x.responseText;
if(resBack == 1){
var date = new Date();
var postDate = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
var msg = {
name:name,
message:message,
postdate:postDate
}
displayMessage(msg);
doScroll();
}else{
alert('Submit failure.');
}
document.getElementById('submitMsg').style.display = 'none',
document.getElementById('btnSubmit').disabled = false;
},
onFailure:function(){
document.getElementById('submitMsg').style.display = 'none';
document.getElementById('btnSubmit').disabled = true;
alert('request failure.');
}
};
ajaxRequest(url,options);
}

function doScroll(){
var height = document.getElementById('msgList').offsetHeight;
var totalHeight = document.getElementById('msgList').scrollHeight;
document.getElementById('msgList').scrollTop = totalHeight-height;
}

function escapeHTML(str){
str = str.replace('<','<');
str = str.replace('>','&gt');
return str;
}

window.onload = init;


2、ajaxRequest.js代码:
var url ='guestBook';

function init(){
document.getElementById('btnSubmit').onclick = submitMessage;
readMessages();
}

function readMessages(){

var options = {
method:'GET',
parameters:'action=getAll',
onLoading:function(){
document.getElementById('loadingMsg').style.display = '';
},
onSuccess:function(x){
var resBook = x.responseText;
try{
var messages = resBook;
var messages = eval('('+resBook+')');

for(var i = 0;i < messages.length; i++){
displayMessage(messages[i]);
}
document.getElementById('loadingMsg').style.display = 'none';
//document.getElementById('btnSubmit').disabled = false;
doScroll();
}catch(e){

}
},
onFailure:function(){
document.getElementById('loadingMsg').style.display = 'none';
window.alert('request failure.');
}
};
ajaxRequest(url,options);
}

function displayMessage(data){

var name = data.name;
var date = data.postdate;
var message = data.message;
var span = document.createElement('span');
var nameText = document.createTextNode(name);
span.appendChild(nameText);
var dateSpan = document.createElement('span');
var dateText = document.createTextNode(date);
dateSpan.appendChild(dateText);
dateSpan.className = 'date';
var p = document.createElement('p');
var contentText = document.createTextNode(message);
p.appendChild(contentText);
var li = document.createElement('li');
li.appendChild(span);
li.appendChild(dateSpan);
li.appendChild(p);
document.getElementById('msgList').appendChild(li);
}

function submitMessage(){

var name = document.getElementById('txtName').value;
var message = document.getElementById('txtContent').value;

var options = {
method:'GET',
parameters:'action=addNew&name='+escapeHTML(name)+'&message='+escapeHTML(message),
onLoading:function(){
document.getElementById('submitMsg').style.display='';
document.getElementById('btnSubmit').disabled = true;
},
onSuccess:function(x){
var resBack = x.responseText;
if(resBack == 1){
var date = new Date();
var postDate = date.getFullYear()+'-'+(date.getMonth()+1)+'-'+date.getDate();
var msg = {
name:name,
message:message,
postdate:postDate
}
displayMessage(msg);
doScroll();
}else{
alert('Submit failure.');
}
document.getElementById('submitMsg').style.display = 'none',
document.getElementById('btnSubmit').disabled = false;
},
onFailure:function(){
document.getElementById('submitMsg').style.display = 'none';
document.getElementById('btnSubmit').disabled = true;
alert('request failure.');
}
};
ajaxRequest(url,options);
}

function doScroll(){
var height = document.getElementById('msgList').offsetHeight;
var totalHeight = document.getElementById('msgList').scrollHeight;
document.getElementById('msgList').scrollTop = totalHeight-height;
}

function escapeHTML(str){
str = str.replace('<','<');
str = str.replace('>','&gt');
return str;
}

window.onload = init;


html页面代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link type="text/css" rel="stylesheet" href="css/style.css">
<script type="text/javascript" src="script/ajaxRequest.js"></script>
<script type="text/javascript" src="script/guestbook.js"></script>
</head>

<body>
<h1>
Guest book
<span id="loadingMsg" style="display: none" class="msgBox">(loading...)</span>
</h1>
<ul id="msgList"></ul>
<form name="fmMsg" id="fmMsg" action="?" method="post">
<h2>
Message
<span id="submitMsg" style="display: none" class="msgBox">(loading...)</span>
</h2>
<label for="txtName">
name
</label>
<input name="txtName" type="text" id="txtName" value="guest"
onfocus="this.select();">
<label for="txtContent">
Message
</label>
<textarea rows="4" name="txtContent" id="txtContent"
onfocus="this.select();">something to say...</textarea>
<input type="button" value="click here to submit your message!"
id="btnSubmit" >
</form>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值